Sonar常見問題分析


1.Equality tests should not be made with floating point value

  代碼舉例: if (result == num) //result和num均為double 之間比較會有精度損失

  解決:BigDecimal data1 = new BigDecimal(totalArea);

     BigDecimal data2 = new BigDecimal(s1);

        int num = data1.compareTo(data2);//num =0 相等  >0前者大於后者 ,反之 <0 前者小於后者

2.This class overrides "equals()" and should therefore also override "hashCode()". 

  代碼舉例:public boolean equals(Object obj){...}  //需要添加對應的hashCode方法 

  解決:可以添加一個最簡單的hashCode方法  

     public int hashCode() {return 0;}   

3.Synchronize on a new "Object" instead

  代碼舉例:synchronized ("實例化") {...}   //里邊必須是對象

  解決: private Object obj ="實例化";

     synchronized (obj ) {...}

4.Close this"FileInputStream" in a "finally" clause.

  解決方法: 在finally中關閉FileInputStream,主要是關閉方式不對,finally代碼塊中,應該要對每個stream進行單獨關閉,而不能統一寫在一個try-catch代碼中。

5.A"NullPointerException" could be thrown; "tom" is nullablehere

  空指針,解決方式:先判斷或者先實例化,再訪問里面的屬性或者成員。

6.Makethis IP "127.0.0.1" address configurable

  解決方法:不要把IP地址寫在此類中,應該在對應的系統文件或者相應的配置文件中配置

7.Either log or rethrow this exception.

  解決方法: 把對應的輸出寫成Logger.error("aaa“);的形式 

 

      




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM