SonarQube介紹
介紹
SonarQube 是一個用于代碼質(zhì)量管理的開源平臺,用于管理源代碼的質(zhì)量。同時 SonarQube 還對大量的持續(xù)集成工具提供了接口支持,可以很方便地在持續(xù)集成中使用 SonarQube.
支持范圍
通過插件形式,可以支持包括 Java,C#,C/C++、PL/SQL、Cobol、JavaScrip、Groovy、Ruby 、python等二十五種編程語言的代碼質(zhì)量管理與檢測,針對不同的編程語言其所提供的分析方式也有所不同:對于所有支持的編程語言,SonarQube 都提供源了代碼的靜態(tài)分析功能;對于某些特定的編程語言,SonarQube 提供了對編譯后代碼的靜態(tài)分析功能。
SonarQube 支持多種客戶端集成方式,包括但不限于 Scanner 客戶端、Ant、Gradle、Maven、Jenkins、IDEA 、DevOps插件等。比較常用的為 Gradle 和 Maven。
原理
SonarQube 并不是簡單地將各種質(zhì)量或覆蓋率檢測工具的結(jié)果(例如 CheckStyle、JaCoCo 等)直接展現(xiàn)給客戶,而是通過不同的插件算法來對結(jié)果進(jìn)行再加工,并最終以量化的方式來衡量代碼質(zhì)量,從而方便地對不同規(guī)模和種類的工程進(jìn)行相應(yīng)的代碼質(zhì)量管理,以便進(jìn)行有針對性的代碼修復(fù)或重構(gòu)。
AzureDevops 配置與安裝SonarQube
前面大概介紹了SonarQube是什么,他可以幫我們來靜態(tài)檢測我們的項目代碼質(zhì)量?,F(xiàn)在我們來具體實踐一下吧。
背景介紹
本篇主要介紹一個使用
1.python寫的一個項目。這個項目主要用來檢測。
2.然后使用Azure DevOps 組織創(chuàng)建和一個項目,初始化一個存儲庫。
3.使用一臺云 Ubuntu虛擬機當(dāng)作編譯機
4.在使用一臺云 虛擬機作為SonarQube服務(wù)器(我們這里使用上面的編譯機(Ubuntu虛擬機)作為服務(wù)器)。
過程
1.我們在本地準(zhǔn)備一個python項目(其它語言的也可以),然后將項目push到我們準(zhǔn)備的AzureDevOps上的存儲庫。
2.然后配置我們Azure 項目的編譯機,配置好之后,安裝Sonarqube。安裝成功之后訪問驗證是否正常運行。
3.然后回到我們的AzureDevOps集成我們創(chuàng)建的SonarQube,(修改/創(chuàng)建)我們的管道。
4.查看SonarQube檢測結(jié)果。
過程1(準(zhǔn)備項目)
我們按照過程的步驟來慢慢配置:
首先我們創(chuàng)建一個python項目,不用很復(fù)雜,然后上傳到我們的AzureRepos倉庫中。
過程2(配置agent & SonarQube)
我們準(zhǔn)備一臺AzureUbuntu虛擬機登錄到虛擬機。
配置Agent
我之前的文章中講到過配置Windos虛擬機,其實大同小異,今天我們看一下如何配置Linux虛擬機agent。
1.我們點開Azure DevOps -> Project Settings->Agent Pools-> Add pool-> New Agent->轉(zhuǎn)到Linux
因為我們配置的agent是Linux的所以我們需要轉(zhuǎn)到Linux,我們可以采用URL的方式下載Agent配置文件。(點擊下圖標(biāo)注即可復(fù)制URL)
配置Linux Agent
1.然后我們回到虛擬機,首先我們更新一下鏡像源
sudo apt-get update
sudo apt-get upgrade
2.wget URL 可以下載我們所需要的壓縮文件
我們需要下載wget工具
sudo apt-get install wget
3.然后我們可以查看一下版本,驗證是否安裝成功。
wget --version
4.然后我們可以先創(chuàng)建一個文件夾,用于存儲agent配置文件
mkdir myagent && cd myagent
5.然后我們在myagent文件夾內(nèi)下載壓縮包
sudo wget https://vstsagentpackage.azureedge.net/agent/3.230.0/vsts-agent-linux-x64-3.230.0.tar.gz
6.解壓縮然后運行config.sh文件
sudo tar zxvf vsts-agent-linux-x64-3.230.0.tar.gz
ls
7.運行config.sh文件開始配置
./config.sh
(1).第一步我們直接’Enter’接受一些協(xié)議什么的
(2).輸入我們DevOsserver的URL,到組織即可:
我們Azure DevOps的URL
https://dev.azure.com/MyOrgTeam/
(3).身份驗證我們直接回車即可
(4).personal access token,我們返回Azure DevOps 如下圖.
注意token只顯示一次,頁面關(guān)閉將不會在顯示。
(5).返回我們的配置頁面,將創(chuàng)建好的token粘貼上去。然后回車輸入代理池名稱和代理名稱
(6).工作目錄,我們直接回車默認(rèn)就好
這就配置成功了如下圖,接下來我們就應(yīng)該run起來我們的agent了
- run我們的agent,查看配置是否成功
我們的agent要運行起來,并且不可以關(guān)閉,才能編譯。
./run.sh
我們可以看到已經(jīng)開始監(jiān)聽了
9.驗證agent
我們可以返回AzureDevOps 查看我們Agent pool里面的agent,查看是否online
配置SonarQube
我們可以另起一個窗口,因為如果編譯的話我們run的agent窗口不能關(guān)閉
然后我們采用的是使用docker來拉取SonarQube然后跑的鏡像,這樣方便很多
安裝Docker
sudo apt install docker.io
我們可以直接輸入docker --version,如果安裝成功則會顯示版本。
拉取SonarQube鏡像
sudo docker pull sonarqube
Run SonarQube容器
sudo docker run -d --name sonarqube -e SONAR_ES_BOOTSTRAP_CHECKS_DISABLE=true -p 9000:9000 sonarqube:latest
驗證SonarQube服務(wù)器
我們回到Azure portal,將我們Ubuntu虛擬機的nsg開始9000端口。
然后我們稍等一小會兒,訪問:
http://(你的虛擬機服務(wù)器IP):9000
默認(rèn)賬戶名密碼都是‘a(chǎn)dmin’,首次登陸進(jìn)去之后,他會讓你修改密碼
出現(xiàn)如下圖的界面就ok了。
過程3(Azure DevOps 集成SonarQube)
現(xiàn)在我們的項目源碼,Agent和SonarQube都準(zhǔn)備好了,只差集成了。
配置SonaeQube
我們回到SonarQube,導(dǎo)入我們的項目。
然后我們需要輸入三個參數(shù),給一個名稱,給一個AzureDevOps組織的URL,一個Personal access token(可以重新再創(chuàng)建一個)
然后下一步你還可以輸入這個token
找到我們需要檢測的項目,點擊導(dǎo)入
我們導(dǎo)入成功后,點擊從pipline分析
然后我們返回DevOps里面,按照SonarQube里面的配置
配置AzureDevOps
首先我們應(yīng)該到市場中下載SonarQube插件,因為我們的AzureDevOps中默認(rèn)是沒有SonarQube 連接器插件的。
1.我們可以點擊SonarQube給出教程的第一步鏈接( SonarQube extension)
然后點擊 “Get it free”
2.第二部中沒有什么難點,跟著步驟一點一點走就可以了。
3.第三部中看我們是什么語言的項目,我們是Python的
然后就點擊python,他會給出相應(yīng)的步驟。
步驟2配置好了之后我們會在這一步去修改Pipline Yaml
也是按照第三部中的步驟來做,最后我們pipline Yaml文件內(nèi)容如下
# Python Function App to Linux on Azure
# Build a Python function app and deploy it to Azure as a Linux function app.
# Add steps that analyze code, save build artifacts, deploy, and more:
# https://docs.microsoft.com/azure/devops/pipelines/languages/python
trigger:
- main
stages:
- stage: Build
displayName: Build stage
jobs:
- job:
steps:
- task: SonarQubePrepare@5
inputs:
SonarQube: 'Qube1124'
scannerMode: 'CLI'
configMode: 'manual'
cliProjectKey: 'agentdemo_agentdemo_AYv_YDa_tVCgfdkXn_y4'
cliProjectName: 'agentdemo'
cliSources: '.'
- bash: echo '中間編譯部分,業(yè)務(wù)主體'
- task: SonarQubeAnalyze@5
inputs:
jdkversion: 'JAVA_HOME_11_X64'
- task: SonarQubePublish@5
inputs:
pollingTimeoutSec: '300'
然后我們運行pipline
過程4(查看結(jié)果)
我們在pipline中已經(jīng)發(fā)布了檢測結(jié)果,只需要稍等,我們返回到SonarQube,再看
我們就發(fā)現(xiàn)結(jié)果就發(fā)布上來了,有關(guān)具體如何使用SonarQube請查看SonarQube官網(wǎng)。文章來源:http://www.zghlxwxcb.cn/news/detail-792987.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-792987.html
到了這里,關(guān)于Azure Devops集成 SonarQube檢測代碼質(zhì)量的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!