gpt4 book ai didi

java - 编写自定义 Lint 规则以确保在每次使用之前进行空检查以避免 NullPointerException

转载 作者:行者123 更新时间:2023-12-05 07:45:38 25 4
gpt4 key购买 nike

我想制定一个自定义的 Lint 规则,以确保在每次引用服务器返回的 JavaBean 对象或其字段之前进行空值检查,以避免 NullPointerException。例如:

错误案例:

SomeBean bean = fetchDataFromServer();
bean.getSomeField().doSomeThing();//-->Lint should report error, missing null-check before using

右例:

if (bean != null && bean.getSomeField() != null) {
bean.getSomeField().doSomeThing();//-->Lint should check this ok, have checked for both reference
}

我的问题:这项检查是否已经实现了任何规则?如果不是,有人可以告诉我如何编写这样的自定义规则吗?

如有任何帮助,我们将不胜感激。

最佳答案

在 Java 生态系统中经常使用的 linter:

  1. SonarLint (还有 SonarQube)有一个避免 NPE 的规则
  2. FindBugs (也是 SpotBugs 的后继者)具有检测 NPE 的错误模式(以 NP 为前缀)
  3. Checkstyle允许添加自定义规则

声纳林特

有声纳规则RSPEC-2259处理 Law of Demeter (LoD) :

Null pointers should not be dereferenced

A reference to null should never be dereferenced/accessed. Doing so will cause a NullPointerException to be thrown. At best, such an exception will cause abrupt program termination. At worst, it could expose debugging information that would be useful to an attacker, or it could allow an attacker to bypass security measures.

您可以为您的 Java IDE(例如 IntelliJ 或 Eclipse)使用免费的 SonarLint 插件。要安装免费的 IDE 扩展,请访问官方网站:SonarLint

查找错误

NP 类别中的其他错误描述中,NP_ALWAYS_NULL例如:

NP: Null pointer dereference (NP_ALWAYS_NULL)

A null pointer is dereferenced here. This will lead to a NullPointerException when the code is executed.

另见:

检查样式

自己写checkstyle规则,参见:

进一步阅读

关于java - 编写自定义 Lint 规则以确保在每次使用之前进行空检查以避免 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41498719/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com