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

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

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

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

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

msbuild DesktopBuild.proj /p:RunCodeAnalysis=true 

看起来

  1. del /s *.lastcodeanalysissucceeded
  2. msbuild DesktopBuild.proj /p:RunCodeAnalysis=true

似乎工作。 第一步导致代码分析“忘记”先前的运行,第二步强制它为每个项目运行,即使项目中未启用代码分析。 如果重复运行,则不会再次编译已编译的项目,只重新运行代码分析。

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

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

  true false