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

Posted

技术标签:

【中文标题】Visual Studio 2015 代码分析与 FxCopCmd.exe 的区别【英文标题】:Visual Studio 2015 Code Analysis vs FxCopCmd.exe difference 【发布时间】:2015-11-23 15:34:14 【问题描述】:

我最近安装了 Visual Sudio 2015,并且能够使用以下命令运行解决方案的代码分析:

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 有什么区别?

【问题讨论】:

【参考方案1】:

FxCop 和 VS 代码分析本质上是一回事。他们使用相同的核心分析引擎(通过fxcopcmd.exe 触发)并附带相同的核心规则集。除了 UI 区别外,FxCop 和 VS 代码分析之间的主要区别在于后者包括一些额外的规则(在 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不一样吗? 不太清楚您在这里问什么... MSBuild 通过自定义 MSBuild 任务启动 fxcopcmd.exe,该任务在 fxcoptask.dll 程序集中定义(您可能会在 C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\CodeAnalysis 中找到)文件夹)。此任务所做的只是通过将 MSBuild 属性转换为命令行开关参数来为 fxcopcmd.exe 构建命令行。如果您愿意,您当然可以手动构建相同的命令行。 这是我想知道的。因此,要么我们通过将<RunCodeAnalysis>true</RunCodeAnalysis> 添加到.csproj 文件来执行代码分析,要么从命令行执行C:\Program Files(x86)\Microsoft Visual Studio 14.0\Team Tools\Static AnalysisTools\FxCop\FxCopCmd.exe 将得到相同的结果。

以上是关于Visual Studio 2015 代码分析与 FxCopCmd.exe 的区别的主要内容,如果未能解决你的问题,请参考以下文章

Visual Studio 2015:C++ 代码分析错误 C1253,无法加载模型文件“res://mspft140.dll/300”

Visual Studio 代码分析死锁

Visual Studio 2015 与 Visual Studio Code 啥关系 或 区别

Visual Studio 2015 代码覆盖错误文件

Visual Studio 2013 中的 FxCop 和代码分析

Visual Studio 分析:从代码开始/停止