SonarQube 8.4 发布,分析时间最多可减少 80%
有碰到再去整理一次吧。先放一下以前的学习笔记
SonarQube 与 jenkins 简 介
SonarQube 是 一个开源的代码质量分析平台,便于管理代码的质量,可检查出项目代码的漏洞和潜在的逻辑问题。同时,它提供了丰富的插件,支持多种语言的检测, 如 J ava、Python、Groovy、C、C++等几十种编程语言的检测。它主要的核心价值体现在如下几个方面:
- 检查代码是否遵循编程标准:如命名规范,编写的规范等。
- 检查设计存在的潜在缺陷:SonarQub e 通 过插 件 F indbugs、Checkstyl e 等 工具检测代码存在的缺陷。
- 检测代码的重复代码量:SonarQub e 可 以展示项目中存在大量复制粘贴的代码。
- 检测代码中注释的程度:源码注释过多或者太少都不好,影响程序的可读可理解性。
- 检测代码中包、类之间的关系:分析类之间的关系是否合理,复杂度情况。
SonarQub e 平 台是 由 4 个 部分组成:
- SonarQube Server
- SonarQube Database
- SonarQube Plugins
- SonarQube Scanner
wget -c https://sonarsource.bintray.com/Distribution/sonarqube/sonarqube-6.7.4.zip
unzip sonarqube-6.7.4.zip && mv sonarqube-6.7.4 /usr/local/
groupadd sonarqube
useradd sonarqube -g sonarqube
chown -R sonarqube:sonarqube /usr/local/sonarqube-6.7.4/
vim /usr/local/sonarqube-6.7.4/bin/linux-x86-64/sonar.sh
RUN_AS_USER=sonarqube
cd /usr/local/sonarqube-6.7.4/bin/linux-x86-64/
./sonar.sh start && ps -ef|grep sonarqube
9092 h2数据库 9091 Elasticsearch
默认账号密码都为admin
生成一个令牌
123456: 5422c0d022ed9c80855268fd6eadaeff80a201da
[root@kares components]# mvn sonar:sonar -Dsonar.host.url=http://192.168.20.108:9000 -Dsonar.login=5422c0d022ed9c80855268fd6eadaeff80a201da
刷新下
http://192.168.20.108:9000 或者看上面截图,分析报告已经出现
多个项目就放到项目里面去执行一次,刷新WEB,项目就出现了。
安装语言包Administration--Marketplace--Chinese Pack
然后重启
内嵌数据库只能用于测试场景
内嵌数据库无法扩展,也无法升级到新版本的SonarQube,并且不能支持将你的数据迁移至其他数据库引擎。
SonarQub e 自带了一个 H2 的数据库,当然为了获得更好的性能我们可以指定一个外部的数据库,在这里我们使用 MySQL 数据库。 先 在 M ysq l 数 据库中建立一 个 S ona r 数 据库,主要用于存放分析结果的数据
[root@kares linux-x86-64]# ./sonar.sh stop
[root@kares conf]# cp sonar.properties sonar.properties.bak
root
@127.0.0.1:(none) 09:09:36>create database sonar;
Query OK, 1 row affected (0.00 sec)
root
@127.0.0.1:(none) 10:06:04>grant all privileges on sonar.* to sonar@'192.168.20.108' identified by 'sonar123456';
Query OK, 0 rows affected (0.00 sec)
vim sonar.properties
[root@kares conf]# /usr/local/sonarqube-6.7.4/bin/linux-x86-64/sonar.sh start
数据库用其他了,一切需要重头来了,不过看着中文挺爽的。
优化
主要在这个配置文件里 /usr/local/sonarqube-6.7.4/conf/sonar.properties
sonar.web.javaOpts=-Xmx1g -Xms512m -XX:+HeapDumpOnOutOfMemoryError
修改默认管理员密码
admin:xxadmin
当项目构建量大的时候可能会出现
Failed to execute goal org.sonarsource.scanner.maven:sonar-maven-plugin:3.4.0.905:sonar (default-cli) on project pos-server: Failed to upload report - 500: An error has occurred. Please contact your administrator
谷歌大概明白,报告要提交到sonar服务器,大量的插入收到了接受数据库包大小的限制,导致POST失败
所以,只需要提高mysql的这个参数即可 max_allowed_packet = 128M
===========
和jenkins的集成
===========
1.安装插件
SonarQube Scanner 2.7.1
2.配置SonarQube Scanner
全局工具配置--系统管理—>Global Tool Configuration
Name sonar-scanner-3.2
3.配置sonarqube服务器
系统管理--系统设置-->sonarqube server--add sonarqube
token可以在sonaqube的安全上取
4.配置--配置--SCM--勾选禁用SCM传感器
5.构建--选择 execute sonarqube scanner
代码覆盖率
代码覆盖率的定义:对某一段代码或者代码的某一种属性做测试,其测试达到的程度被称为是覆盖率
先安装jacoco,并跳过失败
mvn clean org.jacoco:jacoco-maven-plugin:prepare-agent install -Dmaven.test.failure.ignore=true
mvn sonar:sonar -Dsonar.host.url=http://192.168.20.108:9000 -Dsonar.login=5422c0d022ed9c80855268fd6eadaeff80a201da
成功后在sonarqube的UI项目上会显示覆盖率,和单元测试数
找回密码
执行如下SQL,将管理员(admin)密码重置为admin
use sonar;
update users
set crypted_password = '88c991e39bb88b94178123a849606905ebf440f5',
salt='6522f3c5007ae910ad690bb1bdbf264a34884c6d'
where login = 'admin'
来源:oschina
链接:https://my.oschina.net/longquan/blog/4365262