Sonar常見問題解決方案_第1頁
Sonar常見問題解決方案_第2頁
Sonar常見問題解決方案_第3頁
Sonar常見問題解決方案_第4頁
Sonar常見問題解決方案_第5頁
已閱讀5頁,還剩1頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

經(jīng)典word整理文檔,僅參考,雙擊此處可刪除頁眉頁腳。本資料屬于網(wǎng)絡(luò)整理,如有侵權(quán),請聯(lián)系刪除,謝謝!Sonar常見問題解決方案原創(chuàng)2017年08月30日12:20:59阻斷1、Closethis"FileInputStream"ina"finally"clause.在finally中關(guān)閉FileInputStream,這個最為常見,主要是關(guān)閉方式不對,finally代碼塊中,應(yīng)該要對每個stream進行單獨關(guān)閉,而不能統(tǒng)一寫在一個try-catch代碼中,jdk7可以考慮try-resources方式關(guān)閉,代碼相對優(yōu)雅。另外數(shù)據(jù)庫操作的statement和resultRs沒有關(guān)閉的情況也非常多。這個也是要重點留意的地方。2、A"NullPointerException"couldbethrown;"tom"isnullablehere中,就會第一時間考慮到這類情況,并做相應(yīng)的處理。解決方式無它,先判斷或者先實例化,再訪問里面的屬性或者成員。嚴重1、Defineandthrowadedicatedexceptioninsteadofusingagenericone定義并拋出一個專用的異常來代替一個通用的異常。2、Removethishard-codedpassword移除代碼里硬編碼的密碼信息。會有少許的誤判的情況,一般是變量包含:PWD或者password,所以如果真的不是硬編碼,可以考慮更換變量名稱,比如PWD改PW等等。3、Eitherlogorrethrowthisexceptioncatch異常之后,使用log方式或者throw異常的方式解決。如果業(yè)務(wù)上真的沒有throw或者記錄日志的話,可以使用log.debug的方式填充來解決問題。4、MakethisIP""addressconfigurable將IP弄到配置文件中,不要硬編碼到代碼里。個人覺得改動稍大!5、Makethis"publicstaticJSAPI"fieldfinal如果你將這個變量設(shè)置為publicStatic慮將它設(shè)置為final別的值。所以如果是只是當(dāng)前類使用,可以考慮將公開訪問方式改為私有。6、Maketheenclosingmethod"static"orremovethisset見代碼:publicclassMyClass{privatestaticintcount=0;publicvoiddoSomething(){count++;//Noncompliant}實例和/或多個線程,則很容易導(dǎo)致錯誤。理想情況下,靜態(tài)字段僅從同步靜態(tài)方法中更新。7、Override"equals(Objectobj)"tocomplywiththecontractofthe"compareTo(To)"method如果重寫了compareTo方法,同時也應(yīng)重寫equals方法。8、Make"body"transientorserializable.publicclassAddress{privatestaticfinallongserialVersionUID=1905122041950251207L;如果person已經(jīng)序列化,其成員變量Address也進行序列化。不然轉(zhuǎn)化時會有問題。9Floatingpointnumbersshouldnotbetestedforequality浮點類型的數(shù)字,不要通過==或者!=方式其它類型比較,因為浮點是不精確的,所以在比較時,會進行類型升級升級原則如下:·如果運算符任意一方的類型為double,則另一方會轉(zhuǎn)換為double·否則,如果運算符任意一方的類型為float,則另一方會轉(zhuǎn)換為float·否則,如果運算符任意一方的類型為long,則另一方會轉(zhuǎn)換為long·否則,兩邊都會轉(zhuǎn)換為int以下的方式得到的結(jié)果都是false。floatmyNumber=3.146;if(myNumber==3.146f){//Noncompliant.Becauseoffloatingpointimprecision,thiswillbefalseif(myNumber!=3.146f){//Noncompliant.Becauseoffloatingpointimprecision,thiswillbetrueif(zeroFloat==0){//Noncompliant.Computationsmayendupwithavalueclosebutnotequaltozero.}所以,要比較浮點數(shù)是否相等,需要做的事情是:排除NaN和無窮在精度范圍內(nèi)進行比較正確的例子:if(Double.isNaN(a)||Double.isNaN(b)||Double.isInfinite(a)||Double.isInfinite(b)){}10、Thiscallto"contains()"maybeaperformancehotspotifthecollectionislarge.如果collectioncontains方法的時間復(fù)雜度是很高的。所以開發(fā)過程中要注意這一點。下面的是列表:·Concu

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論