如何从MSBuild指定规则集

Tho*_*sen 12 .net msbuild static-code-analysis

升级到VS 2010之后MSBUILD/p:RunCodeAnalysis = true无法按预期工作

msbuild solution.sln /p:RunCodeAnalysis=true
Run Code Online (Sandbox Code Playgroud)

为了获得更快的构建,我们删除了DEBUG构建的CODE_ANALYSIS常量.但这意味着在运行上面的msbuild命令时,它会默认为所有规则,而不是使用我们在项目属性页面上的"代码分析"选项卡中指定的规则集.

所以现在我需要构建一个发布模式来运行代码分析(它定义了CODE_ANALYSIS常量):

msbuild solution.sln /p:RunCodeAnalysis=true /p:Configuration=release
Run Code Online (Sandbox Code Playgroud)

然而,这意味着我们在开发机器上获得了一个版本.这在我们的设置中有一些副作用.

问题:如何从命令行指定rulset.我希望有类似的东西:

msbuild solution.sln /p:RunCodeAnalysis=true /p:foobar=rules.ruleset
Run Code Online (Sandbox Code Playgroud)

Jul*_*rau 25

你必须使用这个CodeAnalysisRuleSet属性.

msbuild solution.sln /p:RunCodeAnalysis=true;CodeAnalysisRuleSet=GlobalizationRules.ruleset
Run Code Online (Sandbox Code Playgroud)

这是预定义的规则集列表:

  • AllRules.ruleset
  • BasicCorrectnessRules.ruleset
  • BasicDesignGuidelineRules.ruleset
  • ExtendedCorrectnessRules.ruleset
  • ExtendedDesignGuidelineRules.ruleset
  • GlobalizationRules.ruleset
  • MinimumRecommendedRules.ruleset
  • SecurityRules.ruleset

  • 规则集也可以是文件的链接。例如:`/p:RunCodeAnalysis=true;CodeAnalysisRuleSet="C:\Program Files (x86)\Microsoft Visual Studio 14.0\Team Tools\Static Analysis Tools\Rule Sets\ExtendedDesignGuidelineRules.ruleset"`。 (3认同)