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

前端 未结 5 634
悲哀的现实
悲哀的现实 2021-02-07 11:00

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 a

相关标签:
5条回答
  • 2021-02-07 11:22

    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!

    0 讨论(0)
  • 2021-02-07 11:26

    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.

    For example:

    File file=null;
    file.getName();
    

    will throw "Possible null pointer dereference"

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

    0 讨论(0)
  • 2021-02-07 11:29

    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.
    
    0 讨论(0)
  • 2021-02-07 11:35

    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.
    
    0 讨论(0)
  • 2021-02-07 11:42

    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 ?

    0 讨论(0)
提交回复
热议问题