SonarQube

SonarQube

一 SonarQube简介

1.1 sonar是一款静态代码质量分析工具,支持Java、Python、PHP、JavaScript、CSS等25种以上的语言,而且能够集成在IDE、Jenkins、Git等服务中,方便随时查看代码质量分析报告;

在这里插入图片描述

sonar通过配置的代码分析规则,从可靠性、安全性、可维护性、覆盖率、重复率等方面分析项目,风险等级从A~E划分为5个等级;

同时,sonar可以集成pmd、findbugs、checkstyle等插件来扩展使用其他规则来检验代码质量;

在这里插入图片描述

sonar设置了质量门,通过设置的质量门评定此次提交分析的项目代码是否达到了规定的要求;
在这里插入图片描述

1.2 sonar的组成

一个sonar项目主要有以下四个组件构成:

在这里插入图片描述

  1. 一台SonarQube Server启动3个主要过程:
  • Web服务器,供开发人员,管理人员浏览高质量的快照并配置SonarQube实例
  • 基于Elasticsearch的Search Server从UI进行后退搜索
  • Compute Engine服务器,负责处理代码分析报告并将其保存在SonarQube数据库中
  1. 一个SonarQube数据库要存储:
  • SonarQube实例的配置(安全性,插件设置等)
  • 项目,视图等的质量快照。
  1. 服务器上安装了多个SonarQube插件,可能包括语言,SCM,集成,身份验证和管理插件
  2. 在构建/持续集成服务器上运行一个或多个SonarScanner,以分析项目;

1.3 工作流转

以下架构图为sonar项目的工作流转图
在这里插入图片描述

  1. 开发人员在其IDE中进行编码,并使用SonarLint运行本地分析。
  2. 开发人员将其代码推送到他们最喜欢的SCM中:git,SVN,TFVC等。
  3. Continuous Integration Server会触发自动构建,并执行运行SonarQube分析所需的SonarScanner。
  4. 分析报告将发送到SonarQube服务器进行处理。
  5. SonarQube Server处理分析报告结果并将其存储在SonarQube数据库中,并在UI中显示结果。
  6. 开发人员通过SonarQube UI审查,评论,挑战他们的问题,以管理和减少技术债务。
  7. 经理从分析中接收报告。Ops使用API​​自动执行配置并从SonarQube提取数据。运维人员使用JMX监视SonarQube Server。

二 IntelliJ IDEA 集成SonarLint

2.1 简介

SonarLint是sonar团队开发的用于IDE的开源插件,支持eclipse、idea、visual studio、VS code四款IDE工具,开发可以在IDE上直接执行SonarLint对项目代码进行分析,同时,分析报告也可以同步到SonarQube服务器上;

2.2 安装

在Preferences>Plugins中搜索sonarLint,可以搜索到该插件,点击install

在这里插入图片描述

2.3 使用

SonarLint可以针对项目执行,也可以直接针对单个文件进行分析,并在IDE下方的SonarLint中显示分析结果;

在项目上右键点击,下拉菜单中点击SonarLint,选择Analyze with SonarLint,这时会对整个项目内的文件进行分析;

在这里插入图片描述

在打开的单个文件中右键点击,出现如下菜单,点击Analyze with SonarLint,会对当前的单个文件进行分析;
在这里插入图片描述

三 Sonar系列之SonarQube安装配置

一、简介

SonarQube用于部署Web服务器,作为SonarQube Server使用,用于Sonar的配置管理、分析结果汇总展示;

SonarQube主要分为四大版本,我们使用的社区版,截止发文时间,已经更新到8.4版本,此次以社区版的7.8版本作为示例;

在这里插入图片描述

二、安装

官网:https://www.sonarqube.org/

环境要求:jdk1.8以上;

1 在官网下载相应版本的安装包

在这里插入图片描述

如果下载最新版本 直接点击下图中Download Community Edition

在这里插入图片描述

如果下载历史版本,点击最下方的show all versions

在这里插入图片描述
在这里插入图片描述

点击后,下载到本地一个相应版本的zip文件;

2 配置

unzip sonarqube-7.8.zip

mkdir /opt/sonar

mv sonarqube-7.8/* /opt/sonar

vi /opt/sonar/conf/sonar.properties

sonarqube自带H2数据库,方便用户学习使用,但是使用sonarqube作为服务器使用,需要配置单独的数据库使用;

sonarqube7.8版本支持MS SQLserver、Oracle、Postgresql、MySQL四种数据库,但是从7.8版本之后,sonarqube不再支持MySQL数据库

MySQL >=5.6 && <8.0

在sonarqube目录的conf下,sonar.properties文件为soanrqube的配置文件,配置相应的数据库信息;

在这里插入图片描述

在数据库中建立sonar数据库
在这里插入图片描述

重启sonarqube,启动成功后,我们查看数据库,可以看到在数据库中会生成的相关的表,如此sonar的数据库配置就完成了。

在这里插入图片描述

此外,我们可以自定义sonarqube的端口,在sonar.properties文件中配置sonar.web.port,重启sonarqube即可。

3 启动soanrqube

  • 创建soanrqube用户

adduser sonar

chown -R sonar:sonar /opt/sonar

chown -R sonar:sonar /usr/java/jdk1.8.0_291-amd64

su sonar /opt/sonar/bin/linux-x86-64/./sonar.sh start

su sonar /opt/sonar/bin/linux-x86-64/./sonar.sh console

ERROR: [2] bootstrap checks failed
jvm 1    | [1]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65535]
jvm 1    | [2]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
jvm 1    | 2021.05.18 20:07:35 WARN  app[][o.s.a.p.AbstractManagedProcess] Process exited with exit value [es]: 78
jvm 1    | 2021.05.18 20:07:35 INFO  app[][o.s.a.SchedulerImpl] Process[es] is stopped
jvm 1    | 2021.05.18 20:07:35 INFO  app[][o.s.a.SchedulerImpl] SonarQube is stopped

ulimit -Hn

echo ulimit -n 65536 >>/etc/profile

source /etc/profile

https://blog.csdn.net/jiahao1186/article/details/90235771

console:启动sonarqube,并打印启动日志,Ctrl+C,终止打印,同时sonarqube关闭;

start:启动sonarqube,但不打印日志;

status:查询sonarqube运行状态

soanr默认端口为9000,浏览器录入localhost:9000,访问sonarqube;

sonar初始用户为admin,密码同样为admin,点击登录,即可进入sonarqube页面;

3,汉化

sonar启动后是一个英文版的页面,不符合我们的语言习惯,安装汉化插件可以对系统进行汉化处理;

如果是安装的最新版本的soanrqube,安装汉化包,直接在Administration>Marketplace中搜索“ch”,安装Chinese Pack插件,而后重启sonarqube即可;

在这里插入图片描述

但是对于7.8版本,因为是历史版本,最新的汉化插件并不适合,通过下表,我们可知,sonarqube7.8版本对应的汉化包为1.28版本;

在此链接链接:https://pan.baidu.com/s/1xVsdDgKZTQb9tHMuddbqdQ
下载1.28版本的jar包

提取码:xwgn

在这里插入图片描述

将下载好的jar包放在本地sonarqube插件目录sonarqube-7.8/extensions/plugins下,重启sonarqube。

在这里插入图片描述
登录SonarQube

用户名:admin
密码:admin

四 Jenkins集成SonarQube

1 Jenkins安装SonarQube Scanner插件

在这里插入图片描述

2 Jenkins配置SonarQube

2.1 SonarQube 生成token

在这里插入图片描述

在这里插入图片描述

2.2 Jenkins配置凭据

在这里插入图片描述

2.3 在jenkins主机之上安装 SonarQube Scanner

unzip sonar-scanner-cli-4.6.1.2450-linux.zip

mv sonar-scanner-4.6.1.2450-linux/ /opt/

ln -s sonar-scanner-4.6.1.2450-linux sonar-scanner

vi /etc/profile

export SONAR_SCANNER_HOME=/opt/sonar-scanner

export PATH=$SONAR_SCANNER_HOME/bin

source /etc/profile

bash: ls: command not found的解决办法

export PATH=/bin:/usr/bin:$PATH:$SONAR_SCANNER_HOME/bin

cd /opt/sonar-scanner

vi conf/sonar-scanner.properties

sonar.host.url=http://192.168.8.33:9000
2.4 Jenkins 配置 SonarQube Scanner

在这里插入图片描述

在这里插入图片描述

  • jar
    在这里插入图片描述

  • pipeline

		stage('code checking') { 
			steps{
				echo "sonar start"
				
				script {
					scannerHome = tool 'sonar-scanner'
				}
				withSonarQubeEnv('sonarqube') {
					sh "${scannerHome}/bin/sonar-scanner"
				}
    		}
        }
  • sonar-project.properties
sonar.projectKey=${env.JOB_NAME}
sonar.projectName=${env.JOB_NAME}
sonar.projectVersion=${env.BUILD_NUMBER}
sonar.sources=.
sonar.exclusions=**/test/**,**/target/**
sonar.java.source=1.8
sonar.target=1.8
sonar.sourceEncoding=UTF-8
sonar.java.binaries=${env.WORKSPACE}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

♪-Interpretation

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值