比较两个 fxcop 结果

Posted

技术标签:

【中文标题】比较两个 fxcop 结果【英文标题】:Compare two fxcop results 【发布时间】:2010-04-14 07:40:43 【问题描述】:

我将使用 fxcop 分析同一个 dll 的两个不同版本。 我只想显示这两个报告之间的差异。 有谁知道这是否可能?

感谢您的宝贵时间。

【问题讨论】:

你能完成这个吗? 【参考方案1】:

是的,这是可能的,但没有可用的内置工具。一种相当简单的方法是使用差异工具来比较两个报告。如果结果对您来说过于嘈杂,另一种方法是使用您自己的工具来比较两个报告的 XML。

【讨论】:

【参考方案2】:

您使用的是 UI 还是命令行?

使用命令行工具,您有多种选择。其中之一是导入旧报告以用作基线。然后设置 fxcop 项目只报告新的错误:Report Status="Active, Absent" NewOnly="True"

命令行将是这样的:fxcopcmd.exe /i:OldVersionReport.xml /out:NewVersionReport.xml /p:FXCopProject.fxcop /f:mydll.dll

新报告将仅包含新的活动错误以及缺失的列表,即旧版本中已修复的错误。

虽然这在大多数情况下都有效,但您需要了解差异不会 100% 准确。 FXCop 尽最大努力将旧报告与新版本的 DLL 相匹配,但有时会失败。例如,如果您在代码中的某处修复了特定违规行为,但在另一个地方添加了相同类型的违规行为,则 FXCop 很可能会错过这一点并且不会显示任何差异。

【讨论】:

【参考方案3】:

对于 FxCop VS 2010,您只需要指定 /saveMessagesToReport:Absent 以及较早生成的 FxCop 文件 /import:"OldFile.xml"。 只是一个例子。

     fxcopcmd.exe /import:"c:\Old.xml" /summary "/file:c:\*.dll" 
     /saveMessagesToReport:Absent /out:"c:\Output.xml"

【讨论】:

以上是关于比较两个 fxcop 结果的主要内容,如果未能解决你的问题,请参考以下文章

FxCop(/VS2010 代码分析),可以将方法结果标记为 IDisposable 的“现在调用者责任”吗?

FxCop 间接引用 System.Core 版本 2.0.5.0

FxCop 自定义规则在 VS2012 中没有名称(但“官方”规则有名称)

使用 LINQ 获取两个比较列表的结果并根据结果更改列表中的属性

MySQL:比较两个转换函数的结果

比较两个数字时访问 VBA 给出不正确的结果