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
执行代码分析。实际上这调用了位于
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.dll
、MaintainabilityRules.dll
和 ReliabilityRules.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 2015 与 Visual Studio Code 啥关系 或 区别