2010-02-16 73 views
7

您希望添加到FxCop和/或Gendarme中的什麼可定義的靜態代碼檢查規則?你希望FxCop/Gendarme有什麼規則?

爲什麼你希望看到添加的規則,例如什麼是好處等?

您的規則如何實施?

+0

FXCop不執行靜態代碼檢查,它檢查編譯程序集(IL)。 靜態代碼分析通過StyleCop完成。 –

+0

@BeowulfOF,我會說FXCop做了靜態代碼檢查,它只是不檢查你在「=」的每一邊有多少空格。 id不跟蹤方法之間的控制流程等。 –

+0

Microsoft聲明只有程序集是由FXCop分析的,而不是源代碼。 http://msdn.microsoft.com/en-us/library/bb429476%28VS.80%29.aspx –

回答

1

就個人而言,我寧願在using聲明中看到不使用IDisposable實現。

所以,如果你有這樣的代碼:

var fs = new FileStream(...); 

// Other code. 

fs.Dispose(); 

它會告訴你在一個using語句中使用它。

好處是,它會提醒您,您可能不知道應該處理的物品沒有及時處理的情況。

但是,有足夠的時間在有效的情況下,不要在using語句中聲明IDisposable實現,因爲這樣的規則很快就會變成一種痛苦。大多數情況下,這種情況下將一個IDisposable實現作爲方法的參數。

我做什麼的意思是哪裏的實施細則刪除需要調用Dispose類,(例如MemoryStreamDataContext)用途;那些實施IDisposable和應該始終有Dispose調用他們,無論執行細節,因爲它總是更好的代碼違反合同暴露。

+0

@ Ian Ringrose:更新我的回覆以澄清。 – casperOne

+0

VS2010代碼分析有一個非破壞規則:http://msdn.microsoft.com/en-us/library/ms182289%28VS.100%29.aspx –

2

我想快速定義和實施我自己的規則。我曾經爲FxCop嘗試過一次,但是我發現這個API不太清楚 - 並且沒有太多的文檔。我用的FxCop 1.36,也許事情發生了變化......

所以我希望看到有一個清晰和易於FxCop的使用界面...這將是巨大的:)

我試圖執行的規則分別爲:

  • DocumentInternalMethods
  • DocumentInternalTypes
  • ...

巴斯我想對非公開成員執行xml註釋。

+1

爲此使用StyleCop,它對該內建有一個規則。無論如何,XML註釋都不會被編譯到程序集中,所以FXCop無法看到這些是否被定義,因爲它只分析編譯後的程序集。 –

+1

我對StyleCop有所瞭解,但是現在我想在FxCop中實現它 - 我做到了。你是對的,你必須單獨加載xml文件。 – tanascius

1

我真的很喜歡二進制分析足夠聰明,以識別接口的可能性。

如果可以通過接近定義的類型及其成員來確定是否存在可以插入接口的公共元素。

顯然,這不應該只是一個警告,因爲它有時希望明確不使用接口。

1

想到這一點,我也希望看到二進制分析足夠聰明,以檢查可能的訪問修飾符的降級。

不應該很難確定一個類,屬性或方法是否會受到更多限制。

相關問題