如何强制MSBuild在不重新编译的情况下运行代码分析

本文关键字:情况下 运行 代码 编译 MSBuild 何强制 新编译 | 更新日期: 2023-09-27 18:24:29

默认情况下,代码分析只对编译的项目进行。因此,当我从命令行运行MSBuild时,它只是第一次运行代码分析。在随后的调用中,将跳过代码分析。

背景:我想评估CA规则,看看当打开规则时,我们的代码中会有多少警告。为此,我不想重新编译所有内容(这需要一些时间),而只是重新运行代码分析。你怎样才能做到这一点?

我使用的是Visual Studio 2013和MSBuild 12.0。

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

msbuild DesktopBuild.proj /p:RunCodeAnalysis=true

如何强制MSBuild在不重新编译的情况下运行代码分析

看来

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

似乎有效。第一步导致代码分析"忘记"以前的运行,第二步迫使它为每个项目运行,即使项目中没有启用代码分析。如果重复运行此操作,则不会再次编译已编译的项目,只会重新运行代码分析。

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

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

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