如何查看代码中所有潜在的NullPointerException Lint?Kotlin与Java混合开发
嘿,这个问题我在Kotlin和Java混编的项目里也踩过坑!你提到的method invocation ... may produce java.lang.NullPointerException这类提示,其实并不在Android Lint的那几个通用分类里,而是藏在Kotlin专属的代码检查项中,具体找法如下:
1. 直接定位Kotlin空值检查分类
打开Android Studio的设置面板:
- Windows/Linux:
File > Settings > Editor > Inspections - Mac:
Android Studio > Settings > Editor > Inspections
在左侧的检查列表里,找到Kotlin分类并展开,里面有个Nullability子分类——这里面就是所有和空值、潜在NPE相关的检查项,比如:
Unsafe call on nullable type:就是你看到的那种可能触发NPE的方法调用提示Nullable type mismatch:空值类型不匹配的问题Redundant null check:多余的空值判断
你可以在这里调整这些检查项的严重程度,或者自定义哪些场景需要触发提示。
2. 通过代码提示快速溯源
如果想快速定位某个具体提示对应的检查项,还有个更便捷的方法:
在代码里右键那个带有NPE警告的行,选择Inspect Code,在弹出的检查结果面板里,这个警告会被直接归类到对应的分组下,点击进去就能看到它所属的检查项,还能直接修改它的配置。
补充:Java代码的NPE检查
如果是Java代码里的潜在NPE问题,你可以去Java > Probable bugs分类下找,里面有Possible null pointer dereference这类检查项,但你碰到的提示是Kotlin触发的,所以重点还是Kotlin的Nullability分类。
之所以在你之前看到的Accessibility、Correctness等分类里找不到,是因为那些属于Android平台通用的Lint规则,而Kotlin的空值检查是语言层面的静态分析,所以被单独放在Kotlin专属的检查分类里啦。
内容的提问来源于stack exchange,提问作者user6683139

