【问题标题】:C# ReSharper: suppress specific warnings on all targets of specific AttributeC# ReSharper:抑制对特定属性的所有目标的特定警告
【发布时间】:2018-03-20 08:46:59
【问题描述】:

例子:

private string foo;

这理所当然地发出警告CS0649: Field 'foo' is never assigned。但是,如果我添加自定义属性,我希望禁止显示警告:

[Localize("foo")]
private string foo;

我知道使用ReSharper 可以做到这一点。如果 ReSharper 正在运行,我正在使用的库 Json.Net 具有一个属性,该属性会在使用它的每个字段上抑制相同的警告:

[JsonProperty("foo")]
private string foo;

我尝试在 Attribute 类上使用 #pragma 指令,尝试使用 In Source Suppression,但无济于事。任何正确方向的指针将不胜感激,谢谢!

编辑:添加动画以显示在未分配字段上使用 Newtonsoft.Json.JsonProperty 时所需的行为。

编辑:添加说明,因为该功能似乎是 ReSharper 特有的

【问题讨论】:

  • 您确定使用 JsonProperty 属性会抑制此警告吗?因为我无法复制它。
  • @Evk 感谢您的回复。我添加了一个动画来显示 JsonProperty 的行为(使用 Newtonsoft.Json)。
  • 但是如果您构建该项目 - 它是否仍会发出 CS0169 警告消息(在“警告”构建选项卡中)?另外,你有没有安装 Resharper?
  • @Evk 你是对的 - 错误列表仍然会在警告选项卡中发出 CS0169。我通常不检查那里,因为我们正在使用 Unity3D,它将部分警告反映到它自己的编辑器控制台。我确实使用 ReSharper,所以这很可能是 ReSharper 特有的行为。如果我发现任何关系,我会检查并重新提出我的问题,谢谢!

标签: c# resharper warnings code-analysis


【解决方案1】:

JetBrains.Annotations 包中添加[MeansImplicitUse] 属性, 到您创建的属性类。 step

【讨论】:

    【解决方案2】:

    JetBrains.Annotations 中的[UsedImplicitly] 属性应该可以帮助您。 也看here

    【讨论】:

    • 非常感谢!虽然[UsedImplicitly] 确实抑制了警告,但我只发现了如何将它应用于单个字段。最理想的情况是,我希望我的[Localize] 属性不需要同时指定[UsedImplicitly],它本身就可以作为ReSharper 的标记。我在您的链接文章中没有找到任何关于如何实现这一目标的线索 - 还是我错过了什么?
    猜你喜欢
    • 1970-01-01
    • 2015-04-13
    • 1970-01-01
    • 1970-01-01
    • 2010-11-04
    • 2010-10-03
    • 2014-08-19
    • 2021-10-25
    • 2011-02-20
    相关资源
    最近更新 更多