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

C# 在单个代码行(命名空间)上禁用Stylecop,c#,namespaces,stylecop,suppress-warnings,C#,Namespaces,Stylecop,Suppress Warnings,我们有一个现有的产品,我们希望实现StyleCop的使用。 然而,我们有一个问题,那就是我们所有的名称空间都是以小写字母开头的(例如lowerCase.UpperCase.Etc.),当然这会导致SA1300(元素必须以大写字母开头)规则在每个文件中都被打破 尽管如此,现在不可能更改名称空间,因为名称空间已经存在,而且我们有许多合作伙伴和客户已经针对我们的api实现了接口,并且依赖于一个稳定的名称空间。我相信你明白改变的后果 我们希望在一般情况下启用该规则,但在名称空间行上暂时禁用该规则。 尝试

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

尽管如此,现在不可能更改名称空间,因为名称空间已经存在,而且我们有许多合作伙伴和客户已经针对我们的api实现了接口,并且依赖于一个稳定的名称空间。我相信你明白改变的后果

我们希望在一般情况下启用该规则,但在名称空间行上暂时禁用该规则。 尝试过:

[模块:System.Diagnostics.CodeAnalysis.SuppressMessage(“StyleCop.CSharp.NamingRules”,“SA1300:Element必须以大写字母开头”,justify=“Revied.Suppression在这里是可以的”)]

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

我想要一些类似于:

#杂注警告禁用SA1300

名称空间小写。大写。Etc

{

#杂注警告启用SA1300

但据我所知,SA1300并不是此类警告

有人对如何解决这个问题有一些想法吗


提前感谢!

不幸的是,您想做的事情是不可能的。但是,包含了一个更灵活的命名规则版本,允许您为命名空间名称指定不同于其他名称的格式。

有一个解决方法

你可以这样写:

#区域生成的代码

名称空间小写。大写。Etc

{

#endregion

按照设计,Stylecop将忽略区域内的所有内容,因为您因此声明“您不拥有代码,因此无法对样式负责”

但是有一句话:区域内的所有规则都将被忽略,因此在放置区域之前,请确保您拥有“不需要的”规则


这其实是一个小评论(甚至不是答案)关于另一个问题:

嗯……你在某种程度上是对的,但经过一些运气之后,我似乎找到了一个基于另一个类似问题的注释的解决方法。我已经将其作为答案发布在这里。是的!:)你不是更愿意使用可配置规则,而不是以这种方式注释每个名称空间声明吗?imo,StyleCop+打乱了许多普通的stylecop规则……正如我提到的,我们无论如何都需要检查所有文件,所以设置区域解决方案不是什么大问题。