參考官方地址:https://docs.sonarqube.org/display/PLUG/GitHub+Plugin
運行環境:sonarQube6.2 + sonarScanner2.8
近來,使用sonarQube的次數比較少,項目中主要是使用Visual Studio Team Service + sonarQube的方式對代碼進行掃描(每一次Pull Request經過Merge之后會自動觸發Build從而每次掃描最新的代碼),代碼都是存在於Github中,查看資料時發現當開發員將新代碼提交一個Pull Request可以對代碼進行掃描(是否可以是自動??)
我現時測試的功能是使用創建Pull Request后,已經知道了Pull Request ID后再進行手動的掃描,並將掃描的結果放入至Github的Pull Request中的留言框中。
開始前需要滿足兩個條件
- 已經安裝sonarQube服務器(這個是肯定的啦,沒有sonarQube將無從談起)
- 正常運行的sonarQube服務器已經安裝Github插件
接下來就是我們需要設置的步驟了
一、在Github網站中生成token
打開Github網站,登陸並打開個人設置,點擊Personal access tokens,然后在右邊點擊Generate new token
輸入token的描述,權限方面只需要選擇public_repo,保存當前設置,並將生成的token值保存好,運行sonarScanner需要token作為參數運行。
二、在sonarQube網站中生成token
打開sonarQube網站並登陸,這里我使用admin進行登陸
在主頁點擊Administrator
在跳轉的頁面中,選擇Security>>>Users
點擊Tokens,這里,我已經創建了一個Token所以會提醒修改Token
在彈出框中輸入Token Name也相當於一個描述,並將生成的token值保存好,運行sonarScanner需要token作為參數運行。
三、在Github中提交新的Pull Request
如使用Github的都明白,就是將兩個代碼版本進行合並
四、運行sonarScanner命令
按官網上的說法運行sonarScanner命令需要的參數如下,並給出了一個示例,在試了很多次以后還是發現不能正常掃描代碼
運行命令,我這里將Github Token和sonarQube Token都使用X代替,至於參數-X是因為我想在運行時得到更多的調試信息,要在運行時,還是需要指定參數projectKey和sources
sonar-scanner -X -Dsonar.analysis.mode=preview -Dsonar.github.pullRequest=4 -Dsonar.github.repository=Somebody/SampleProject -Dsonar.github.oauth=XXXXXXXXXXXXXXXX -Dsonar.host.url=http://localhost:9000/ -Dsonar.login=XXXXXXXXXXXXXXXX
加入兩個參數后變成以下的樣式,運行完成后,會發現在Github的Pull Request中會增加很多的Comment信息,關於信息,還需要再查看是否正確
sonar-scanner -X -Dsonar.analysis.mode=preview -Dsonar.github.pullRequest=4 -Dsonar.github.repository=Somebody/SampleProject -Dsonar.github.oauth=XXXXXXXXXXXXXXXX -Dsonar.host.url=http://localhost:9000/ -Dsonar.login=XXXXXXXXXXXXXXXX -Dsonar.sources="." -Dsonar.projectKey="sampleProject"
在這里,我嘗試的結果是,在Github Pull Request 中會增加Comment,但是掃描中途會遇到錯誤,然后就會出現Pull Request中說還未分析完成的情況,這是一個問題,需要解決。
最后公開一下我個人寫的一個小工具,github pull request掃描的功能也在其中,請參考代碼https://github.com/ChenWes/sonarQubeScanner/tree/development