我只是在尋找靈感。特別是在性能和安全性方面,命名慣例很重要,但並不「酷」;)有沒有人爲FxCop/StyleCop創建過很酷的規則?
即使您的規則僅適用於您的域名/項目,但表明規則有多強大,請讓我知道。
我使用C#,但我對任何語言的規則感興趣。
我只是在尋找靈感。特別是在性能和安全性方面,命名慣例很重要,但並不「酷」;)有沒有人爲FxCop/StyleCop創建過很酷的規則?
即使您的規則僅適用於您的域名/項目,但表明規則有多強大,請讓我知道。
我使用C#,但我對任何語言的規則感興趣。
根據我的經驗,開始爲FxCop創建自定義規則集的開發人員在拔出大量頭髮後通常會放棄。這似乎是一個好主意,但痛苦只是不值得。
替代亂七八糟的書寫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或其它工具的強度,是它是直接寫代碼規則,並獲得立即結果。建議設施瀏覽匹配的代碼元素。具體來說,這看起來像:
我的FxCop的目錄
ConfigKeyExistsInConfig(請務必在得到了與2條規則一個很好的運作基礎,到目前爲止在breusable.codeplex.com與一個魔法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;
}
}
}
確實看起來確實很強大。無需從用戶名稱中說明您對此工具有「偏好」,但它非常相關且當然有效,而且答案寫得很好,所以+1。 – 2012-03-26 09:14:17