我只是在寻找一些灵感。特别是在性能和安全性方面,命名约定很重要,但不是“酷”;)
即使您的规则仅适用于您的域/项目但展示了规则的强大程度,请告知我们。
我使用C#,但我对任何语言的规则感兴趣。
答案 0 :(得分:7)
根据我的经验,开始为FxCop创建自定义规则集的开发人员通常会在拔出很多头发后放弃。这似乎是一个好主意,但痛苦不值得努力。
答案 1 :(得分:3)
编写FxCop自定义规则的一个替代方法是使用商业工具NDepend。使用此工具,可以通过LINQ查询编写代码规则 (namely CQLinq)。 免责声明:我是该工具的开发人员之一
默认情况下会提出超过200 code rules,其中包括命名约定,设计,架构,代码质量,代码演变,死代码, .NET Fx用法 ......
CQLinq致力于编写可以verified live in Visual Studio或verified during build process and reported in an HTML/javascript report的代码规则。
CQLinq相对于FxCop API或其他工具的优势在于,可以直接编写代码规则,并立即获得 结果。建议设施浏览匹配的代码元素。具体来说,这看起来像是:
答案 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;
}
}
}