22

我为我的 VS 项目打开了“将警告视为错误”,这意味着我因缺少文档而收到错误(这个特定项目的好提醒)。

但是,部分代码是由不插入 xml 文档的自定义工具生成的,因此我正在寻找忽略生成代码的缺失 xml 文档,而不是整个项目。我对生成的实际文件没有影响,也不能真正在文件中插入任何东西(因为它经常被工具重新生成)所以我在生成的文件之外寻找存在的东西(生成的类是部分的,如果有帮助的话)

4

3 回答 3

12

避免在生成的代码上出现警告或代码分析错误的最佳方法是使用GeneratedCodeAttribute修饰生成的类,并使代码文件以*.generated.cs模式结尾。

如果你的代码文件也有文件头,你应该有这些标签:

//----------------------
// <auto-generated>
//     Tool description
// </auto-generated>
//----------------------

这不是强制性的,但如果您有代码文件头,这是一个很好的做法。

这样,FxCop 和 StyleCop 等其他工具将不再分析您的代码。

不正常的是你的代码生成工具没有用上面提到的属性修饰你的代码元素。尝试查看您的工具设置中是否有启用选项或联系开发团队。


编辑:生成的类是否是部分类,实际类的名称和编号是否经常更改?因为如果生成的代码内容没有太大变化,你可以做的只是创建另一个代码文件,然后声明生成的部分类,用 GeneratedCodeAttribute 装饰它们。有一次它挽救了我的生命(和我的时间!)。

于 2010-04-23T20:36:29.273 回答
10

编辑:请参阅表明这不适用于 C# 4 的注释。我不清楚它是否适用于早期版本的编译器。不过,C# 4 规范说明了这一点。第 2.5.8.1 节指出:

指令将所有或给定的一#pragma warning restore组警告恢复到在编译单元开始时有效的状态。请注意,如果在外部禁用了特定警告,则#pragma warning restore(无论是针对所有警告还是指定警告)都不会重新启用该警告。

Jeff在博客文章中有一个解决方法- 基本上是将自动生成的代码重新处理为构建的一部分。


正如汤姆所说,您可以在整个项目中添加“忽略”(构建/抑制警告 - 输入 1591 作为警告编号) - 但是您可以自己在每个非生成文件的顶部恢复警告:

#pragma warning restore 1591

它非常难看,但它有效(我刚刚测试过)。

于 2010-04-23T20:26:36.403 回答
2

您能做的最好的事情就是在包含生成代码的项目中抑制特定警告。您可以在“构建”选项卡上的“项目属性”中执行此操作。这并不理想,但没有将编译指示放入生成的代码中,这是您能做的最好的。

于 2010-04-23T20:18:53.827 回答