【问题标题】:ReSharper: How to apply [NotNull] or [CanBeNull] annotation implicitly with another attribute?ReSharper:如何将 [NotNull] 或 [CanBeNull] 注释与另一个属性隐式应用?
【发布时间】:2016-06-10 04:36:01
【问题描述】:

在我们的代码中,我们有自己的注入框架来启用依赖注入,例如:

public class MyClass {
    [Component("ComponentName1")] // means [NotNull]
    public MyType NotNullComponent{ get; set; }
    
    [OptionalComponent("ComponentName2")] // means [CanBeNull]
    public MyType CanBeNullComponent { get; set; }
}

我们不想再到处添加[CanBeNull][NotNull],因为它与[Component][OptionalComponent] 属性有重复的语义。

是否可以让 ReSharper 知道自定义属性的语义来帮助静态分析?

【问题讨论】:

  • 目前看来不可能。我在 ReSharper 的 youtrack 上提出了一个问题:youtrack.jetbrains.com/issue/RSRP-454461
  • @IgalTabachnik 谢谢。目前看来最快的解决方案是编写我们自己的 Resharper 插件来支持它。
  • 现在作为实验性功能在 resharper 中可用。

标签: c# resharper static-analysis


【解决方案1】:

您现在可以通过在代码检查 -> 设置中启用“隐式”来隐式使用 [NotNull]

除非您指定 [CanBeNull],否则所有内容都将被假定为不允许 null。

【讨论】:

  • 我不是这个意思。我希望 Resharper 了解我们的自定义属性与 NotNull 或 CanBeNull 具有相同的语义。
  • 你能扩展他们的属性吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-11-24
  • 2013-11-11
  • 2011-06-25
  • 1970-01-01
  • 1970-01-01
  • 2017-09-01
  • 1970-01-01
相关资源
最近更新 更多