【发布时间】:2023-04-10 16:25:01
【问题描述】:
我刚刚询问了一个类似的question 关于来自Service References 和Xml summary errors 的自动生成代码。发布了一个答案,建议我可以将Service Reference 添加到它自己的项目中,然后它可以完全避免Xml 摘要警告和Stylecop 错误。
但我意识到我可以通过将Service Reference 设置为Internal 来解决Xml 问题,现在我陷入了StyleCop 错误。
我使用的是FxCop 10.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>
//------------------------------------------------------------------------------
那为什么不被忽略呢?
我还发现了这个question 并尝试在我的StyleCop 设置中使用以下内容:
<CollectionProperty Name="GeneratedFileFilters">
<Value>Reference\.cs$</Value>
</CollectionProperty>
但这也不起作用,我一直在努力使用正则表达式,但尝试将以下值添加到上面的示例中以让 Stylecop 忽略我生成的代码。
Reference.cs
\Reference\.cs
\Reference\.cs$
Reference\.cs$
有谁知道如何抑制 Reference.cs 文件的所有 Stylecop 错误?
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 cop 设置以在构建时运行。我在构建选项卡的条件编译符号中添加了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 选项卡中。
【问题讨论】:
-
你能详细说明你看到了什么错误吗?
-
@Mightmuke,见编辑 2
-
当我选择
Suppress results from generated code选项时,它对我来说似乎工作正常(虽然我没有括号中的文本,但我想知道它是如何以及为什么存在的)。您是从 IDE(又名代码分析)还是从 FxCop 运行器运行它?如果来自 IDE,您是否有多个项目?从 IDE 运行时存在一个问题,即第一个项目的代码分析设置会覆盖“子”项目的设置(至少在 VS2010 中)。如果您只有一个项目,这当然不会成为问题。
标签: fxcop stylecop suppress-warnings service-reference