java - 声纳和@CheckForNull 的使用
问题描述
当允许这些方法返回 null 时,我已经开始使用 @CheckForNull 注释方法。然而,即使检查了返回值,Sonar 现在仍在抱怨可能的 NullPointers。
@CheckForNull
public Object canReturnNull(){
return null;
}
public Object canAlsoReturnNull(){
return null;
}
public void testMethod(){
if(canReturnNull()!=null){
Class cls = canReturnNull().getClass(); //Sonar complains about possible NP
}
if(canAlsoReturnNull()!=null){
Class cls = canAlsoReturnNull().getClass(); //Sonar does not complain about possible NP
}
}
public void testMethod2(){
Object o = canReturnNull();
if(o !=null){
Class cls = o.getClass(); //Sonar does not complain anymore
}
if(canAlsoReturnNull()!=null){
Class cls = canAlsoReturnNull().getClass(); //Sonar does not complain about possible NP
}
}
我从理论上知道,对 canReturnNull() 的第一次调用可能会返回一个非空对象,而第二次则不会,但有办法告诉 Sonar 将在该特定方法中对该方法的所有后续调用视为检查?
否则我将不得不重写很多代码来分配一个局部变量,就像在 testMethod2 中一样(我知道可能是最佳实践,但我有很多遗留代码要处理。
解决方案
推荐阅读
- wordpress - 如何替换 Yoast 版本 15 上的 og:image 值?
- javascript - vanilla javascript动画仅适用于一个元素?
- rust - 在实施特征时定义预期寿命
- python - 在 django 中扩展用户表中的列不是在表中创建条目
- python - 使用 Resnet 检测区域中电线杆的位置(纬度和经度)
- bash - 仅当在 bash 中完成工作时才退出 while 条件
- javascript - 如何将字符串更改为数字并在其前面加上 000 加 1
- electron - Electron 应用程序通知声明应用程序发送通知是 electron.app。
即使在包装之后 - javascript - 从 jquery 提交时,引导表单验证不起作用
- javascript - 构建你在 JS 中测验什么类型的逻辑背后的逻辑