sonar常見問題分析

ii_chengzi發表於2019-01-18
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“);的形式 。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31543790/viewspace-2564121/,如需轉載,請註明出處,否則將追究法律責任。