spring boot使用sonarqube來檢查技術(shù)債務(wù)
作為代碼質(zhì)量檢查的流行工具,比如Sonarqube能夠檢查代碼的“七宗罪”,跟代碼結(jié)合起來能夠更好地提高代碼的質(zhì)量,讓我們來看一下,剛剛寫的Springboot2的HelloWorld的代碼有什么“罪”。
Sonarqube
Sonarqube可以使用docker版本快速搭建,可以參看一下Easypack整理的鏡像,具體使用可以參看如下鏈接,這里不再贅述:
環(huán)境假定
本文使用到的sonarqube為本機(jī)32003可以訪問到的服務(wù)。
掃描方式
可以使用sonar-scanner或者mvn sonar:sonar的方式對代碼進(jìn)行掃描,因?yàn)檫@里不是sonarqube的展開,只是解釋如何與之進(jìn)行集合,這篇文章使用更為便利的方式即mvn sonar:sonar。
使用命令:mvn sonar:sonar -Dsonar.host.url=http://localhost:32003
如果使用缺省的9000端口,-D可以不必使用,雖然這里都可以指定,為了避免初入者進(jìn)坑太多,這里還是盡可能的一切從簡。
結(jié)果確認(rèn)

掃描結(jié)果確認(rèn)

確認(rèn)之后發(fā)現(xiàn),有一個(gè)Bugs&Vulnerabilities。我們來確認(rèn)一下相關(guān)詳細(xì)信息:

然而,這是一個(gè)誤報(bào),詳細(xì)可參看:
對應(yīng)措施
因?yàn)榇诵惺且粋€(gè)誤報(bào),所以直接在該行添加//NOSONAR即可除外。另外為了驗(yàn)證其效果,我們添加一行:String msg = “Unused Message variable”;
再執(zhí)行&結(jié)果確認(rèn)
使用命令:mvn sonar:sonar -Dsonar.host.url=http://localhost:32003
可以看到,Bugs已經(jīng)沒有了,但是因?yàn)樵黾拥囊恍?,出現(xiàn)了兩個(gè)Code Smells的問題。

具體確認(rèn)詳細(xì)信息:

因?yàn)镾onar認(rèn)為此行代碼沒有被使用到,所以是無用的語句應(yīng)該刪除。當(dāng)然這里的分析,即使沒有使用springboot的框架,只要是通過maven進(jìn)行整合的方式都是可以的。
代碼覆蓋率
但是需要注意到,這里沒有代碼覆蓋率,在下篇文章中將介紹如何在Spring boot的項(xiàng)目中通過Jacoco與之結(jié)合來引入代碼覆蓋率的確認(rèn)。
小結(jié)
使用SonarQube可以很好的檢查出代碼的問題,但是在實(shí)際的項(xiàng)目中需要進(jìn)行裁剪和定制,掃出來的不一定有問題,沒有掃出來也不一定萬事大吉,但是一定程度的代碼規(guī)范和質(zhì)量提高還是很有用處,實(shí)際在使用的時(shí)候應(yīng)該根據(jù)具體情況進(jìn)行實(shí)施。
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請查看下面相關(guān)鏈接
相關(guān)文章
Java數(shù)組擴(kuò)容實(shí)現(xiàn)方法解析
這篇文章主要介紹了Java數(shù)組擴(kuò)容實(shí)現(xiàn)方法解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-11-11
解決mybatis generator MySQL自增ID出現(xiàn)重復(fù)問題MySQLIntegrityC
在MySQL中使用MyBatis時(shí),可能會(huì)遇到由于主鍵重復(fù)導(dǎo)致的插入失敗問題,此問題通常發(fā)生在連續(xù)插入多條數(shù)據(jù)時(shí),如果selectKey的order配置錯(cuò)誤,如使用BEFORE而不是AFTER,將會(huì)導(dǎo)致獲取的ID未更新,引起主鍵重復(fù)錯(cuò)誤,正確的配置應(yīng)使用AFTER2024-10-10
spring AOP的After增強(qiáng)實(shí)現(xiàn)方法實(shí)例分析
這篇文章主要介紹了spring AOP的After增強(qiáng)實(shí)現(xiàn)方法,結(jié)合實(shí)例形式分析了spring面向切面AOP的After增強(qiáng)實(shí)現(xiàn)步驟與相關(guān)操作技巧,需要的朋友可以參考下2020-01-01
Log4j定時(shí)打印日志及添加模塊名配置的Java代碼實(shí)例
這篇文章主要介紹了Log4j定時(shí)打印日志及添加模塊名配置的Java代碼實(shí)例,Log4j是Apache的一個(gè)開源Java日志項(xiàng)目,需要的朋友可以參考下2016-01-01
淺談Java(SpringBoot)基于zookeeper的分布式鎖實(shí)現(xiàn)
這篇文章主要介紹了Java(SpringBoot)基于zookeeper的分布式鎖實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-03-03
@Async導(dǎo)致controller?404及失效原因解決分析
這篇文章主要為大家介紹了@Async導(dǎo)致controller?404失效問題解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-07-07
Java 并發(fā)編程:volatile的使用及其原理解析
下面小編就為大家?guī)硪黄狫ava 并發(fā)編程:volatile的使用及其原理解析。小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-05-05

