1

我刚刚问了一个类似的问题Service References,关于从和自动生成的代码Xml summary errors。发布了一个答案,建议我可以将其添加Service Reference到自己的项目中,然后它可以完全避免Xml摘要警告和Stylecop错误。

但我意识到我可以Xml通过设置 to 来解决这个问题,Service Reference现在Internal我陷入了StyleCop错误。

我使用的是FxCop10.0 版。

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

抑制生成代码的结果(仅限托管)

此外,通过查看 Reference.cs 文件中生成的代码,我看到代码装饰有以下属性:

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

..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>
//------------------------------------------------------------------------------

那么为什么不被忽略呢?

我也发现了这个问题,并尝试在我的设置中使用以下StyleCop内容:

<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:添加“private void OnDeserialized(StreamingContext)”方法来键入...并使用 System.Runtime.Serialization.OnDeserializedAttribute 对其进行属性。

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

我有这 3 种错误中的 27 种。

编辑 3:我有 Style/Fx 警察设置可以在构建时运行。我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选项Build Events卡中。

4

1 回答 1

5

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

以下问题编辑#3: 由于您正在“手动”运行 fxcopcmd.exe,因此根本不会使用您的 C# 项目设置来忽略生成的代码。您需要将/ignoregeneratedcode开关添加到 fxcopcmd.exe 命令行才能应用此开关。

于 2013-02-15T15:36:30.590 回答