2012-12-04 80 views
1

我正在嘗試創建一個自定義fxcop規則,該規則檢查目標程序集中的所有方法,其名稱不以CAPITAL字母開頭。我在這方面非常成功,但有一個問題。 該規則也引發「委託方法」的錯誤,例如。 btnOk_Click我不想要的是,有什麼方法可以使用任何預定義的屬性/方法來識別/過濾fxcop中的委託方法嗎?如何識別fxcop中的方法

+0

您的意思是您創建代表的常規方法 – SLaks

+0

@SLaks:簡單來說,我們爲任何事件註冊的方法,如按鈕點擊事件,我們有一個btnOk_Click方法,這些也被當作Fxcop中的方法,當我們將成員轉換爲方法內部檢查方法 – user698532

+0

FxCop用於靜態分析(檢測不可達代碼等),而您要執行的操作是強制執行編碼標準。該工具是StyleCop http://stylecop.codeplex.com/。我給你的建議是將其與ReSharper一起安裝(這將對你和你的團隊完全執行一個優秀的編碼標準),然後停止談論編碼標準的時間:) – briantyler

回答

1

一個想法是通過工具NDepend來編寫自定義代碼規則,而不是(聲明:我是該工具的開發人員之一)。

NDepend特別設想通過LINQ查詢來製作簡單的自定義代碼規則版本。下面Code Query LINQ(CQLinq)查詢涉及您的需要:

// <Name>Method name MUST start with CAPITAL</Name> 
warnif count > 0 
from m in Application.Assemblies.WithName("TargetAssemblyName").ChildMethods() 
where 
    !m.IsSpecialName &&   // Remove getter and setter 
    !m.IsGeneratedByCompiler && // Discard methods generated by compiler 
    !m.ParentType.IsDelegate && 
    !m.NameLike("^btn") &&  // Use regex here to discard btnOk_Click like method 
    !char.IsUpper(m.SimpleName[0]) 
select m 

只要寫在VS NDepend的查詢編輯器這個編碼規則,並得到即時的反饋:

NDepend Custom Code Rule

NDepend的編碼規則可以executed/validated live in VS,或者可以在構建過程時間和validated in a report處執行。

+0

謝謝帕特里克我喜歡這一點,但截至目前,客戶端沒有這個工具,所以我只用fxcop定製。也有幾種方法來識別控件的數據類型,所以我可以看到,如果這是正常的方法或委託... – user698532

+0

歡迎您:)很高興你喜歡這個解決方案! –