基于SonarQube代码质量管理
SonarQube是什么?
官网:https://www.sonarqube.org/
Sonar (SonarQube)是一个开源平台,用于管理源代码的质量。 Sonar 不只是一个质量数据报告工具,更是代码质量管理平台。 支持java, JavaScrip, Scala 等等二十几种编程语言的代码质量管理与检测。 SonarQube®是一种自动代码审查工具,用于检测代码中的错误,漏洞和代码异味。它可以与您现有的工作流程集成,以便在项目分支和拉取请求之间进行连续的代码检查。
Sonar环境要求
- SonarQube服务器的小型(单个或小型团队)实例至少需要2GB的RAM才能有效运行,而OS则需要1GB的可用RAM。
- SonarQube必须安装在具有出色读写性能的硬盘驱动器上。最重要的是,“数据”文件夹包含Elasticsearch索引,当服务器启动并运行时,将在该索引上进行大量的I / O。因此,出色的读写硬盘驱动器性能将对SonarQube服务器的整体性能产生重大影响。
- SonarQube在服务器端不支持32位系统。但是,SonarQube确实在扫描仪侧支持32位系统。
SonarQube的架构
包含4个部分
- Project:需要被分析的源码
- SonarQube Scanner:用于执行代码分析的工具,可配置在项目的根目录(maven项目pom.xml同级)下执行
- SonarQube Server:显示分析结果的Web Server
- SonarQube Database:分析结果存储的数据库
Linux下的安装与部署
1.前期准备
- JDK: 选择版本1.8
- 数据库:MySQL5.6 或者 5.7
- SonarQube:选择7.6, 目前最新版本8.2不支持jdk1.8
- SonarQube Scanner: sonar-scanner-3.3.0.1492
2.安装包下载
jdk和数据库就不说了,SonarQube可以选择在官网下载:https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-7.6.zip,速度比较感人。
sonarqube-7.6.zip:
https://pan.baidu.com/s/1gXmglSXm8D_GCU3QYGSzpQ 提取码:zqbd
sonar-scanner-3.3.0.1492:
https://pan.baidu.com/s/1gkRnbw9vzI4TEaX86cKXSQ 提取码:5s5p
(下面是window版本的scanner 有需要可以使用,部署过程跟linux差不多)
sonar-scanner-3.3.0.1492-window:
链接:https://pan.baidu.com/s/1ZPMWqiYDxKs4UCDLK-q7bQ 提取码:jqom
3.MySQL环境配置
- 创建一个数据库 sonar
CREATE DATABASE sonar CHARACTER SET utf8 COLLATE utf8_general_ci;
- 创建一个sonar用户,设置用户名账号密码为sonar:
CREATE USER 'sonar' IDENTIFIED BY 'sonar';
- 把已创建的数据库sonar的所有权限赋予给sonar用户:
GRANT ALL ON sonar.* TO 'sonar'@'%' IDENTIFIED BY 'sonar'; GRANT ALL ON sonar.* TO 'sonar'@'localhost' IDENTIFIED BY 'sonar'; FLUSH PRIVILEGES;
4.SonarQube环境配置
(如果jdk环境没有配置的需配置一下,这里不过多介绍)
1. 解压sonarqube-7.6.zip
unzip sonarqube-7.6.zip
2. #查看参数
sysctl vm.max_map_count
sysctl fs.file-max
ulimit -n
ulimit -u
#根据需要设置
sysctl -w vm.max_map_count=262144
sysctl -w fs.file-max=65536
ulimit -n 65536
ulimit -u 2048
3. #对sonarqube7.6/conf/sonar.properties进行配置:
vim sonarqube7.6/conf/sonar.properties
#配置链接的mysql数据库信息
sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false
sonar.jdbc.username=root
sonar.jdbc.password=root
sonar.sorceEncoding=UTF-8
4. 创建一个sonar用户
useradd sonar
passwd sonar
5. 使用sonar用户启动SonarQube,使用root用户会报错(天坑)
su sonar
./son