2010-09-30 60 views
1

請儘量保持[SuppressMessage]在代碼庫中的最小化,新的繼續引入。我想在代碼中說一些方法,「我已經回顧了這個[SuppressMessage]並且它是'可接受的'」。如何將CA [SuppressMessage]標記爲「祝福」?

一個想法是創建我自己的My.CodeAnalysis.SuppressMessageAttribute類繼承System.Diagnostics.CodeAnalysis.SuppressMessageAttribute,但該類是密封的。

我敢肯定,我可以與屬性和後處理步驟附近的評論湊齊一些東西,但我想堅持到什麼是可用的「盒子」與Visual Studio 2010

回答

1

即使該屬性未被封裝,子類化方法也不起作用,因爲代碼分析引擎會篩選確切的SuppressMessageAttribute實例。在編寫當前版本時,引擎將完全忽略子類實例。

就個人而言,我用下面的辦法進行鎮壓的管理:

  1. 所有的「永久」鎮壓必須 有 解釋了 抑制的原因的理由財產。
  2. 如有可能,必須在 目標代碼文件中放置永久 抑制。否則,它們 必須放置在GlobalSuppressions文件的頂部。
  3. 臨時鎮壓都必須 放在 GlobalSuppressions文件中的「臨時 鎮壓」頭註釋之下,他們 不應該被指定爲 理由。
  4. 所有永久抑制 受代碼審查,確切地說 與代碼本身相同的方式。 我使用差異檢測標記 代碼審查,所以我可以看到哪些 抑制已被添加或 改變就像我可以看到 哪些代碼已被修改。
  5. 臨時壓制必須全部通過項目的預定義階段來移除。此點通過後,將啓用檢測缺失對齊屬性的規則。

如果這種事情不適合你,另一種方法是使用獨立的FxCop來註釋你的抑制違規。不幸的是,這些註釋將駐留在您的代碼基礎之外,但如果您想阻止開發人員「祝福」他們自己的壓制,那麼可能會更適合您。

0

右鍵單擊錯誤列表中的CA警告時,其中一個選項是禁止消息 - >在項目抑制文件中。當您選擇,Visual Studio將添加一行在您的項目下列到GlobalSuppressions.cs文件:

[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Autofac")] 

這讓他們組合在一起,你的代碼文件。這是你想要得到的嗎?

+0

我不想在代碼庫中的任何地方使用很多'[SuppressMessage]。然而,你使用[assembly:]屬性的想法可能會「保佑」某些壓制。 – 2010-09-30 13:33:58