How to force MSBuild to run Code Analysis without

2019-03-18 12:46发布

By default, code analysis is only done for projects which are compiled. So when I run MSBuild from the command line, it runs code analysis only for the first time. On subsequent calls, code analysis is skipped.

Background: I want to evaluate CA rules and see how many warnings there would be in our code when turning on a rule. For that I don't want to recompile everything - which takes some time - but just re-run the code analysis. How can you achieve this?

I am using Visual Studio 2013 and MSBuild 12.0.

Even explicitely switching on code analysis does not help:

msbuild DesktopBuild.proj /p:RunCodeAnalysis=true

3条回答
冷血范
2楼-- · 2019-03-18 13:14

I would try using FxCopCmd.exe, it can be usually found in C:\Program Files (x86)\Microsoft Visual Studio 12.0\Team Tools\Static Analysis Tools\FxCop. It's used by CodeAnalysis in Visual Studio, you should be able to use it with proper parameters.

查看更多
对你真心纯属浪费
3楼-- · 2019-03-18 13:28

Simply set CodeAnalysisGenerateSuccessFile to false in the project file.

<PropertyGroup>
  <RunCodeAnalysis>true</RunCodeAnalysis>
  <CodeAnalysisGenerateSuccessFile>false</CodeAnalysisGenerateSuccessFile>
</PropertyGroup>
查看更多
男人必须洒脱
4楼-- · 2019-03-18 13:41

It seems that

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

seems to work. The first step causes code analysis to "forget" about the previous runs and the second step forces it to run for every project, even if code analysis is not enabled in a project. If running this repeatedly, the already compiled projects won't be compiled again, only the code analysis is re-run.

查看更多
登录 后发表回答