
SonarQube学习笔记
SonarQube是一个开源的代码品质管理系统。
特点:
- 支持超过25种程序语言。如Java、C/C++、C#、Python、PHP等。
- 提供重复代码、编码标准、单元测试、单元覆盖率、代码复杂度、潜在Bug、注释和软件设计报告。
- 提供了指标历史记录、计划图(“时间机器”)和微分查看。
- 提供了完全自动化的分析:与Maven、Ant、Gradle和持续集成工具(Atlassian Bamboo、Jenkins、Hudson等)。
- 与Eclipse开发环境集成。
- 与JIRA、Mantis、LDAP、Fortify等外部工具集。
- 支持扩展插件。
- 利用SQALE计算技术债务。
- 支持Tomcat。不过计划从SonarQube 4.1起终止对Tomcat的支持。
SonarQube分为社区版、开发者版、企业版、高可用版。除了社区版是开源且免费的,其他版本都是需要收费的,所以以下所有的操作都是基于社区版进行的。
SonarQube安装
window安装
选择对应的版本下载,笔者选择的是SonarQube 8.9.9,一个长期支持的版本,以下的安装都是基于该版本进行的,不同的版本可能会存在差异,如果版本不同,以下内容请谨慎参考。
运行要求:https://docs.sonarqube.org/8.9/requirements/requirements/
从上图可以看出,该版本需要jdk11的Java环境
安装完毕后,如果电脑存在多个jdk环境,比如笔者常用的开发环境是jdk8,但是该程序需求jdk最低版本为jdk11,那么则需要去修改conf\wrapper.conf配置文件
# 将该属性的值修改成对应版本的jdk
wrapper.java.command=D:\Java\jdk-11.0.16\bin\java
JDK修改完毕后,修改conf\sonar.properties,该文件有sonar的web配置和数据源配置等,如果不修改配置文件默认使用的h2数据库,为了以后方便迁移,还是更换一下数据源比较好,该版本的支持的数据库有H2数据库、Oracle 12c/18c/19c、Postgres9.3或者更高版本、SQLServer 2014/2016/2017/2019 and SQL Azure,低版本以前还支持Mysql,但是从7.9版本后就不再支持MySQL,所以就算使用低版本也尽量不要使用MySQL,以后升级比较麻烦,笔者在此处使用的Postgres,Postgres安装笔者是使用Docker安装的,以下为docker命令,如果使用其他方式安装,请自行百度。
docker run --name postgres -p 5432:5432 -e TZ=PRC -e POSTGRES_USER=root -e POSTGRES_DB=sonar -e POSTGRES_PASSWORD=root@2022 -v /mnt/test/postgres:/var/lib/postgresql/data -d postgres
--name: 定义容器名称
-e:定义环境变量 POSTGRES_USER:默认创建用户的用户名 POSTGRES_PASSWORD:默认创建用户的密码 POSTGRES_DB:默认创建的数据库 TZ=RPC 设置中国地区时区
-v:定义容器数据卷
-p:端口映射
如果没有安装docker,可以参考笔者另一篇文章docker学习笔记
Postgres数据库安装完成后,修改sonar.properties
文件中的以下属性:
sonar.jdbc.username=root
sonar.jdbc.password=root@2022
## 如果默认的schema被使用了,那么需要在连接字符串后面指定schema
## sonar.jdbc.url=jdbc:postgresql://192.168.11.112:5432/sonar?currentSchema=my_schema
sonar.jdbc.url=jdbc:postgresql://192.168.11.112:5432/sonar
其他属性则暂时不需要修改,如果有需要,可自行修改,修改后请重启程序。
运行bin\windows-x86-64\StartSonar.bat
启动脚本。
然后访问localhost:9000
启动完毕后,输入账号:admin,密码:admin 登录系统。然后根据指示修改密码。
docker-compose安装
version: '3.1'
services:
postgres:
image: postgres:13-alpine
container_name: postgres
volumes:
- /mnt/docker/postgres/postgresql:/var/lib/postgresql
- /mnt/docker/postgres/data:/var/lib/postgresql/data
- /etc/localtime:/etc/localtime:ro
ports:
- 5432:5432
environment:
POSTGRES_USER: sonar
POSTGRES_PASSWORD: sonar
sonarqube:
image: sonarqube:8.9.8-community
container_name: sonarqube
volumes:
- /mnt/docker/sonarqube/extensions:/opt/sonarqube/extensions
- /mnt/docker/sonarqube/logs:/opt/sonarqube/logs
- /mnt/docker/sonarqube/data:/opt/sonarqube/data
- /mnt/docker/sonarqube/conf:/opt/sonarqube/conf
# 设置与宿主机时间同步
- /etc/localtime:/etc/localtime:ro
depends_on:
- postgres
ports:
- 9000:9000
command:
# 内存设置
- -Dsonar.ce.javaOpts=-Xmx2048m
- -Dsonar.web.javaOpts=-Xmx2048m
environment:
SONAR_JDBC_URL: jdbc:postgresql://postgres:5432/sonar
SONAR_JDBC_USERNAME: sonar
SONAR_JDBC_PASSWORD: sonar
然后docker-compose -f docker-compose.yml up -d
启动,然后访问localhost:9000
启动完毕后,输入账号:admin,密码:admin 登录系统。然后根据指示修改密码。
SonarQube常用插件安装
- Chinese Park:支持在线安装
- Checkstyle:支持在线安装
- FindBugs:支持在线安装
- Codehawk:不支持在线安装
- pdf Report:不支持在线安装
如果在线安装失败,可以去对应插件的仓库下载jar包,然后手动放到extensions\plugins
下,然后重启程序。