我从Sonar那里得到问题:“由于调用方法的返回值,样式-可能的空指针取消引用。findbugs:np_null_on_some_path_from_return_value。问题在lockuntil.after(new Date())上;
try {
String sql = "select lock_until from shedlock where NAME=?";
Timestamp lockUntil = jdbcTemplate.queryForObject(sql, new Object[] {taskname}, Timestamp.class);
return lockUntil.after(new Date()); //issue line
} catch (EmptyResultDataAccessException e){
LOGGER.info("Checking shedlock for locked task[" + taskname + "]. No task exists. Exception: " + e.getLocalizedMessage());
return false;
}
我试图用
Date date = new Date();
return lockUntil.after(date);
Date date = new Date();
if(date != null)
return lockUntil.after(date);
else
return false; -> this line is dead end
但它引入了其他问题。
谁能指导一下吗?
假设new Date()
永远不会返回null
应该是一个有效的假设。我的猜测是,声纳抱怨的null
值可能是locktear
。我假设,如果查询与任何行都不匹配,QueryForObject
将返回null
,因此,如果您没有首先检查是否为null
,就会收到关于使用locktear>
的投诉。
由于上面代码上调用的方法的返回值,我得到了可能的空指针解引用。 有人能让我知道确切的问题和为什么它是一个问题吗? 提前道谢!如果需要其他细节,请告诉我。
我试图用以下代码指出声纳中的关键问题: 我也做了下面的更改,但仍然不起作用 请帮忙。
嗨我有以下方法: 不得不提的是,startDate和endDate是长变量。我尝试在if条件中添加null检查,也尝试使用longValue()方法,但没有结果。你知道我怎样才能解决这个问题吗?可能是fndBugs端的bug?
这使得我的代码有太多的空检查。 这能避免吗?
此代码中可能存在空指针取消引用错误: 如何解决这些问题?
我已经在我的sonar实例上测试了规则“正确性--可能的空指针取消引用”和“正确性--在异常路径的方法中可能的空指针取消引用”。不幸的是,以下代码从未被检测为错误 Netbeans能够正确检测到此问题,但sonar 3.6.1不能。 谢谢你的帮助