2008-12-09 27 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