目的
- 藉助sonar平臺分析和管理項目代碼質量
- sonar是一個用於代碼質量管理的開放平臺,sonar提供潛在bug、漏洞、代碼重複率等指標,進而提升項目代碼質量。
sonar-scanner 命令
- sonar-scanner作用是掃描項目代碼併發送掃描結果到sonar平臺
使用sonar-scanner的docker鏡像可省去sonar-sanner命令所需環境搭建,更現代化:
$ docker pull kiwicom/sonar-scanner:4.3
$ cd 項目代碼目錄
$ docker run -it --user=root --net=host --rm --name sonar-scanner -v `pwd`:/usr/src kiwicom/sonar-scanner:4.3 sonar-scanner -X -Dsonar.projectKey=項目名稱 \
-Dsonar.sources=./gateway \
-Dsonar.host.url=地址\
-Dsonar.login=240b6e0e62XXXXXXXXX
- -it:交互形式執行
- –user=root:容器中使用root用戶權限
- –net=host:容器使用宿主機網絡環境
- –rm:容器執行完後即刪除
- –name sonar-scanner:容器名稱
- -v:當前項目目錄掛載到容器/usr/src目錄下
- -X:sonar-scanner命令參數,能打印出有用info信息
gitlab-ci中集成sonar-scanner命令
.gitlab-ci.yml文件中的內容:以JS語言爲例,檢測需要排除node_modules文件夾
stages:
- lint
lint_code:
stage: lint
image:
name: kiwicom/sonar-scanner:4.3
allow_failure: true
only:
- master
variables:
SONAR_HOST_URL: 'http://sonar.某某.com/'
SONAR_LOGIN: 'dcbc13e某某某'
SONAR_PROJECTKEY: '項目名稱某某'
SONAR_SOURCES: './src'
script:
- sonar-scanner -X -Dsonar.projectKey=$SONAR_PROJECTKEY -Dsonar.sources=$SONAR_SOURCES -Dsonar.host.url=$SONAR_HOST_URL -Dsonar.login=$SONAR_LOGIN
- sonar-scanner -X -Dsonar.projectKey=$SONAR_PROJECTKEY -Dsonar.sources=$SONAR_SOURCES -Dsonar.host.url=$SONAR_HOST_URL -Dsonar.login=$SONAR_LOGIN -Dsonar.exclusions='**/node_modules/**'
- only:指定stage分支執行本任務
- SONAR_HOST_URL:sonar平臺
- SONAR_LOGIN:sonar平臺登錄憑證,sonar平臺【我的賬戶->安全->生成令牌】
- SONAR_PROJECTKEY:項目名稱
- SONAR_SOURCES:項目掃描路徑
將代碼推到遠程分支,sonar開始檢測代碼質量
出現綠色的Job succeeded
表明已完成,可以去sonar平臺看看檢測結果了。
查看結果
emm…勉勉強強吧,這重複率還是有點高的哈,繼續看看詳細的結果
都不是什麼大的bug哈,全是一些可以進行優化的代碼片段
有一說一,sonarqube是真的很貼心了
它不僅能把問題點標出來,還能給你提供相應的解決辦法。
評級可還行,能拿五好學生,順利畢業了。
支持哪些語言
各路英雄好漢最關心的問題來了,本文的示例是基於JavaScript語言,那麼sonarqube還能支持哪些編程語言的代碼檢測呢?
- Java
- Python
- JavaScript
- PHP
- TypeScript
- HTML
- Kotlin
- Go
- YAML
- CSS
- XML
- JSP
不僅如此,連各種語言對應的規則都有詳細介紹
這一波,我的確被圈粉了。
繼續探索去了~