2008-12-09 67 views
21

是否可以從所有FxCop分析中排除完整的名稱空間,同時仍然使用SuppressMessageAttribute分析程序集的其餘部分?從FxCop代碼分析中排除完整的命名空間?

在我目前的情況下,我有一堆由LINQ to SQL生成的類,這會導致很多FxCop問題,顯然,我不會修改所有這些以匹配FxCop標準,因爲很多修改會如果我重新生成了課程,我會走了。

我知道FxCop有一個項目選項來抑制生成的代碼的分析,但它似乎沒有認識到由LINQ 2 SQL創建的實體和上下文類作爲生成的代碼。

+0

這是一個確切的重複,因爲另一個問題也是關於Linq-to-SQL;但我認爲應該合併答案,並保留搜索能力的存根。 – 2010-09-01 14:37:08

回答

17

如果用[GeneratedCode]屬性標記你的類,你可以使用/ ignoregeneratedcode國旗的FxCop在這個MSDN職位描述:

FAQ: How do I prevent FxCop from firing warnings against generated code

您可能需要添加一個新的代碼文件和實施新的部分課程也將屬性添加到類:

[GeneratedCode] 
public partial class MainDataContext { } 

只要確保你添加的一切,當你創建新的文件正確的命名空間。

1

使用生成的代碼屬性,繼承代碼分析小組的blog post

這在命名空間的頂部應該做的伎倆:在項目的根GlobalSuppressions.vb

[GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "9.0.0.0")] 
+0

不幸的是,據我所知,無法將這些屬性添加到名稱空間。這意味着我將不得不手動將它添加到每個生成的類 - 這不可能是理想的解決方案。 :D – hangy 2008-12-09 16:02:24

+4

非常多。真正的痛苦是,如果因爲任何原因必須重新生成代碼,則必須再次刪除該屬性。 如果Linq to Sql類生成的部分是局部的,則可以將屬性從生成的代碼中分離出來。我與EF classse有類似的問題。 – Chane 2008-12-09 17:04:33

1
<Assembly: SuppressMessage("Microsoft.Design", _ 
    "CA1020:AvoidNamespacesWithFewTypes", _ 
    Scope:="namespace", _ 
    Target:="Missico.IO")> 

PUT語句。

我所擁有的只是VB示例。

+0

對於VS 2010代碼分析中的許多代碼生成警告,這不起作用:在名稱空間級似乎不能被抑制。但有另一種選擇:http://stackoverflow.com/questions/2221881/code-analysis-on-a-code-generator-generated-file-how-to-suppress-warnings/2739791#2739791 – Richard 2010-04-29 18:29:53