如何强制MSBuild在不重新编译的情况下运行代码分析
本文关键字:情况下 运行 代码 编译 MSBuild 何强制 新编译 | 更新日期: 2023-09-27 18:24:29
默认情况下,代码分析只对编译的项目进行。因此,当我从命令行运行MSBuild时,它只是第一次运行代码分析。在随后的调用中,将跳过代码分析。
背景:我想评估CA规则,看看当打开规则时,我们的代码中会有多少警告。为此,我不想重新编译所有内容(这需要一些时间),而只是重新运行代码分析。你怎样才能做到这一点?
我使用的是Visual Studio 2013和MSBuild 12.0。
即使明确地打开代码分析也无济于事:
msbuild DesktopBuild.proj /p:RunCodeAnalysis=true
看来
del /s *.lastcodeanalysissucceeded
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使用,您应该能够将它与适当的参数一起使用。