【问题标题】:Why does Eclipse JDT Null-Checking respect Apache Commons Validate为什么 Eclipse JDT Null-Checking 尊重 Apache Commons Validate
【发布时间】:2019-01-10 07:13:28
【问题描述】:

我将@NonNull-Checking 与 Eclipse-JDT 一起使用,很高兴看到它理解并尊重 Apache Commons Validate 的使用。这意味着在代码中:

Validate.notNull(someInput);
@NonNull String a = someInput;

如果没有第一行,第二行会在 Eclipse 中产生警告。 我只能配置是否应该尊重“断言”。 但在没有任何进一步通知的情况下,它也尊重 Validate#notNull 和 Objects#requireNonNull。 这很棒,但我想知道:

  1. Eclipse 尊重正确的 Null-Checking 的框架/方法是否是硬编码或可配置的(在某些插件、文件等中)?
  2. 我可以编写自己的方法让 Eclipse 知道,某些变量保证不为空吗?

【问题讨论】:

    标签: java eclipse eclipse-jdt non-nullable null-check


    【解决方案1】:

    列表是硬编码的,不能扩展(除了修改源代码)。

    org.eclipse.jdt.internal.compiler.lookuporg.eclipse.jdt.internal.compiler.ast 中涉及的一些主要类,包括TypeConstantsTypeIds 接口以及ReferenceBindingMessageSend 类。

    【讨论】:

    • 谢谢。我没有找到有关此的文档。是否有支持的框架/方法的完整列表?
    • 我不知道列表,你可以通过查看源代码来解决,但也很难阅读。
    • @greg-449 经过充分研究。让我添加一个指向添加大部分内容的错误的链接:bugs.eclipse.org/382069#c6。不过,我承认这不是正确的文档...
    • @StephanHerrmann 很遗憾这是硬编码的。我意识到做真正的分析会太昂贵,但也许 EEA 格式的扩展将允许快速分析。例如:现在它的 0 = Nullable 和 1 = NonNull。还可以添加 4 种类型:2 种用于可空/非空 void 类方法,2 种用于可空/非空类布尔方法。
    • @AdamGent,您的想法超出了 external 注释的目的,我们首先需要定义其他注释类型以指定不同的(空)合同。随意在 bugzilla 中提交 RFE。一旦指定了新的注释,在 EEA 中表示它就很简单了。不幸的是,经验表明,在所有相关方同意的情况下指定新的注释是一个难以破解的难题。例如。看到@LazyNonNull 早就提出了,但我们仍然没有强烈同意这是否值得添加。
    猜你喜欢
    • 2016-06-27
    • 1970-01-01
    • 1970-01-01
    • 2018-04-04
    • 1970-01-01
    • 1970-01-01
    • 2018-10-17
    • 2015-10-11
    • 2016-05-12
    相关资源
    最近更新 更多