我使用的声纳和我有这种违规从它的我的代码和平:
Correctness - Possible null pointer dereference
有没有人知道在这个FindBugs的规则? 我搜索了很多,但我不能找到一个很好的示例代码(在Java中),它描述了这个规则,不幸的是FindBugs的网站并没有对这条规则的任何示例代码或很好的说明。
为什么会出现这种违反出现?
我使用的声纳和我有这种违规从它的我的代码和平:
Correctness - Possible null pointer dereference
有没有人知道在这个FindBugs的规则? 我搜索了很多,但我不能找到一个很好的示例代码(在Java中),它描述了这个规则,不幸的是FindBugs的网站并没有对这条规则的任何示例代码或很好的说明。
为什么会出现这种违反出现?
它说, 在这里
NP: Possible null pointer dereference (NP_NULL_ON_SOME_PATH)
有说法的一个分支,如果执行,保证空值将被废弃时,被执行的代码时会产生一个NullPointerException。 当然,这个问题可能是该分支或声明是不可行的,并且永远不能被执行的空指针异常; 决定这超出的FindBugs的能力。
如果您已经发布了一些代码,它会更容易回答。
编辑我没有看到大量的文档资料,但这里是一个例子 ! 希望这可以帮助!
一个示例代码是这样的。
String s = null ;
if (today is monday){
s = "Monday" ;
else if (today is tuesday){
s = "Tuesday" ;
}
System.out.println(s.length()); //Will throw a null pointer if today is not monday or tuesday.
好的
这是两个简单的例子:一人给一:可能的空指针引用
1. Error
ArrayList a = null;
a.add(j, PointSet.get(j));
// now i'm trying to add to the ArrayList
// because i'm giving it null it gives me the "Possible null pointer dereference"
2. No Error
ArrayList a = new ArrayList<>();
a.add(j, PointSet.get(j));
// adding elements to the ArrayList
// no problem
简单吗?
在简单的语言,如果一个变量的值被指定为空,并尝试与像添加任何内置的方法来访问/获取。 然后空指针引用问题带有SONAR。 因为有改变它走空,抛出空指针异常。 如果可能,尝试以避免它。
防爆文件文件= NULL; file.getName(); 会抛出“可能的空指针引用”
作为例子提到的它可能不是直接发生的,也可以是无意的。
我用下面的代码这个问题: -
BufferedReader br = null;
String queryTemplate = null;
try {
br = new BufferedReader(new FileReader(queryFile));
queryTemplate = br.readLine();
} catch (FileNotFoundException e) {
// throw exception
} catch (IOException e) {
// throw exception
} finally {
br.close();
}
在这里, br
的BufferedReader可以null
在br.close()
然而,它也只能是null
,如果new BufferedReader()
失败,在这种情况下,我们都扔了相关的例外。
因此,这是一个错误的警告。 Findbugs
文档提到相同: -
This may lead to a NullPointerException when the code is executed.
Note that because FindBugs currently does not prune infeasible
exception paths, this may be a false warning.