【问题标题】:Why can't I use constants in [SuppressMessage(…)] together with ReSharper?为什么我不能将 [SuppressMessage(...)] 中的常量与 ReSharper 一起使用?
【发布时间】:2017-06-20 12:16:28
【问题描述】:

我想将抑制 ReSharper 警告所需的字符串作为常量放在一个类中,这样我就不需要到处放置字符串并受益于查找所有引用函数来找出我抑制了多少次哪个规则。

public class Rules
{
  public const string ReSharper= "ReSharper";
  public const string InconsistentNaming = "InconsistentNaming";
}

如下装饰我的会员

public class MyClass
{
  [SuppressMessage(Rules.ReSharper, Rules.InconsistentNaming)]
  protected uint v { get; }
}

让 ReSharper 仍然抱怨名称以小写字母开头的属性。仅在将成员归属于

[SuppressMessage("ReSharper", "InconsistentNaming")]

ReSharper 警告消失。有没有办法使用常量使其在上述庄园中工作?

【问题讨论】:

  • 很酷的想法,可以理解你想要的,我认为它不可能,因为它必须在运行之前获取值(我知道它的常数:P)
  • stackoverflow.com/questions/33674077/… 听起来可能相似?
  • @mjwills 我也问过这个问题

标签: c# resharper


【解决方案1】:

ReSharper 根据源代码的语法执行分析并报告警告。所以它专门寻找"ReSharper""InconsistentNaming" 等形式的字符串标记。为了理解你的常量,它会对代码进行语义分析,例如通过确定Rules.ReSharper 是什么,然后它的值是什么当它发现它是一个字符串常量时。

后一种分析速度要慢得多,并且会影响 ReSharpers 分析的性能。所以它不这样做,所以你必须指定文字字符串。

【讨论】:

    猜你喜欢
    • 2016-02-13
    • 2020-08-26
    • 2013-07-02
    • 2015-11-08
    • 2013-08-24
    • 2020-06-19
    • 1970-01-01
    • 1970-01-01
    • 2011-12-25
    相关资源
    最近更新 更多