SonarQube
目的
本文描述 SonarQube 安装部署步骤以及简单的配置与使用方法。
环境与软件
本章内容安装及运行所需软件: |项目|版本|说明| |:---|:---:|:---| |OpenJDK 11|1.11.0|Java 开发工具包| |PostgreSQL 12|12.0|关系型数据库管理系统| |SonarQube Community|8.7.1.42226|持续集成工具|
安装部署
安装 OpenJDK 11
sudo yum install -y java-11-openjdk-devel.x86_64
安装 PostgreSQL 12
安装 PostgreSQL 12:
sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
sudo yum install -y postgresql12-server postgresql12
初始化数据库:
sudo /usr/pgsql-12/bin/postgresql-12-setup initdb
sudo systemctl enable postgresql-12
sudo systemctl start postgresql-12
初始用户名为 postgres
,初始密码为空,通过以下方式设置密码:
sudo -i -u postgres
psql
-- 设置 postgres 用户的密码
\password postgres
-- 退出 PostgreSQL Shell
\q
posggres 用户的 Home 路径为 /var/lib/pgsql
,数据库文件位于 /var/lib/pgsql/12/data
下,编辑文件 /var/lib/pgsql/12/data/pg_hba.conf
,将以下内容:
host all all 127.0.0.1/32 ident
替换为:
host all all 127.0.0.1/32 md5
若需要从其他终端访问,则需要编辑 /var/lib/pgsql/12/data/postgresql.conf
,找到并设置 listen_addresses
:
listen_address = '*'
然后重新启动 PostgreSQL 服务:
sudo systemctl restart postgresql-12
登录到 PostgreSQL 并创建 SonarQube 数据库:
psql -U postgres -d postgres -h 127.0.0.1 -W
CREATE DATABASE sonarqube;
\q
更新安全配置(以使非 root 用户能够使用 Elasticsearch)
编辑文件 /etc/sysctl.conf
,添加以下内容:
vm.max_map_count=655360
编辑文件 /etc/security/limits.conf
,添加以下内容:
someone hard nofile 65535
someone soft nofile 65535
注意:将
someone
替换为实际用户名或通配符*
。
执行以下命令更新配置:
sysctl -p
下载 SonarQube Community
下载页面:https://www.sonarqube.org/downloads/
下载链接:https://www.sonarqube.org/success-download-community-edition/
启动 SonarQube
在扫描服务器上解压缩下载的文件。
编辑 conf/wrapper.conf
,将 wrapper.java.command
更新为 Java 11 命令的地址:
wrapper.java.command=/usr/lib/jvm/java-11-openjdk-11.0.8.10-0.el7_8.x86_64/bin/java
编辑 conf/sonar.properties
,设置 PostgreSQL 的用户名密码及 JDBC 连接字符串:
sonar.jdbc.username=postgres
sonar.jdbc.password=Pa5sW0rd
sonar.jdbc.url=jdbc:postgresql://127.0.0.1:5432/sonarqube?currentSchema=public
在 bin/linux-x86-64
路径下执行以下命令启动 SonarQube 服务:
注:需使用非 root 用户启动服务
./sonar.sh console 1>SonarQube.log 2>&1 &
默认端口为
9000
,默认用户名及密码均为admin
。
配置与使用
为 SonarQube 安装插件
通过 Administration → Marketplace → Plugins
查找并安装插件,如:
插件 | 说明 |
---|---|
Checkstyle | Java 静态代码检查工具 |
Findbugs | Java 静态代码检查工具 |
Groovy | Groovy 源文件检查工具 |
PMD | Java 静态代码检查工具 |
ShellCheck Analyzer | Shell 脚本检查工具 |
YAML Analyzer | YAML 检查工具 |
Maven 的 SonarQube 插件配置
在项目的 pom.xml
中加入 Sonar 插件(锁定 Sonar 版本):
<project>
<!-- ... -->
<build>
<!-- ... -->
<plugins>
<!-- ... -->
<plugin>
<groupId>org.sonarsource.scanner.maven</groupId>
<artifactId>sonar-maven-plugin</artifactId>
<version>3.7.0.1746</version>
</plugin>
</plugins>
<!-- ... -->
</build>
<!-- ... -->
</project>
执行以下命令使用指定版本的 Sonar 对代码进行扫描:
mvn compile org.sonarsource.scanner.maven:sonar-maven-plugin:3.7.0.1746:sonar -Dsonar.host.url=http://10.211.55.103:9000
执行以下命令使用最新版本的 Sonar 对代码进行扫描:
mvn compile sonar:sonar -Dsonar.host.url=http://sonar.example.com:9000
通过在 Maven 的 settings.xml
中添加 Sonar 服务器信息,可以省略 sonar.host.url
参数:
<settings>
<!-- ... -->
<pluginGroups>
<pluginGroup>org.sonarsource.scanner.maven</pluginGroup>
</pluginGroups>
<profiles>
<profile>
<id>sonar</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<sonar.host.url>http://sonar.example.com:9000</sonar.host.url>
</properties>
</profile>
</profiles>
<!-- ... -->
</settings>
如果发生内存不足错误(java.lang.OutOfMemoryError
),则可尝试设置以下环境变量:
export MAVEN_OPTS="-Xmx512m"
为 IntelliJ IDEA 安装 SonarQube Community 插件
通过 Preferences → Plugins → Marketplace
查找 SonarQube Community Plugin
,安装并重启 IntelliJ IDEA。
通过 Preferences → Other Settings → SonarQube
添加 SonarQube 服务器信息。
通过菜单项 Analyze → Inspect Code...
执行代码检查。