将自定义 Fxcop 规则与现有 Fxcop 规则集成

Posted

技术标签:

【中文标题】将自定义 Fxcop 规则与现有 Fxcop 规则集成【英文标题】:Inetgrating custom Fxcop rule with existing Fxcop rule 【发布时间】:2014-06-19 13:12:24 【问题描述】:

我已经开发了一些 Fxcop 自定义规则,我想创建单独的项目,就像“设计规则”、“全球化规则”等,其中将包含我设计的自定义规则和一些选定的现有 Miscrosoft Fxcop 规则。我想知道是否可以这样做。如果可能,怎么做?

【问题讨论】:

“项目”是什么意思? .ruleset 文件还是别的什么? 【参考方案1】:

您必须将 custom rule dll-file 放在正确的 FxCop 规则位置:

例如,这可以是C:\Program Files (x86)\Microsoft Visual Studio 11.0\Team Tools\Static Analysis Tools\FxCop\Rules。找到您的位置并将其放置在其中。

您接下来要做的是创建一个Code Analysis Ruleset

有一个关于创建代码分析规则集here的微软教程。

在规则集编辑器中打开一个空的规则集文件 在 Visual Studio 的“文件”菜单上,指向“新建”,然后单击“文件”。 在“新建文件”对话框中,单击“已安装模板”列表中的“常规”,然后选择“代码分析规则集”。 出现规则集编辑器。编辑器列表中未选择任何规则。

接下来看到的是Rule Set Editor。您可以在此处选择现有规则以及您自己的自定义规则。

解释了使用规则集编辑器here。

【讨论】:

我遵循了相同的过程,并且 VS 在加载我的自定义规则集时没有给我任何错误,但我在所有默认 Microsoft 规则('设计规则', '全球化规则'等)显示启用和禁用复选框。 那么您的自定义规则似乎有问题。也许为此提出一个新问题? @Matthijs:实际上没有必要将规则程序集放在FxCop\Rules 文件夹中。如果您希望使用备用位置,这是可能的,尽管它要求您通过 RuleHintPaths 元素在规则集文件中指定该位置。 @NicoleCalinoiu 你是对的,我应该包括那个选项。虽然在这种情况下保持简单可能是一个很好的解决方案;)【参考方案2】:

http://blogs.msdn.com/b/codeanalysis/archive/2010/03/26/how-to-write-custom-static-code-analysis-rules-and-integrate-them-into-visual-studio-2010.aspx 提供了一个分步指南,用于编写规则并将它们添加到 .ruleset 文件。要找出问题的根源,最好遵循所有推荐的步骤,包括验证规则是否可以通过fxcopcmd.exe 命令行工具执行。

【讨论】:

以上是关于将自定义 Fxcop 规则与现有 Fxcop 规则集成的主要内容,如果未能解决你的问题,请参考以下文章

Fxcop 自定义规则未显示在 Fxcop GUI 中

使用 SonarQube 自定义 Fxcop 规则

单元测试自定义 FxCop 规则

FxCop 自定义规则检查命名空间

fxcop 自定义规则 - 避免每个文件有多个类

FxCop 自定义规则文档。为啥找不到我的网址?