2015-11-23 58 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'应具有相同的结果。 –