在单个代码行(命名空间)上禁用Stylecop

J. *_*son 11 c# namespaces stylecop suppress-warnings

我们有一个现有产品,我们希望实现StyleCop的使用.但是,我们遇到了一个问题,那就是我们所有的命名空间都以小写(例如lowerCase.UpperCase.Etc.Etc.)和当然开头,导致SA1300(元素必须以大写字母开头)规则在每​​个文件中都被破坏.

虽然,此时无法更改命名空间,因为它已经存在,我们有许多合作伙伴和客户已经实现了针对我们的API的接口,并且依赖于稳定的命名空间.我相信你明白改变的后果......

我们希望一般启用规则,但在命名空间行上禁用临时.尝试过:

[module: System.Diagnostics.CodeAnalysis.SuppressMessage("StyleCop.CSharp.NamingRules", "SA1300:ElementMustBeginWithUpperCaseLetter", Justification = "Reviewed. Suppression is OK here.")]

如果我将它放在命名空间行之上,它就可以工作,但它基本上会完全禁用规则,这不是我们想要的,因为我们喜欢类和类成员的规则......

我希望有类似的东西:

#pragma warning disable SA1300
namespace lowerCase.UpperCase.Etc
{
#pragma warning enable SA1300

但据我所知,SA1300并非此类警告.

任何人都有一些如何解决这个问题的想法?

提前致谢!

J. *_*son 9

有一个解决方法.

你可以像这样写:

#region Generated Code
namespace lowerCase.UpperCase.Etc
{
#endregion

按照设计,Stylecop将忽略该区域内的所有内容,因为您已经声明"您不拥有代码,因此无法对该风格负责".

但是有一句话:在区域内将忽略所有规则,因此在将区域放置到位之前,请确保只有"不需要的"规则.

这个问题的起源实际上是另一个问题的小评论(甚至不是答案):为特定行禁用StyleCop