我只是在寻找一些灵感。尤其是在性能和安全性方面,命名约定很重要,但并不“酷”;)
即使您的规则仅适用于您的域/项目,但展示了规则的强大功能,请告诉我。
我使用 C#,但我对任何语言的规则都感兴趣。
我只是在寻找一些灵感。尤其是在性能和安全性方面,命名约定很重要,但并不“酷”;)
即使您的规则仅适用于您的域/项目,但展示了规则的强大功能,请告诉我。
我使用 C#,但我对任何语言的规则都感兴趣。
根据我的经验,开始为 FxCop 创建自定义规则集的开发人员通常会在拔掉很多头发后放弃。这似乎是一个好主意,但痛苦是不值得的。
编写 FxCop 自定义规则的混乱的替代方法是使用商业工具 NDepend。使用此工具,可以在 LINQ 查询 (即 CQLinq)上编写代码规则。免责声明:我是该工具的开发人员之一
默认提出超过200 条代码规则,包括命名约定、设计、架构、代码质量、代码演化、死代码、.NET Fx 使用...
CQLinq 致力于编写可以在 Visual Studio 中实时验证的代码规则,或者可以在构建过程中验证并在 HTML/javascript 报告中报告的代码规则。
CQLinq 优于 FxCop API 或其他工具的优势在于,它可以直接编写代码规则,并立即获得结果。建议使用设施来浏览匹配的代码元素。具体来说是这样的:
到目前为止,我在 fxcop 目录下的 breusable.codeplex.com 上有一个很好的功能基础,有 2条规则
ConfigKeyExistsInConfig(确保对 ConfigurationManager 的任何引用都存在于配置文件中。
NoUnunderscoresInProperties
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;
}
}
}