【廣告】
Sonarqube檢測(cè)
Sonar是一個(gè)用于代碼質(zhì)量管理的開(kāi)源平臺(tái),sonarqube 掃描報(bào)告,用于管理源代碼的質(zhì)量,可以從七個(gè)維度檢測(cè)代碼質(zhì)量,通過(guò)插件形式,可以支持包括java,C#,C/C ,PL/SQL,Cobol,JavaScrip,Groovy等等二十幾種編程語(yǔ)言的代碼質(zhì)量管理與檢測(cè)
Rules提示
當(dāng)然,這對(duì)于初學(xué)來(lái)說(shuō)是一個(gè)很好的教程,搞懂這些規(guī)則可以避免bugs的出現(xiàn),提供自己的開(kāi)發(fā)能力。
rule正確實(shí)例提示
糟糕的復(fù)雜度分布
文件、類、方法等,如果復(fù)雜度過(guò)高將難以改變,這會(huì)使得開(kāi)發(fā)人員難以理解它們, 且如果沒(méi)有自動(dòng)化的單元測(cè)試,對(duì)于程序中的任何組件的改變都將可能導(dǎo)致需要的回歸測(cè)試
重復(fù)
顯然程序中包含大量粘貼的代碼是質(zhì)量低下的 , sonar可以展示源碼中重復(fù)嚴(yán)重的地方
缺乏單元測(cè)試
sonar可以很方便地統(tǒng)計(jì)并展示單元測(cè)試覆蓋率
沒(méi)有代碼標(biāo)準(zhǔn)
sonar可以通過(guò)PMD,CheckStyle,代理商sonarqube 掃描報(bào)告,F(xiàn)indbugs等等代碼規(guī)則檢測(cè)工具規(guī)范代碼編寫(xiě)
沒(méi)有足夠的或者過(guò)多的注釋
沒(méi)有注釋將使代碼可讀性變差,特別是當(dāng)不可避免地出現(xiàn)人員變動(dòng)時(shí),程序的可讀性將大幅下降,而過(guò)多的注釋又會(huì)使得開(kāi)發(fā)人員將精力過(guò)多地花費(fèi)在閱讀注釋上,亦違背初衷
潛在的bug
sonar可以通過(guò)PMD,CheckStyle,F(xiàn)indbugs等等代碼規(guī)則檢測(cè)工具檢測(cè)出潛在的bug
糟糕的設(shè)計(jì)
通過(guò)sonar可以找出循環(huán),展示包與包、類與類之間的相互依賴關(guān)系,可以檢測(cè)自定義的架構(gòu)規(guī)則;
通過(guò)sonar可以管理第三方的jar包可以利用LCOM4檢測(cè)單個(gè)任務(wù)規(guī)則的應(yīng)用情況 ,檢測(cè)耦合
Sonarqube使用簡(jiǎn)介
5.SonarQube web UI –安全報(bào)告頁(yè)面
針對(duì)安全問(wèn)題,sonarqube提供了OWASP th10和SANS top25,熱點(diǎn)問(wèn)題檢查,并提供了聚合報(bào)告,提高對(duì)安全問(wèn)題的重視程度
6.SonarQube web UI –評(píng)估頁(yè)面
給出當(dāng)前項(xiàng)目的評(píng)估概況信息,大小,可靠性,重復(fù)率,覆蓋率等
7.SonarQube web UI –代碼頁(yè)面
以.java文件為依據(jù),給出各個(gè).java文件統(tǒng)計(jì)信息
8.SonarQube web UI –活動(dòng)頁(yè)面
頁(yè)面展示了每次代碼掃描的基本信息和代碼情況的折線圖,折線圖可以根據(jù)需要調(diào)整顯示bugs數(shù)量,代碼行數(shù),覆蓋率等信息
sonarqube問(wèn)題修改總結(jié)
三、可讀性問(wèn)題
1、用isEmpty()去做容器的空或者非空判斷。
說(shuō)明:Use isEmpty() to check whether the collection is empty or not.
原因:增加可讀性。
2、刪除沒(méi)有用的import、field、class、method。
原因:增加可維護(hù)性。
修改建議:刪除無(wú)用代碼塊、申明、方法和引用。
3、if語(yǔ)句被拆分不利于可讀
說(shuō)明:Merging collapsible if statements increases the code"s readability.
3、方法內(nèi)多個(gè)return出口
錯(cuò)誤示例:
解決建議:定義一個(gè)return,代理商sonarqube 掃描報(bào)告,賦值,中國(guó)sonarqube 掃描報(bào)告,統(tǒng)一返回。
4、修改了入?yún)⒄f(shuō)明:修改了入?yún)⒔档土舜a的可讀性,丟失了原始參數(shù)的值。
錯(cuò)誤示例:
5、用equalsIgnoreCase()方法替代字符串的無(wú)視大小寫(xiě)比較。
說(shuō)明:Replace these toUpperCase()/toLowerCase() and equals() calls with a single equalsIgnoreCase() call.
原因:參數(shù)應(yīng)當(dāng)是final的
解決建議,利用一個(gè)臨時(shí)變量充當(dāng)需要變動(dòng)的參數(shù)。
企業(yè): 蘇州華克斯信息科技有限公司
手機(jī): 13862561363
電話: 0512-62382981
地址: 蘇州工業(yè)園區(qū)新平街388號(hào)