【轉】使用sonar為你的代碼質量保駕護航


一. 簡介
Sonar是一個用於代碼質量管理的開放平台,相信大家都不會陌生。Sonar可以集成不同的測試工具,代碼分析工具,以及持續集成工具。官方網站https://www.sonarqube.org 

二. Sonar的三種用法

  1. 編寫代碼時做實時代碼檢查,有問題直接IDE里提示。參考https://www.sonarlint.org 
  2. 提交代碼自動觸發檢測+輔助code review。插件說明:https://gitlab.talanlabs.com/gabriel-allaigre/sonar-gitlab-plugin 
  3. 定時全局代碼檢測

這三種方法分別發生在代碼開發的3個時間階段。很容易看到,第1種方式實際上是效率最高的。也推薦大家在自己的IDE里裝上這個插件,將bug和不合規的代碼扼殺在搖籃中。第3種用法則是一種事后的問題曝光,當發現時bug很可能已經進入master分支。如果沒有前面2種用法,bug會持續不斷的進入master分支,也缺乏對開發人員的有效提醒。
這篇文章主要說的是第二種方法

三. 為你的工程開啟gitlab pipelines
1. 確保你有工程的master權限
2. 若看不見Settings/CICD這一欄,需要先打開Settings/General,確保Sharing and permissions 下的Pipelines不是disable的狀態

 


3. 打開http://git.51.nb/你的工程地址/settings/ci_cd,並Enable sonar runner

 


4. 在工程根目錄添加.gitlab-ci.yml文件(dev分支):

sonar:   stage: test   script:      - ~/sonar.sh   tags:     - sonar
說明:只掃描提交的代碼,會過濾非java文件,過濾測試代碼

四. 使用場景
場景1:提交代碼自動掃描(注意,只掃描更改的文件),郵件通知作者本次提交有bug需要改

 


點擊鏈接查看,sonar會自動在代碼里加comment:

 

最下方展示該提交文件其他bug:

 


Sonar自動給你的gitlab添加todos:

 

場景2:merge request,code review,若存在bug,審核者可選擇不予通過

 

場景3:每次掃描全部代碼

.gitlab-ci.yml文件內容:

 sonar:  stage: test   script:      - ~/sonar.sh -a   tags:     - sonar

 
場景4:特定分支掃描

.gitlab-ci.yml文件內容:

 sonar:  stage: test   script:      - ~/sonar.sh   tags:     - sonar   only:     - master     - release     - dev


 場景5:查看問題+定制化

在gitlab上系統的查看問題還是比較麻煩,我們可以進入http://10.247.22.137:9000/projects 查看問題。注意,這個是為gitlab提交自動掃描專門搭建的最新版的sonar,不同於公司現在用的sonar.51.nb:9000。如果覺得問題檢測對於自己的代碼塊是誤報,在經過直屬上級的評估后可以將此規則基於該項目降級。


五. 要求

  • 對於p0,p1的java應用,強烈建議開啟以上代碼檢測!
  • 其他級別的應用視情況開啟即可


六. 后續計划

  • 任務由單機改為docker化,提升性能。
  • 和ares平台打通

結語
相信閱讀本文的各位開發同學都不想僅限於代碼的搬運工,Sonar就像是個代碼經驗極其豐富的老師,他會任勞任怨的幫助我們完善自己代碼,讓我們的code變得更健壯、更規范、更優雅。雖然有時候某些issue看上去不是什么大問題,但即使只是防御代碼,也會有它的價值所在。希望大家都能成為有“代碼潔癖”的程序猿 14.gif


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM