2015-11-23 59 views
6

我最近安裝了Visual Sudio 2015年,並能使用以下命令解決運行代碼分析:的Visual Studio 2015年代碼分析VS FxCopCmd.exe差異

msbuild.exe MySolution.sln /p:RunCodeAnalysis=true 

其中/p:RunCodeAnalysis=true執行代碼分析。實際上這將調用FxCopCmd.exe位於

C:\Program Files(x86)\Microsoft Visual Studio 14.0\Team Tools\Static AnalysisTools\FxCop\FxCopCmd.exe

代碼分析是爲了取代的FxCop,但實際上代碼分析執行本身FxCopCmd.exe

也許我錯過了什麼,但之間有什麼區別VS代碼分析和FxCop?

回答

10

FxCop和VS代碼分析本質上是一回事。他們使用相同的核心分析引擎(通過fxcopcmd.exe觸發),並附帶相同的核心規則。除了UI區別外,FxCop和VS Code Analysis之間的主要區別在於後者包含一些額外的規則(在DataflowRules.dll,MaintainabilityRules.dllReliabilityRules.dll程序集中)以及支持這些附加規則子集的數據流分析引擎。

+0

這是有道理的,但據我所見,當我執行例如:'msbuild.exe MySolution.sln/p:RunCodeAnalysis = true'(它也開始代碼分析)時,這實際上啓動了'C: \ Program Files(x86)\ Microsoft Visual Studio 14.0 \ Team Tools \ StaticAnalysisTools \ FxCop \ FxCopCmd.exe'命令。這與直接執行FxCop不一樣嗎? –

+0

不太清楚你在這裏問什麼...... MSBuild通過定製在fxcoptask.dll程序集中的自定義MSBuild任務啓動'fxcopcmd.exe'(你可能會在C:\ Program Files (x86)\ MSBuild \ Microsoft \ VisualStudio \ v14.0 \ CodeAnalysis'文件夾)。所有這些任務都是通過將MSBuild屬性轉換爲命令行參數來爲'fxcopcmd.exe'構建一個命令行。如果您願意,您當然可以手動構建相同的命令行。 –

+1

這是我想知道的。因此,要麼我們通過向.csproj文件添加' true'來執行代碼分析,要麼執行'C:\ Program Files文件(x86)\ Microsoft Visual Studio 14.0 \ Team Tools \ Static AnalysisTools \ FxCop \命令行中的FxCopCmd.exe'應具有相同的結果。 –