What is the meaning of Possible null pointer dereference in findbug?

左心房为你撑大大i 提交于 2019-12-03 17:07:07

问题


I am using Sonar and I have got this kind of violation from it for a peace of my code:

 Correctness - Possible null pointer dereference  

Has anyone know about this rule in findbugs? I searched a lot but I can not find a good sample code (in Java) which describe this rule, unfortunately findbugs site did not have any sample code or good description about this rule.

Why does this violation appear?


回答1:


It says here

NP: Possible null pointer dereference (NP_NULL_ON_SOME_PATH)

There is a branch of statement that, if executed, guarantees that a null value will be dereferenced, which would generate a NullPointerException when the code is executed. Of course, the problem might be that the branch or statement is infeasible and that the null pointer exception can't ever be executed; deciding that is beyond the ability of FindBugs.

If you would have posted some code it would be easier to answer.

EDIT I don't see a lot of documentation but here is one example! Hope this helps!




回答2:


a sample code is something like this.

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.



回答3:


Okay

This is two simple Examples : First one gives a : Possible null pointer dereference

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

Simple ?




回答4:


In simple language, if a variable value is assigned as null, and you try to access it with any inbuilt method like add/get. Then null pointer dereference issue comes with SONAR. Because there are changes for it go null, and throw null pointer exception. Try to avoid it if possible.

Ex File file=null; file.getName(); will throw "Possible null pointer dereference"

It may not happen directly as mentioned in example, it can be unintentionally.




回答5:


I got this issue with the following piece of code:-

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();
    }

Here, the br BufferedReader can be null in br.close(). However it can only be null if new BufferedReader() fails, in which case we are throwing the relevant exceptions.

This is thus a false warning. Findbugs docs mention the same:-

   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.


来源:https://stackoverflow.com/questions/12242291/what-is-the-meaning-of-possible-null-pointer-dereference-in-findbug

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!