Git+Maven+Sonar實(shí)現(xiàn)提交代碼前進(jìn)行代碼的質(zhì)量檢查一、前言
為了規(guī)范代碼質(zhì)量,使開發(fā)人員寫出更高質(zhì)量的代碼,實(shí)踐了一下git-hooks中的pre-commit鉤子,可以在提交代碼時(shí)強(qiáng)制校驗(yàn)本地代碼質(zhì)量,若不符合指定規(guī)則不給予代碼的提交 。
二、git的鉤子hook 介紹
和其它版本控制系統(tǒng)一樣,Git 能在特定的重要?jiǎng)幼靼l(fā)生時(shí)觸發(fā)自定義腳本 。有兩組這樣的鉤子:客戶端的和服務(wù)器端的 ??蛻舳算^子由諸如提交和合并這樣的操作所調(diào)用,而服務(wù)器端鉤子作用于諸如接收被推送的提交這樣的聯(lián)網(wǎng)操作 。你可以隨心所欲地運(yùn)用這些鉤子 。
鉤子都被存儲(chǔ)在 Git 目錄下的 hooks 子目錄中 。也即絕大部分項(xiàng)目中的 .git/hooks,默認(rèn)存在的都是示例,其名字都是以 .sample 結(jié)尾,如果你想啟用它們,得先移除這個(gè)后綴 。把一個(gè)正確命名且可執(zhí)行的文件放入 Git 目錄下的 hooks 子目錄中,即可激活該鉤子腳本 。這樣一來,它就能被 Git 調(diào)用 。
本次方案實(shí)現(xiàn)效果就是通過pre-commit鉤子實(shí)現(xiàn) 。
三、sonar的介紹
Sonar是一個(gè)用于代碼質(zhì)量管理的開源平臺(tái),用于管理源代碼的質(zhì)量,可以從七個(gè)維度檢測(cè)代碼質(zhì)量 。
通過插件形式,可以支持包括java,C#,C/C++,PL/SQL,Cobol,JavaScrip,Groovy等等二十幾種編程語言的代碼質(zhì)量管理與檢測(cè) 。
3.1、sonar支持的客戶端
除了數(shù)據(jù)庫和web服務(wù)器之外,Sonar還有很重要的一部分:客戶端 ??蛻舳耸褂镁唧w的程序工具進(jìn)行分析,不同的語言,不同的項(xiàng)目構(gòu)建類型可以使用不同的客戶端程序 。
Sonar提供很多類型的客戶端:
客戶端說明Sonar Runner推薦默認(rèn)客戶端Maven如果項(xiàng)目使用Maven構(gòu)建推薦使用此種方式Ant如果項(xiàng)目使用ant構(gòu)建則推薦CI Engine持續(xù)集成,比如Hudson,Jenkins本次正是通過Maven插件方式實(shí)現(xiàn)sonar掃描 。
四、正文
4.1、在Java項(xiàng)目配置pom.xml
4.1.1、pom.xml中增加如下插件

4.1.2、該插件可以使得在install以后在git本地倉庫的.githooks目錄下生成一份自定義的pre-commit文件,該文件是git進(jìn)行提交代碼執(zhí)行的鉤子函數(shù),函數(shù)內(nèi)容在插件pre-commit中可以編寫,如下圖:


4.1.2、在pom文件繼續(xù)添加sonar相關(guān)的插件


該插件能夠使項(xiàng)目通過sonar:sonar命令實(shí)現(xiàn)項(xiàng)目的sonar掃描,其中sonar.login為登陸的token,sonar.host.url為sonar服務(wù)的URL,sonar.projectKey為自定義的項(xiàng)目Key(可選)
獲取token的辦法,首先通過登錄sonar服務(wù)器,再如下圖操作:

五、結(jié)果驗(yàn)證如圖所示,通過maven sonar:sonar命令可以對(duì)項(xiàng)目執(zhí)行代碼質(zhì)量掃描,如果出現(xiàn)如下結(jié)果證明這個(gè)sonar插件有效 。

再打開sonar WBE端查看,可以看到項(xiàng)目的報(bào)告已經(jīng)生成 。

四、嘗試git提交代碼執(zhí)行sonar4.1、首先要通過mvn install 命令把鉤子腳本生成 。
假設(shè)install項(xiàng)目成功了,打開項(xiàng)目所在的.githooks 目錄查看,將看到pre-commit 文件,打開文件查看會(huì)發(fā)現(xiàn)所編寫的腳本內(nèi)容正是在githook-maven-plugin插件編寫的shell腳本內(nèi)容,此時(shí)證明該插件已經(jīng)生效 。
推薦閱讀
- 緋紅結(jié)系精準(zhǔn)閃避怎么觸發(fā) 緋紅結(jié)系精準(zhǔn)閃避觸發(fā)方法介紹
- 我的俠客丐幫主線怎么觸發(fā) 我的俠客丐幫主線觸發(fā)方法
- 我的俠客奇遇怎么觸發(fā) 我的俠客奇遇觸發(fā)方法攻略
- 我的世界地下城dlc隱藏關(guān)熊貓?jiān)趺撮_ dlc第一個(gè)圖觸發(fā)方法
- mc地下城叢林關(guān)神廟下層怎么進(jìn) 叢林關(guān)神廟下層觸發(fā)方法
- 我的俠客結(jié)局達(dá)成條件一覽 我的俠客不同結(jié)局怎么觸發(fā)
- 如龍極真島短信全觸發(fā) 如龍極真島短信全觸發(fā)講解
- 《如龍:極》真島觸發(fā)地點(diǎn)及亞門打法心得
- 《如龍:極》真島趴趴走全事件觸發(fā)條件一覽
- 對(duì)馬島之魂傳說支線有哪些 對(duì)馬之鬼傳說支線觸發(fā)條件一覽
