11

我们有一个现有的产品,我们想在其中实现 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 不是这种类型的警告。

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

提前致谢!

4

2 回答 2

10

有一种解决方法。

你可以这样写:

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

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

但是有一点要注意:该区域内的所有规则都将被忽略,因此请确保在设置该区域之前只有“不需要的”规则。

这实际上是对另一个问题的一个小评论(甚至不是答案):Disable StyleCop for specific lines

于 2013-09-19T19:03:47.607 回答
0

不幸的是,你想做的事情是不可能的。然而,StyleCop+包含一个更灵活的命名规则版本,它允许您为命名空间名称指定与其他名称不同的格式。

于 2013-09-19T12:34:35.490 回答