有人为FxCop / StyleCop创建了很酷的规则吗?

时间:2009-01-30 09:16:06

标签: code-analysis fxcop rules stylecop

我只是在寻找一些灵感。特别是在性能和​​安全性方面,命名约定很重要,但不是“酷”;)

即使您的规则仅适用于您的域/项目但展示了规则的强大程度,请告知我们。

我使用C#,但我对任何语言的规则感兴趣。

3 个答案:

答案 0 :(得分:7)

根据我的经验,开始为FxCop创建自定义规则集的开发人员通常会在拔出很多头发后放弃。这似乎是一个好主意,但痛苦不值得努力。

答案 1 :(得分:3)

编写FxCop自定义规则的一个替代方法是使用商业工具NDepend。使用此工具,可以通过LINQ查询编写代码规则 (namely CQLinq)免责声明:我是该工具的开发人员之一

默认情况下会提出超过200 code rules,其中包括命名约定设计架构代码质量代码演变死代码 .NET Fx用法 ......

CQLinq致力于编写可以verified live in Visual Studioverified during build process and reported in an HTML/javascript report的代码规则。

CQLinq相对于FxCop API或其他工具的优势在于,可以直接编写代码规则,并立即获得 结果。建议设施浏览匹配的代码元素。具体来说,这看起来像是:

CQLinq code rule

答案 2 :(得分:1)

到目前为止,我在fxcop目录下的breusable.codeplex.com有一个很好的功能基础,有2条规则

ConfigKeyExistsInConfig(确保配置文件中实际存在对带有魔术字符串键的ConfigurationManager的任何引用。

NoUnderscoresInProperties

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.FxCop.Sdk;

namespace RulesByImaginaryDevelopment
{
  public class NoUnderscoresInProperties : BaseRule
  {
    public NoUnderscoresInProperties() : base("NoUnderscoresInProperties") { }

    public override ProblemCollection Check(Member member)
    {
        var prop = member as PropertyNode;
        if(prop==null)
            return Problems;
        if(prop.Name.Name.Contains("_"))
        {
            Problems.Add(new Problem(new Resolution("Remove any '_' from name "+prop.Name.Name)));
        }
        return Problems;
    }
  }
}

另外http://msdn.microsoft.com/en-us/magazine/cc163930.aspx