SonarQube介绍
介绍
SonarQube 是一个用于代码质量管理的开源平台,用于管理源代码的质量。同时 SonarQube 还对大量的持续集成工具提供了接口支持,可以很方便地在持续集成中使用 SonarQube.
支持范围
通过插件形式,可以支持包括 Java,C#,C/C++、PL/SQL、Cobol、JavaScrip、Groovy、Ruby 、python等二十五种编程语言的代码质量管理与检测,针对不同的编程语言其所提供的分析方式也有所不同:对于所有支持的编程语言,SonarQube 都提供源了代码的静态分析功能;对于某些特定的编程语言,SonarQube 提供了对编译后代码的静态分析功能。
SonarQube 支持多种客户端集成方式,包括但不限于 Scanner 客户端、Ant、Gradle、Maven、Jenkins、IDEA 、DevOps插件等。比较常用的为 Gradle 和 Maven。
原理
SonarQube 并不是简单地将各种质量或覆盖率检测工具的结果(例如 CheckStyle、JaCoCo 等)直接展现给客户,而是通过不同的插件算法来对结果进行再加工,并最终以量化的方式来衡量代码质量,从而方便地对不同规模和种类的工程进行相应的代码质量管理,以便进行有针对性的代码修复或重构。
AzureDevops 配置与安装SonarQube
前面大概介绍了SonarQube是什么,他可以帮我们来静态检测我们的项目代码质量。现在我们来具体实践一下吧。
背景介绍
本篇主要介绍一个使用
1.python写的一个项目。这个项目主要用来检测。
2.然后使用Azure DevOps 组织创建和一个项目,初始化一个存储库。
3.使用一台云 Ubuntu虚拟机当作编译机
4.在使用一台云 虚拟机作为SonarQube服务器(我们这里使用上面的编译机(Ubuntu虚拟机)作为服务器)。
过程
1.我们在本地准备一个python项目(其它语言的也可以),然后将项目push到我们准备的AzureDevOps上的存储库。
2.然后配置我们Azure 项目的编译机,配置好之后,安装Sonarqube。安装成功之后访问验证是否正常运行。
3.然后回到我们的AzureDevOps集成我们创建的SonarQube,(修改/创建)我们的管道。
4.查看SonarQube检测结果。
过程1(准备项目)
我们按照过程的步骤来慢慢配置:
首先我们创建一个python项目,不用很复杂,然后上传到我们的AzureRepos仓库中。
过程2(配置agent & SonarQube)
我们准备一台AzureUbuntu虚拟机登录到虚拟机。
配置Agent
我之前的文章中讲到过配置Windos虚拟机,其实大同小异,今天我们看一下如何配置Linux虚拟机agent。
1.我们点开Azure DevOps -> Project Settings->Agent Pools-> Add pool-> New Agent->转到Linux
因为我们配置的agent是Linux的所以我们需要转到Linux,我们可以采用URL的方式下载Agent配置文件。(点击下图标注即可复制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.然后我们可以先创建一个文件夹,用于存储agent配置文件
mkdir myagent && cd myagent
5.然后我们在myagent文件夹内下载压缩包
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’接受一些协议什么的
(2).输入我们DevOsserver的URL,到组织即可:
我们Azure DevOps的URL
https://dev.azure.com/MyOrgTeam/
(3).身份验证我们直接回车即可
(4).personal access token,我们返回Azure DevOps 如下图.
注意token只显示一次,页面关闭将不会在显示。
(5).返回我们的配置页面,将创建好的token粘贴上去。然后回车输入代理池名称和代理名称
(6).工作目录,我们直接回车默认就好
这就配置成功了如下图,接下来我们就应该run起来我们的agent了
- run我们的agent,查看配置是否成功
我们的agent要运行起来,并且不可以关闭,才能编译。
./run.sh
我们可以看到已经开始监听了
9.验证agent
我们可以返回AzureDevOps 查看我们Agent pool里面的agent,查看是否online
配置SonarQube
我们可以另起一个窗口,因为如果编译的话我们run的agent窗口不能关闭
然后我们采用的是使用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服务器
我们回到Azure portal,将我们Ubuntu虚拟机的nsg开始9000端口。
然后我们稍等一小会儿,访问:
http://(你的虚拟机服务器IP):9000
默认账户名密码都是‘admin’,首次登陆进去之后,他会让你修改密码
出现如下图的界面就ok了。
过程3(Azure DevOps 集成SonarQube)
现在我们的项目源码,Agent和SonarQube都准备好了,只差集成了。
配置SonaeQube
我们回到SonarQube,导入我们的项目。
然后我们需要输入三个参数,给一个名称,给一个AzureDevOps组织的URL,一个Personal access token(可以重新再创建一个)
然后下一步你还可以输入这个token
找到我们需要检测的项目,点击导入
我们导入成功后,点击从pipline分析
然后我们返回DevOps里面,按照SonarQube里面的配置
配置AzureDevOps
首先我们应该到市场中下载SonarQube插件,因为我们的AzureDevOps中默认是没有SonarQube 连接器插件的。
1.我们可以点击SonarQube给出教程的第一步链接( SonarQube extension)
然后点击 “Get it free”
2.第二部中没有什么难点,跟着步骤一点一点走就可以了。
3.第三部中看我们是什么语言的项目,我们是Python的
然后就点击python,他会给出相应的步骤。
步骤2配置好了之后我们会在这一步去修改Pipline Yaml
也是按照第三部中的步骤来做,最后我们pipline Yaml文件内容如下
# 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 '中间编译部分,业务主体'
- task: SonarQubeAnalyze@5
inputs:
jdkversion: 'JAVA_HOME_11_X64'
- task: SonarQubePublish@5
inputs:
pollingTimeoutSec: '300'
然后我们运行pipline
过程4(查看结果)
我们在pipline中已经发布了检测结果,只需要稍等,我们返回到SonarQube,再看
我们就发现结果就发布上来了,有关具体如何使用SonarQube请查看SonarQube官网。文章来源:https://www.toymoban.com/news/detail-792987.html
文章来源地址https://www.toymoban.com/news/detail-792987.html
到了这里,关于Azure Devops集成 SonarQube检测代码质量的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!