SonarQube
简介
SonarQube
是一个用于管理代码质量的开放平台,可以快速的定位代码中潜在的或者明显的错误。目前支持java
,C#
,C/C++
,Python
,PL/SQL
,Cobol
,JavaScrip
,Groovy
等二十几种编程语言的代码质量管理与检测。
环境
CentOS 7 JDK 11 Postgresql 9.6
创建用户
groupadd sonarqube
useradd -g sonarqube sonarqube
优化参数
ulimit -n 65535 sysctl -w vm.max_map_count=262144
安装postgresql
yum install https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm yum install postgresql96-server /usr/pgsql-9.6/bin/postgresql96-setup initdb systemctl enable postgresql-9.6 systemctl start postgresql-9.6 # psql -V psql (PostgreSQL) 9.6.18
创建数据库和用户,并把数据库分配给该用户,并授予权限
su - postgres psql -U postgres create database sonarqube; create user sonarqube; alter user sonarqube with passwor 'sonarqube'; alter role sonarqube createdb; alter role sonarqube superuser; alter role sonarqube createrole; alter database sonarqube owner to sonarqube; \q exit
修改配置文件/var/lib/pgsql/10/data/pg_hba.conf
/var/lib/pgsql/9.6/data local all all trust host all all 0.0.0.0/0 trust
安装SonarQube
版本:sonarqube-7.9.3 unzip sonarqube-7.9.3.zip mv sonarqube-7.9.3 /data/sonarqube chown -R sonarqube.sonarqube /data/sonarqube
修改配置文件
vim /data/sonarqube/conf/sonar.properties sonar.jdbc.username=sonarqube sonar.jdbc.password=sonarqube sonar.jdbc.url=jdbc:postgresql://localhost/sonarqube
启动sonarqube
启动 su sonarqube /data/sonarqube/bin/linux-x86-64/sonar.sh start 查看状态 su sonarqube /data/sonarqube/bin/linux-x86-64/sonar.sh status 停止 su sonarqube /data/sonarqube/bin/linux-x86-64/sonar.sh stop 查看日志 /data/sonarqube/logs
登入
汉化
重启sonarqube
Jenkins集成SonarQube
安装插件
管理Jenkins->插件管理
SonarQube Scanner
生成SonarQube Token
创建项目->生成Token
保存生成的Token
添加jenkins凭证
配置jenkins 的sonarqube server
管理Jenkins -> 系统设置
配置Sonarqube scanner
Jenkins 构建Job时代码扫描
在Post Steps
配置项中点击:Add post-build step
,然后选择:Execute SonarQube Scanner
这里我们只需要在Analysis properties
中配置sonar扫描的参数即可
sonar.projectKey=com.pinbei.pb-dubbo-user.pb-user-core sonar.projectName=pb-user-core sonar.projectVersion=1.0 sonar.sources=pb-dubbo-parent/pb-dubbo-user/pb-user-core/src sonar.java.binaries=pb-dubbo-parent/pb-dubbo-user/pb-user-core/target/classes sonar.language=java
参数项 | 说明 |
---|---|
sonar.projectKey | 项目Key,需要唯一,建议使用GroupId+ArtifactId |
sonar.projectName | 项目名称,跟ArtifactId保持一致即可 |
sonar.projectVersion | 项目版本,跟pom.xml保持一致即可 |
sonar.sources | |
sonar.java.binaries | 编译产出的classes目录,如果项目有多个module,那就需要配置为{moduleDirectory}/target/classes |
构建和扫描