我们有一个现有产品,我们希望实现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并非此类警告。
任何人都有一些如何解决这个问题的想法?
提前致谢!
答案 0 :(得分:9)
有一种解决方法。
您可以这样写:
#region Generated Code
namespace lowerCase.UpperCase.Etc
{
#endregion
按照设计,Stylecop会忽略该区域内的所有内容,因为您已声明 “您不拥有代码,因此无法对样式负责” 强>
但是有一条评论:区域内的所有规则都会被忽略,因此请确保在放置区域之前只有“不需要的”规则。
这个问题的起源实际上是另一个问题的小评论(甚至不是答案):Disable StyleCop for specific lines
答案 1 :(得分:0)
不幸的是,你想做的事情是不可能的。但是,StyleCop+包含更灵活的命名规则版本,允许您为命名空间名称指定不同于其他名称的格式。