C#:无法删除 SA1401 stylecop 警告
C#: SA1401 stylecop warning unable to be removed
我试图使用以下代码抑制 SA1401(字段名应该是私有的)警告:
[SuppressMessage("Microsoft.StyleCop.CSharp.NamingRules", "SA1306:FieldNamesMustBeginWithLowerCaseLetter", Justification = "Some field names should be capital letters")]
[SuppressMessage("Microsoft.StyleCop.CSharp.Maintainability", "SA1401:FieldsMustBePrivate", Justification = "Some fields must be public")]
[EventSource(Guid = "9E1C02F1-9B14-4906-AA88-ED2140A102B7")]
public class ProcessApiEventSource : EventSource
{
/// <summary>
/// Event source logger instance
/// </summary>
public static ProcessApiEventSource Log = new ProcessApiEventSource();
...
}
在抑制 SA1306 警告时,不会抑制 SA1401 警告。谁能建议为什么压制不起作用?另外,有没有一种方法可以使用访问器更改声明,以便代码遵守该规则并清除该警告本身?
为了消除错误,您可以将 public 字段转换为私有字段,并将其公开为 public 属性.
public class ProcessApiEventSource : EventSource
{
private static ProcessApiEventSource MyLog = new ProcessApiEventSource();
public static ProcessApiEventSource Log { get { return MyLog; } }
}
如果您使用的是 .NET 4.6,那么您也可以使用 getter-only 属性 表达式。
public class ProcessApiEventSource : EventSource
{
public static ProcessApiEventSource Log => new ProcessApiEventSource();
}
[SuppressMessage("StyleCop.CSharp.MaintainabilityRules", "SA1401:FieldsMustBePrivate", Justification = "Some fields must be public")]
我用它来抑制消息 here。
我试图使用以下代码抑制 SA1401(字段名应该是私有的)警告:
[SuppressMessage("Microsoft.StyleCop.CSharp.NamingRules", "SA1306:FieldNamesMustBeginWithLowerCaseLetter", Justification = "Some field names should be capital letters")]
[SuppressMessage("Microsoft.StyleCop.CSharp.Maintainability", "SA1401:FieldsMustBePrivate", Justification = "Some fields must be public")]
[EventSource(Guid = "9E1C02F1-9B14-4906-AA88-ED2140A102B7")]
public class ProcessApiEventSource : EventSource
{
/// <summary>
/// Event source logger instance
/// </summary>
public static ProcessApiEventSource Log = new ProcessApiEventSource();
...
}
在抑制 SA1306 警告时,不会抑制 SA1401 警告。谁能建议为什么压制不起作用?另外,有没有一种方法可以使用访问器更改声明,以便代码遵守该规则并清除该警告本身?
为了消除错误,您可以将 public 字段转换为私有字段,并将其公开为 public 属性.
public class ProcessApiEventSource : EventSource
{
private static ProcessApiEventSource MyLog = new ProcessApiEventSource();
public static ProcessApiEventSource Log { get { return MyLog; } }
}
如果您使用的是 .NET 4.6,那么您也可以使用 getter-only 属性 表达式。
public class ProcessApiEventSource : EventSource
{
public static ProcessApiEventSource Log => new ProcessApiEventSource();
}
[SuppressMessage("StyleCop.CSharp.MaintainabilityRules", "SA1401:FieldsMustBePrivate", Justification = "Some fields must be public")]
我用它来抑制消息 here。