SonarQube 搭建代碼質(zhì)量管理平臺(二)

通過 SonarQube 搭建代碼質(zhì)量管理平臺(一) 的介紹腻窒,如果每次都需要手動執(zhí)行 sonar-scanner 谓谦,想想也是醉了继找,所以我們需要進一步完善 SonarQube 進行自動化代碼分析耕捞。

從官方文檔的 Scanners 部分可以看出,Scanner 支持 MSBuild竖幔、Maven板乙、Gradle是偷、Ant拳氢、Jenkins 等募逞。本文將介紹使用 Jenkins 進行自動化代碼分析, 測試項目的代碼基于 .NET 開發(fā)馋评,所以會用到 MSBuild 相關(guān)命令放接。

安裝 Jenkins

根據(jù)操作系統(tǒng) 下載 Jenkins,我使用的是 Windows 留特,直接都下一步就可以了纠脾。

Windows 環(huán)境下 Jenkins 安裝后默認登錄身份是 “本地系統(tǒng)”,會無法訪問蜕青,所以需要修改登錄身份苟蹈,我這里使用的是賬戶方式

Jenkins 登錄身份

啟動成功后訪問 http://localhost:8080/

Jenkins 配置 Github

  1. 在 Github 生成 Personal access tokens,設(shè)置 token 相關(guān)權(quán)限

    access token

    access token scope
  2. Jenkins 配置 GitHub Server

    Jenkins 安裝后默認已包含 GitHub右核,在 “系統(tǒng)管理” => “系統(tǒng)設(shè)置” 中找到 Github慧脱,然后在 Credentials 處添加全局憑據(jù),類型選 Secret text贺喝,Secret 處輸入上一步生成的 access token

    GitHub Server
    Secret text

添加完成后可點擊 Test connection 進行測試

如果使用的是 Gitlab菱鸥,需要在 Jenkins 中安裝 Gitlab 插件,全局憑據(jù)添加 GitLab API token躏鱼,token 使用 Gitlab Account 下的 Private token氮采, 其他配置基本類似

Jenkins 配置 SonarQube

  1. 在 SonarQube 中生成 Server authentication token

    登錄 SonarQube 后,在 “My Account” => “Securiy” 中生成 toekn

    SonarQube token

    重新進入這個頁面之前生成的 token 就看不到的染苛,只能看到一次鹊漠,我呵呵

  2. 在 Jenkins 的管理插件中安裝 SonarQube Scanner 插件

  3. 配置 SonarQube Sever,這部分和配置 GitHub Server 類似茶行,在 “系統(tǒng)管理” => “系統(tǒng)設(shè)置” 中找到 SonarQube servers
    Name:隨意贸呢;
    Server URL:為啟動的 SonarQube 服務(wù)地址,我這里使用本地啟動的默認地址 http://localhost:9000 拢军;
    Server authentication token: 輸入之前生成的 token楞陷;

    SonarQube server
  4. 配置 SonarScanner for MSBuild

    在 “系統(tǒng)管理” => “全局工具配置” 找到 SonarScanner for MSBuild(
    測試項目是基于 .NET),官方提供了 .NET Framework 和 .NET Core 兩個版本茉唉,我們可以先都加上固蛾,之后根據(jù)實際項目選擇使用哪個。有兩中方式配置 MSBUILD_SQ_SCANNER_HOME度陆,可以選擇自動安裝或手動配置艾凯,手動配置需要單獨下載,我使用的是手動配置方式

    SonarScanner for MSBuild

Jenkins 任務(wù)配置

上面是 Jenkins 的一些全局配置懂傀,下面需要對單個任務(wù)進行配置趾诗。新建一個 “構(gòu)建一個自由風格的軟件項目” 類型的任務(wù) “Test”

配置項目的倉庫地址,這個項目就是要進行代碼分析的項目,在 Credentials 處添加憑據(jù)恃泪,這里添加一個用戶名密碼類型的憑據(jù)(其他類型的也可以郑兴,能訪問這個倉庫即可)。在添加憑據(jù)后贝乎,會自動檢測是否有效情连,如果無效會直接出現(xiàn)錯誤提示

Task Config
Username with password

在 “構(gòu)建” 中增加構(gòu)建步驟:

Build steps
  1. SonarScanner for MSBuild - Begin Analysis

    SonarScanner for MSBuild:選擇基于 .NET Framework,因為 Test 項目是基于 .NET Framework览效;
    Project key: 在 SoanrQube 中的項目 key却舀;
    Project name:在 SoanrQube 顯示的項目名稱,如果不填锤灿,則顯示 Project key挽拔;
    Project version:版本號;
    Additional arguments:其他參數(shù)但校,比如可以設(shè)置只檢測某種語言(/d:sonar.language=cs)篱昔、排除哪些文件(夾) 等,參考始腾;

  2. 執(zhí)行 Windows 批處理命令

    先通過 nuget restore(如果沒有安裝 nuget 命令的需要提前安裝) 還原依賴的 NuGet 包州刽,然后使用 MSBuild 批處理命令重新生成項目。這一步 Build 可能會出現(xiàn)各種奇葩的問題浪箭,主要就是少了一些依賴包穗椅,建議在安裝 Jenkins 的機器安裝上 VS,然后將 MSBuild 加入環(huán)境變量奶栖,我的機器添加了兩個路徑:

    C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin
    C:\Program Files (x86)\NuGet
    
  3. SonarScanner for MSBuild - End Analysis

配置完成后保存匹表,然后點擊 “立即構(gòu)建” 試試效果,構(gòu)建成功后我們將通過 SonarQube UI 看到對 Test 項目的分析結(jié)果

Analysis result

這就實現(xiàn)了將 Jenkins 與 SonarQube 關(guān)聯(lián)起來宣鄙,代碼構(gòu)建完成后會把結(jié)果發(fā)送到 SonarQube 中袍镀,我們還可以根據(jù)需要在 Jenkins 任務(wù)中設(shè)置構(gòu)建執(zhí)行時間,比如每天早上9點執(zhí)行一次

Trigger time

SonarQube 中有 Webhook 的功能冻晤,當接收到一次提交苇羡,可以將這次的分析結(jié)果發(fā)送給設(shè)置的 Webhook 地址,這樣我們可以通過消息(比如短信鼻弧、郵件设江、微信等)將有問題的分析結(jié)果及時的通知到相關(guān)負責人

參考鏈接

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市攘轩,隨后出現(xiàn)的幾起案子叉存,更是在濱河造成了極大的恐慌,老刑警劉巖度帮,帶你破解...
    沈念sama閱讀 218,525評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件歼捏,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機瞳秽,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,203評論 3 395
  • 文/潘曉璐 我一進店門瓣履,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人寂诱,你說我怎么就攤上這事拂苹“财福” “怎么了痰洒?”我有些...
    開封第一講書人閱讀 164,862評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長浴韭。 經(jīng)常有香客問我丘喻,道長,這世上最難降的妖魔是什么念颈? 我笑而不...
    開封第一講書人閱讀 58,728評論 1 294
  • 正文 為了忘掉前任泉粉,我火速辦了婚禮,結(jié)果婚禮上榴芳,老公的妹妹穿的比我還像新娘嗡靡。我一直安慰自己,他們只是感情好窟感,可當我...
    茶點故事閱讀 67,743評論 6 392
  • 文/花漫 我一把揭開白布讨彼。 她就那樣靜靜地躺著,像睡著了一般柿祈。 火紅的嫁衣襯著肌膚如雪哈误。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,590評論 1 305
  • 那天躏嚎,我揣著相機與錄音蜜自,去河邊找鬼。 笑死卢佣,一個胖子當著我的面吹牛重荠,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播虚茶,決...
    沈念sama閱讀 40,330評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼晚缩,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了媳危?” 一聲冷哼從身側(cè)響起荞彼,我...
    開封第一講書人閱讀 39,244評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎待笑,沒想到半個月后鸣皂,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,693評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,885評論 3 336
  • 正文 我和宋清朗相戀三年寞缝,在試婚紗的時候發(fā)現(xiàn)自己被綠了癌压。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,001評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡荆陆,死狀恐怖滩届,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情被啼,我是刑警寧澤帜消,帶...
    沈念sama閱讀 35,723評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站浓体,受9級特大地震影響泡挺,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜命浴,卻給世界環(huán)境...
    茶點故事閱讀 41,343評論 3 330
  • 文/蒙蒙 一娄猫、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧生闲,春花似錦媳溺、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,919評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至冲茸,卻和暖如春屯阀,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背轴术。 一陣腳步聲響...
    開封第一講書人閱讀 33,042評論 1 270
  • 我被黑心中介騙來泰國打工难衰, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人逗栽。 一個月前我還...
    沈念sama閱讀 48,191評論 3 370
  • 正文 我出身青樓盖袭,卻偏偏與公主長得像,于是被迫代替她去往敵國和親彼宠。 傳聞我的和親對象是個殘疾皇子鳄虱,可洞房花燭夜當晚...
    茶點故事閱讀 44,955評論 2 355

推薦閱讀更多精彩內(nèi)容