2010-02-08 107 views
5

我們在我們所有的源文件上運行代碼分析。我們的一個源文件是Linq-To-SQL生成的文件,我們無法控制生成的輸出。生成的代碼正在生成我想要禁止的代碼分析警告。有沒有什麼辦法可以在代碼生成的文件中抑制CA警告,而不需要在代碼本身中創建屬性和/或編譯指示(每次生成文件時都會覆蓋)?代碼分析生成的代碼生成文件 - 如何抑制警告?

回答

5

你的類是否有[GeneratedCode]屬性?如果是這樣,你可以得到的FxCop忽略它們:

使用的FxCop的項目:

  1. 在FxCop的打開你的FxCop項目
  2. 選擇項目 - >選項 - >拼寫&分析
  3. 檢查針對生成的代碼抑制分析結果
  4. 單擊確定

通過命令行:

  1. 傳遞/ ignoregeneratedcode開關,例如:
 FxCopCmd.exe /file:MyAssembly.dll /out:AnalysisResults.xml /ignoregeneratedcode 

http://blogs.msdn.com/fxcop/archive/2008/02/28/faq-how-do-i-prevent-fxcop-1-36-from-firing-warnings-against-generated-code.aspx

+0

不SuppressMessage作品,如果我打電話使用命令行fxcopcmd.exe? – Kiquenet 2013-01-31 15:36:10

+0

是它應該做的 – Paolo 2013-02-01 11:10:02

0

如果您使用的是FxCop的GUI,你可以簡單地排除FxCop項目中的這些問題。只需右鍵單擊該問題,然後選擇排除您可以在其中添加評論。
但如果你在輸出窗口中運行的FxCop我沒有線索。也許你可以檢查是否可以創建一個模塊級別的SuppressMessage並將其粘貼到AssemblyInfo.cs中。但我不這麼認爲。

+0

有一個相關的問題另一個答案在這裏,這樣表明你可以在模塊級抑制添加到AssemblyInfo.cs中,但我只是想它,不能讓它的工作。我可以將SuppressMessage添加到每個單獨的方法中,但是當我想忽略特定程序集中的所有內容時,這是一個非常痛苦的脖子。希望有人會用這個解決方案來回答! – Dave 2010-03-29 23:53:56

2

通過使用您自己的部分類的分支來應用該屬性,可以解決缺少GeneratedCode屬性的問題。這將意味着您添加的任何自定義代碼(包括實施部分方法)將被排除。例如:

namespace MyApp.DB { 
    [GeneratedCode("LINQ To SQL", "4.0")] 
    internal partial class MyAppDataContext { 
    } 

    // Repeat for each entity 
} 
0

PLINQO (Linq-to-SQL) CodeSmith templates也會自動爲您生成此屬性。大多數加載項也開始忽略文件名中使用「.generated」生成的部分類。

[System.CodeDom.Compiler.GeneratedCode( 「CodeSmith中」, 「5.0.0.0」)]