Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to force MSBuild to run Code Analysis without recompiling

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
like image 939
Tobias Avatar asked Sep 25 '14 09:09

Tobias


3 Answers

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.

like image 199
Tobias Avatar answered Nov 09 '22 09:11

Tobias


Simply set CodeAnalysisGenerateSuccessFile to false in the project file.

<PropertyGroup>
  <RunCodeAnalysis>true</RunCodeAnalysis>
  <CodeAnalysisGenerateSuccessFile>false</CodeAnalysisGenerateSuccessFile>
</PropertyGroup>
like image 6
Jatin Sanghvi Avatar answered Nov 09 '22 09:11

Jatin Sanghvi


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.

like image 2
tdragon Avatar answered Nov 09 '22 10:11

tdragon