Dot-Net

有沒有辦法辨識未使用或陳舊的 FxCop 消息抑制?

  • January 18, 2011

我們使用 FxCop 的全域抑制來抑制在舊程式碼中發現的規則違規。我所說的舊程式碼是指有時在我們打開程式碼分析之前編寫的程式碼。我們修復了新程式碼中的違規行為。我們無法一次性修復舊程式碼中的違規行為,因此我們使用抑制。

隨著時間的推移,我們的全球壓製文件變得臃腫。通常,當舊方法上的簽名發生更改時,先前的抑制變得無效,因為它不再與程式碼匹配。我們創建了新的抑制來忽略舊的違規,但通常舊的 SuppressMessage 屬性被留下了。

有人知道如何辨識這些與程式碼不匹配的 SupressMessage 聲明嗎?就此而言,是否有人知道如何辨識由於沒有違規而導致無效的 SuppressMessage 屬性?

我在想可能有一個編譯器或 FxCopCmd 警告或日誌消息可能會辨識未使用的抑制。如果不是這樣,有人知道這樣做的腳本或 VS 擴展嗎?

謝謝。

您可以為此使用獨立的 FxCop UI 應用程序。將“Seen Last Run”列添加到“Excluded In Source”結果選項卡中。分析後,對於在分析執行期間未發現相應違規的任何源內抑制,此列將顯示錯誤值。為了最大限度地提高結果的可靠性,您應該確保您在從 Visual Studio 執行分析時使用的分析規則集使用的是同一組規則程序集。

順便說一句,如果您希望在發現“陳舊”抑制時能夠破壞您的建構,您可能需要考慮在https://connect.microsoft.com/visualstudio/feedback/details/277253/add-mechanism-上投票用於檢測不必要的抑制消息屬性實例

引用自:https://stackoverflow.com/questions/4727832