默认情况下,代码分析仅针对已编译的项目进行。因此,当我从命令行运行MSBuild时,它仅首次运行代码分析。在后续调用中,将跳过代码分析。
背景:我想评估CA规则,并查看启用规则时代码中会有多少警告。为此,我不想重新编译所有内容 - 这需要一些时间 - 但只需重新运行代码分析。你怎么能做到这一点?
我正在使用Visual Studio 2013和MSBuild 12.0。
即使明确地开启代码分析也无济于事:
msbuild DesktopBuild.proj /p:RunCodeAnalysis=true
答案 0 :(得分:13)
似乎
del /s *.lastcodeanalysissucceeded
msbuild DesktopBuild.proj /p:RunCodeAnalysis=true
似乎有效。第一步导致代码分析“忘记”以前的运行,第二步强制它为每个项目运行,即使项目中未启用代码分析。如果重复运行,则不会再次编译已编译的项目,只重新运行代码分析。
答案 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>