2013-02-13 40 views
1

我刚刚就Service ReferencesXml summary errors询问了有关自动生成代码的类似question。答案已发布,表明我可以将Service Reference添加到自己的项目中,然后完全避免Xml汇总警告和Stylecop错误。Stylecop为Reference.cs文件抑制错误

但我意识到,我能够通过设置来Service ReferenceInternal绕过Xml问题,我现在贴在StyleCop错误。

我正在使用FxCop版本10.0。

在我的项目的属性,在代码分析选项卡上,我已检查了选项

从生成的代码 (只有管理)

此外,从看

禁止结果生成的代码在Reference.cs文件中,我看到该代码装饰有以下属性:

[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")] 

..whi ch Stylecop应该跳过,对吗?虽然这不起作用,但我仍然在为生成的代码获取StyleCop错误。

编辑:下面的头还可以在生成的代码中发现:

//------------------------------------------------------------------------------ 
// <auto-generated> 
//  This code was generated by a tool. 
//  Runtime Version:4.0.30319.18033 
// 
//  Changes to this file may cause incorrect behavior and will be lost if 
//  the code is regenerated. 
// </auto-generated> 
//------------------------------------------------------------------------------ 

那么,为什么是不是被忽略了?

我也发现了这个question并用我的StyleCop setings以下尝试:

<CollectionProperty Name="GeneratedFileFilters"> 
    <Value>Reference\.cs$</Value> 
</CollectionProperty> 

但这也不管用,我一直在努力与正则表达式,但尝试下面的值添加到上面的例子让Stylecop忽略我生成的代码。

Reference.cs 
\Reference\.cs 
\Reference\.cs$ 
Reference\.cs$ 

有谁知道如何抑制所有Stylecop错误的Reference.cs文件?

EDIT2:显示为Reference.cs文件中的错误:

错误1个CA1812:Microsoft.Performance:...是一个内部类, 显然从来没有实例化。如果是这样,请从 组件中删除代码。如果此类只包含静态方法,则 考虑添加一个私有构造函数以防止编译器从 生成默认构造函数。

错误2 CA2239:Microsoft.Usage:添加 'OnDeserialized私人无效 (的StreamingContext)' 方法键入...并与System.Runtime.Serialization.OnDeserializedAttribute属性它 。

错误4 CA1811:Microsoft.Performance:...似乎没有 上游公共或受保护的呼叫者。

我有这3种类型的错误中的27个。

编辑3:我有Style/Fx警察设置运行构建。我在Build Events选项卡中添加在构建选项卡中的条件编译符号CODE_ANALYSIS

"$(ProgramFiles)\Microsoft FxCop 10.0\FxCopCmd.exe" /file:"$(TargetPath)" /ruleid:-"Microsoft.Design#CA1006" /ruleid:-"Microsoft.Design#CA1020" /console /cul:en-GB /q /assemblyCompareMode:StrongNameIgnoringVersion 

...在Post-build event command line

+0

你能否详细说明你所看到的错误? – Mightymuke 2013-02-14 20:57:58

+0

@Mightmuke,请参阅编辑2 – DevDave 2013-02-15 11:08:19

+0

当我选择“从生成的代码中取消结果”选项时,它似乎可以正常工作(尽管我没有括号中的文字,我在想如何以及为什么会出现这种情况) 。你是从IDE(又名代码分析)还是从FxCop跑步者运行?如果来自IDE,你有几个项目?从IDE运行时出现问题,因为第一个项目的代码分析设置会覆盖“子”项目的设置(至少在VS2010中)。如果你只有一个项目,这当然不会成为问题。 – Mightymuke 2013-02-15 18:03:30

回答

4

CAxxxx错误来自FxCop,而不是StyleCop。如果它们出现在生成的代码中,并且您希望在不更改生成器的情况下保留生成的代码,只需添加项目级别的排除(例如:在GlobalSuppressions.cs中)。

以下问题编辑#3: 既然你正在运行fxcopcmd.exe“手动”,你的C#项目设置为忽略生成的代码不被使用的。您需要将/ignoregeneratedcode切换器添加到您的fxcopcmd.exe命令行以使其适用。

+0

有没有办法,用FxCop跳过生成的文件,而不必为每个错误写抑制? – DevDave 2013-02-15 15:37:50

+0

如果你已经设置FxCop忽略生成的代码,那么你从这方面做了大量的工作。我无法重现这个问题,但我无法确定这是因为我的服务参考不同还是您的FxCop配置错误。当您看到CA警告时,您如何运行FxCop? – 2013-02-15 15:42:59

+0

有没有一种方法可以忽略fxCop生成的代码,而不是我所包含的示例? – DevDave 2013-02-15 16:14:59