我正在尝试为特定属性抑制以下StyleCop消息:
SA1513: Statements or elements wrapped in curly brackets must be followed by a blank line.
我正在尝试执行以下操作,但它似乎不起作用:
[SuppressMessage("Microsoft.StyleCop.CSharp.DocumentationRules", "SA1513:ClosingCurlyBracketMustBeFollowedByBlankLine", Justification = "There are no issues with this code")]
public string CustomerId
{
get
{
return this.GetProperty(CustomerIdProperty);
}
set
{
if (this.IsNew)
{
this.SetProperty(CustomerIdProperty, value);
}
else
{
throw new ReadOnlyException("Id value can only be changed for a new record.");
}
}
}
我只是做错了吗?或者这是不可能的?这是一个很好的规则,就我的财产而言无效。
更新
尝试从DocumentationRules切换到LayoutRules ......仍然没有抑制。
[DataObjectField(true, false)]
[SuppressMessage("Microsoft.StyleCop.CSharp.LayoutRules", "SA1513:ClosingCurlyBracketMustBeFollowedByBlankLine", Justification = "There are no issues with this code")]
public string CustomerId
{
get
{
return this.GetProperty(CustomerIdProperty);
}
set
{
if (this.IsNew)
{
this.SetProperty(CustomerIdProperty, value);
}
else
{
throw new ReadOnlyException("Id value can only be changed for a new record.");
}
}
}
答案 0 :(得分:3)
您的抑制使用Microsoft.StyleCop.CSharp.DocumentationRules
。我认为它应该是Microsoft.StyleCop.CSharp.LayoutRules
。
答案 1 :(得分:3)
我认为这可能是StyleCop的一个问题。你安装了哪个版本? This page声明:
从StyleCop 4.3.2开始,可以通过在源代码中添加抑制属性来抑制规则违规的报告。
我刚刚发现我无法抑制任何消息。我使用的安装程序只提供4.3版本。 Codeplex上的最新版本是4.4.0.0。确保安装了该版本。
<强>更新强>
我一直在做一些检查,我可以压制DocumentationRules:
[SuppressMessage("Microsoft.StyleCop.CSharp.DocumentationRules",
"SA1600:ElementsMustBeDocumented",
Justification = "Reviewed. Suppression is OK here.")]
但不是SpacingRules或LayoutRules。但是,我发现的任何内容都没有说明为什么会出现这种情况。
答案 2 :(得分:2)
StyleCop中存在一个错误,让您只能抑制某些规则。这将在StyleCop 4.4中修复,该版本即将发布。
答案 3 :(得分:2)
小心阅读StyleCop文档以弄清楚如何压制规则。以下是我的代码:
[SuppressMessage("Microsoft.StyleCop.CSharp.MaintainabilityRules",
"SA1402:FileMayOnlyContainASingleClass",
Justification = "Splitting this file into classes would get too confusing.")]
从帮助文件中:
SuppressMessage属性具有以下格式:
[SuppressMessage(“规则类别”,“规则ID”,“理由”)]
其中:
规则类别 - 定义规则的StyleCop规则命名空间。例如, Microsoft.StyleCop.CSharp.DocumentationRules
规则标识 - 规则的标识符,使用格式shortname:longname。
例如,SA1600:ElementsMustBeDocumented
对齐 - 用于记录抑制原因的文本 消息。
如前所述,请确保引用正确的规则名称空间。
答案 4 :(得分:2)
[SuppressMessage("StyleCop.CSharp.LayoutRules", "SA1513:ClosingCurlyBracketMustBeFollowedByBlankLine", Justification = "There are no issues with this code")]
适用于最新的StyleCop。刚删除“微软”。前缀。
答案 5 :(得分:-2)
只需在get块和set block之间加一个空白行 这就是你所要做的,添加一个空白行,问题就解决了。