如何强制MSBuild运行代码分析而不重新编译

时间:2014-09-25 09:05:22

标签: c# msbuild code-analysis

默认情况下,代码分析仅针对已编译的项目进行。因此,当我从命令行运行MSBuild时,它仅首次运行代码分析。在后续调用中,将跳过代码分析。

背景:我想评估CA规则,并查看启用规则时代码中会有多少警告。为此,我不想重新编译所有内容 - 这需要一些时间 - 但只需重新运行代码分析。你怎么能做到这一点?

我正在使用Visual Studio 2013和MSBuild 12.0。

即使明确地开启代码分析也无济于事:

msbuild DesktopBuild.proj /p:RunCodeAnalysis=true

3 个答案:

答案 0 :(得分:13)

似乎

  1. del /s *.lastcodeanalysissucceeded
  2. msbuild DesktopBuild.proj /p:RunCodeAnalysis=true
  3. 似乎有效。第一步导致代码分析“忘记”以前的运行,第二步强制它为每个项目运行,即使项目中未启用代码分析。如果重复运行,则不会再次编译已编译的项目,只重新运行代码分析。

答案 1 :(得分:2)

我会尝试使用FxCopCmd.exe,它通常可以在C:\Program Files (x86)\Microsoft Visual Studio 12.0\Team Tools\Static Analysis Tools\FxCop中找到。它在Visual Studio中由CodeAnalysis使用,您应该能够使用适当的参数。

答案 2 :(得分:2)

只需在项目文件中将CodeAnalysisGenerateSuccessFile设置为false

<PropertyGroup>
  <RunCodeAnalysis>true</RunCodeAnalysis>
  <CodeAnalysisGenerateSuccessFile>false</CodeAnalysisGenerateSuccessFile>
</PropertyGroup>