Visual Studio 2015代码分析与FxCopCmd.exe的区别

6

最近,我安装了Visual Studio 2015,并使用以下命令对解决方案进行了代码分析:

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

其中/p:RunCodeAnalysis=true执行代码分析。实际上,这调用位于

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

代码分析旨在取代FxCop,但实际上代码分析执行自己的FxCopCmd.exe。

也许我错过了什么,但VS Code分析和FxCop之间有什么区别?

1个回答

11

FxCop和VS Code分析实质上是同一件事情。它们使用相同的核心分析引擎(通过fxcopcmd.exe触发),并且具有相同的一组核心规则。除了UI差异外,FxCop和VS Code分析之间的主要区别在于后者包括一些额外的规则(在DataflowRules.dllMaintainabilityRules.dllReliabilityRules.dll程序集中),以及一个支持这些附加规则子集的数据流分析引擎。


这很有道理,但据我所见,当我执行例如:msbuild.exe MySolution.sln /p:RunCodeAnalysis=true(它也启动了代码分析)时,实际上是启动了C:\Program Files(x86)\Microsoft Visual Studio 14.0\Team Tools\StaticAnalysisTools\FxCop\FxCopCmd.exe命令。这不就相当于直接执行FxCop吗? - Pinte Dani
不太确定你在这里问什么...... MSBuild通过自定义MSBuild任务启动fxcopcmd.exe,该任务在fxcoptask.dll程序集中定义(您可能会在C:\ Program Files(x86)\ MSBuild \ Microsoft \ VisualStudio \ v14.0 \ CodeAnalysis文件夹中找到它)。 这个任务所做的就是通过将MSBuild属性转换为命令行开关参数来构造fxcopcmd.exe的命令行。 如果您愿意,当然可以手动构造相同的命令行。 - Nicole Calinoiu
2
这就是我想知道的。因此,我们可以通过将 <RunCodeAnalysis>true</RunCodeAnalysis> 添加到 .csproj 文件来执行代码分析,或者通过从命令行执行 C:\Program Files(x86)\Microsoft Visual Studio 14.0\Team Tools\Static AnalysisTools\FxCop\FxCopCmd.exe 来获得相同的结果。 - Pinte Dani

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接