首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >编写自定义Lint规则以确保在每次使用之前进行空检查以避免NullPointerException

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

Stack Overflow用户
提问于 2017-01-06 03:59:20
回答 1查看 462关注 0票数 3

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

错误案例:

代码语言:javascript
复制
SomeBean bean = fetchDataFromServer();
bean.getSomeField().doSomeThing();//-->Lint should report error, missing null-check before using

右案件:

代码语言:javascript
复制
if (bean != null && bean.getSomeField() != null) {
    bean.getSomeField().doSomeThing();//-->Lint should check this ok, have checked for both reference
}

我的问题:对于此检查,是否已经有任何已实现的规则?如果没有,有人能告诉我怎么写这样的习惯规则吗?

任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2022-02-01 22:44:06

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

  1. https://en.wikipedia.org/wiki/SonarQube#SonarLint (也是SonarQube)有一个避免NPE的规则。
  2. https://en.wikipedia.org/wiki/FindBugs (也是后继SpotBugs)有错误模式来检测NPE (以NP为前缀)。
  3. https://en.wikipedia.org/wiki/Checkstyle允许添加自定义规则

SonarLint

有处理德米特定律(LoD)的声纳规则德米特定律(LoD)

空指针不应取消引用 对null的引用永远不应该被取消引用/访问。这样做将导致抛出NullPointerException。充其量,这样的异常会导致突然的程序终止。最坏的情况是,它可能公开对攻击者有用的调试信息,或者允许攻击者绕过安全措施。

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

FindBugs

NP类别中的其他bug描述中,例如,NP_ALWAYS_NULL

NP:空指针取消引用(NP_ALWAYS_NULL) 这里取消了一个空指针。这将导致在执行代码时出现NullPointerException

另请参阅:

格子式

要编写自己的校验方式规则,请参见:

进一步阅读

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41498719

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档