Sonarqube8.9LTS搭建及SQL扫描插件安装及sonar-scanner使用全过程

本文介绍如何安装配置Sonarqube 8.9 LTS版本,包括环境要求、下载安装步骤、数据库配置、启动与停止命令、插件安装及配置方法、Sonar-scanner使用流程等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Sonarqube安装

环境要求

Java
在这里插入图片描述
Database
高版本的不再支持mysql
在这里插入图片描述
Web Browser
在这里插入图片描述
Linux
在这里插入图片描述

下载

Java
https://www.oracle.com/java/technologies/downloads/#java11
选择版本11下载
Sonarqube-8.9LTS
https://www.sonarqube.org/downloads/
在这里插入图片描述

数据库
Sonarqube-8.9已不支持mysql,使用已有的oracle 12C

安装

sonar.properties:配置数据库用户名、密码、端口等
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
wrapper.conf:配置jre
在这里插入图片描述
jdbc-driver:添加jar
在这里插入图片描述
数据库用户、授权
新建用户并授权,与sonar.properties配置中保持一致

Web界面
url:IP:9000 默认端口9000
默认用户密码:admin/admin

命令

启动 sonar.sh start
停止 sonar.sh stop
重启 sonar.sh restart

插件安装

注意事项:选择的插件版本需要与sonarqube版本兼容

Plsql扫描插件

1.下载jar包
https://github.com/felipebz/zpa
2.将下载的jar包放入目录xxx/sonarqube-${version}/extensions/plugins
3.版本
在这里插入图片描述

Mybatis XML扫描插件

1.下载jar包
https://github.com/donhui/sonar-mybatis/releases
2.将下载的jar包放入目录xxx/sonarqube-${version}/extensions/plugins
3.版本
在这里插入图片描述

重启sonarqube服务

1.重启后,浏览器访问http://127.0.0.1:9000,默认用户密码都是:admin
2.查看插件的rules是否加载
在这里插入图片描述
可以看出:Plsql扫描插件规则已加载

启用/禁用规则

1.复制sonar way改名为自定义名称,如rx way
在这里插入图片描述

2.点击rules列的数字或下拉选择框,进入规则配置页面
在这里插入图片描述
在这里插入图片描述
根据《代码规范》进行配置
3.配置完成后,将rx way设置生效
在这里插入图片描述

继承的使用

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

具体场景:如果希望同时使用插件规则和sonar自带的规则,可以将二者都复制出来配置规则后,设置为继承。

Sonar-scanner使用

1.官方下载sonar-scanner
2.解压后修改配置文件sonar-scanner.properties
在这里插入图片描述
3.修改环境变量path
添加 sonar-scanner安装目录/bin
4.按项目、模块扫描

  • 在待扫描的项目根路径 下新建sonar-project.properties文件
  • 分别配置需要的模块,如java、js、sql
    配置举例:
sonar.projectKey=test2-8
sonar.projectName=test2-8
sonar.login=523010c307aad1214452006e25a3fd303d1d8d57

sonar.projectVersion=1.0
#sonar.modules=java-module,javascript-module,sql-module
sonar.modules=xml-module,sql-module

xml-module.sonar.projectName=xml Module
xml-module.sonar.language=xml
xml-module.sonar.sources=xml/
xml-module.sonar.projectBaseDir=.

sql-module.sonar.projectName=sql Module
sql-module.sonar.language=sql
sql-module.sonar.sources=sql/
sql-module.sonar.projectBaseDir=.
 
#javascript-module.sonar.projectName=JavaScript Module
#javascript-module.sonar.language=js
#javascript-module.sonar.sources=web/src/main/webapp/medias/src/plat
#javascript-module.sonar.projectBaseDir=.
 
#java-module.sonar.projectName=Java Module
#java-module.sonar.language=java
#java-module.sonar.sources=web/src/main/java,util/src/main/java,service/src/main/java,domain/src/main/java,dao/src/main/java
#java-module.sonar.projectBaseDir=.
#java-module.sonar.java.binaries=web/out/production/classes,util/out/production/classes,service/out/production/classes,domain/out/production/classes,dao/out/production/classes
  • 命令行进入项目根路径后,执行sonar-scanner扫描
    ps:扫描时如果出现问题 INFO: Project root configuration file: NONE,可能是sonar-project.properties名称写错了,导致文件没有找到
  • 登录sonarqube服务器查看扫描结果

参考链接

1.官方文档 https://docs.sonarqube.org/8.9/requirements/requirements/

2.自定义插件 https://blog.csdn.net/axibazZ/article/details/122166010

<think>好的,我现在需要给用户一个完整的本地搭建SonarQube的流程,并且要支持Java 8项目。让我先回忆一下自己之前有没有做过类似的事情,或者需要查阅哪些步骤。 首先,SonarQube是一个代码质量管理工具,对吧?用户想在自己本地环境搭建,所以可能需要安装SonarQube服务器,配置数据库,然后配置扫描器,比如SonarScanner,最后在Java 8项目中使用。用户可能对步骤不太熟悉,需要详细指导。 首先,系统要求。SonarQube的不同版本对Java的支持可能不同。比如,最新的SonarQube版本可能需要Java 11或更高,但用户的项目是Java 8,所以可能需要确认SonarQube版本是否兼容。可能需要选择一个较旧的SonarQube版本,比如8.9.x LTS,因为9.x以上可能不再支持Java 8扫描?或者可能SonarQube服务器本身运行的Java版本和扫描用的JDK是分开的。比如,SonarQube 7.9需要Java 11运行,但分析Java 8项目时,可以使用Java 8的环境。这点需要确认,否则用户可能混淆。 所以,正确的步骤可能包括: 1. 安装Java环境:SonarQube服务器需要Java 11,但分析项目时可以使用Java 8。用户需要安装两个JDK吗?或者可以只安装Java 11,然后用Java 8来编译项目?需要明确说明。 2. 安装数据库:SonarQube支持PostgreSQL、MySQL等。比如,PostgreSQL可能更常见,需要安装并配置。 3. 下载SonarQube,解压,配置数据库连接。 4. 启动SonarQube服务。 5. 安装SonarScanner,并配置环境变量。 6. 在Java 8项目中配置SonarScanner,比如在Maven或Gradle项目中使用插件,或者直接使用SonarScanner命令行。 需要详细说明每个步骤,可能遇到的常见问题,比如端口冲突(默认是9000),或者数据库连接错误,权限问题等。 另外,Java 8项目在分析时可能需要指定Java版本,或者确保SonarQube的Java插件支持。可能需要检查插件版本是否兼容。 现在,具体步骤: 1. 系统准备:安装Java 11,因为SonarQube 8.9 LTS需要Java 11运行。同时,用户的项目用Java 8,所以需要确保项目编译时使用的是JDK 8,而SonarQube服务器运行在JDK 11上。这时候,用户可能需要同时安装两个JDK,并正确设置环境变量,或者通过构建工具指定JDK版本。 2. 安装数据库,比如PostgreSQL。比如,安装PostgreSQL 12,创建数据库和用户,并赋予权限。需要注意字符编码和collation设置是否正确。 3. 下载SonarQube 8.9.x版本,解压,编辑sonar.properties配置文件,设置数据库连接参数,如URL、用户名、密码。可能需要调整其他设置,比如监听地址、端口等。 4. 启动SonarQube,这时候可能需要以非root用户运行,因为SonarQube不允许用root启动。如果用户是在Linux环境下,需要创建sonarqube用户,并处理目录权限问题。如果是在Windows,可能用普通用户权限启动。 5. 访问SonarQube的Web界面(默认localhost:9000),登录,安装必要的插件,比如Java插件。不过SonarQube可能已经自带了一些插件,需要确认是否已经包含Java分析功能。 6. 安装SonarScanner,解压,并添加到PATH环境变量中。或者,如果使用Maven,可以直接使用mvn sonar:sonar命令,但需要配置settings.xml中的服务器地址和token。 7. 在Java 8项目中,配置构建工具,比如pom.xml中指定Java版本为1.8,确保编译时使用JDK 8。然后执行扫描命令,传递相应的参数,如sonar.projectKey、sonar.host.url、sonar.login(token)等。 可能遇到的问题: - 启动SonarQube时出现Java版本不兼容,比如使用Java 8运行SonarQube 8.9,这时候会报错,需要升级到Java 11。 - 数据库连接问题,比如端口不对,用户名密码错误,或者数据库没有正确初始化。 - 权限问题,比如SonarQube进程无法写入日志文件或数据目录。 - SonarScanner执行时找不到Java源文件,可能需要配置sonar.sources参数。 - 防火墙或端口被占用,导致无法访问Web界面。 需要给出针对不同操作系统的步骤吗?比如Windows和Linux可能略有不同,特别是安装服务和配置环境变量方面。 总结步骤: 1. 安装Java 11,并设置JAVA_HOME环境变量。 2. 安装并配置PostgreSQL数据库,创建sonarqube数据库和用户。 3. 下载并解压SonarQube 8.9.x,修改配置文件指向PostgreSQL。 4. 启动SonarQube,检查日志是否有错误。 5. 登录Web界面,生成token用于项目扫描。 6. 安装SonarScanner,配置环境变量。 7. 在Java 8项目的根目录,创建sonar-project.properties文件,配置项目参数,使用SonarScanner运行分析。 或者,如果使用Maven,可以在pom.xml中添加sonar-maven-plugin,并运行mvn sonar:sonar命令,带上相应参数。 还需要注意,SonarQube的Elasticsearch可能需要调整系统设置,比如vm.max_map_count在Linux上的设置,否则启动失败。 可能的示例步骤: 以Linux为例: 1. 安装Java 11: sudo apt-get install openjdk-11-jdk 2. 安装PostgreSQL: sudo apt-get install postgresql postgresql-contrib 切换到postgres用户: sudo -u postgres psql 创建数据库和用户: CREATE USER sonarqube WITH PASSWORD &#39;sonarqube&#39;; CREATE DATABASE sonarqube OWNER sonarqube; ALTER DATABASE sonarqube SET encoding=UTF8; ALTER DATABASE sonarqube SET collation=&#39;en_US.UTF-8&#39;; ALTER DATABASE sonarqube SET collation_provider=&#39;libc&#39;; 可能需要配置pg_hba.conf,允许本地连接使用md5认证。 3. 下载SonarQube 8.9.10: wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-8.9.10.61524.zip 解压到/opt/sonarqube 4. 编辑sonar.properties: sonar.jdbc.url=jdbc:postgresql://localhost:5432/sonarqube sonar.jdbc.username=sonarqube sonar.jdbc.password=sonarqube sonar.web.host=0.0.0.0 sonar.web.port=9000 5. 创建用户和设置权限: sudo groupadd sonarqube sudo useradd -g sonarqube sonarqube sudo chown -R sonarqube:sonarqube /opt/sonarqube 6. 启动: sudo su sonarqube cd /opt/sonarqube/bin/linux-x86-64/ ./sonar.sh start 检查日志:tail -f ../logs/sonar.log 7. 访问http://localhost:9000,默认admin/admin,生成token。 8. 安装SonarScanner下载对应版本,解压,配置PATH。 9. 在Java项目根目录创建sonar-project.properties: sonar.projectKey=my-java-project sonar.projectName=My Java Project sonar.projectVersion=1.0 sonar.sources=src sonar.java.binaries=target/classes sonar.sourceEncoding=UTF-8 sonar.java.source=8 然后运行sonar-scanner -Dsonar.login=生成的token 或者使用Maven: mvn sonar:sonar -Dsonar.host.url=http://localhost:9000 -Dsonar.login=token 另外,用户可能需要配置Java 8的环境变量,比如JAVA_HOME_8,并在执行扫描使用该JDK来编译项目。或者,如果使用Maven,可以在pom.xml中配置编译器插件指定Java 8。 可能还需要注意SonarQube的Java插件是否支持所需的规则,以及确保分析时使用的Java版本正确。 这样应该覆盖了主要的步骤和注意事项。需要检查每个步骤的正确性,避免遗漏关键点,比如数据库配置,用户权限,Java版本兼容性等。</think>以下是本地搭建SonarQube并支持Java 8项目的完整流程: --- ### **一、环境准备** 1. **系统要求** - 操作系统:Linux/Windows/macOS(本流程以Linux为例) - 内存:至少4GB(推荐8GB) - Java版本: - **SonarQube服务端需要Java 11**(SonarQube 8.9 LTS- **Java项目编译和分析需JDK 8**(与项目版本一致) 2. **安装依赖** - 安装Java 11(运行SonarQube服务): ```bash sudo apt-get install openjdk-11-jdk export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64 # 设置环境变量 ``` - 安装JDK 8(用于项目编译): ```bash sudo apt-get install openjdk-8-jdk ``` --- ### **二、安装并配置数据库(PostgreSQL)** 1. **安装PostgreSQL** ```bash sudo apt-get install postgresql postgresql-contrib ``` 2. **创建数据库和用户** ```bash sudo -u postgres psql ``` 执行以下SQL命令: ```sql CREATE USER sonarqube WITH PASSWORD &#39;sonarqube&#39;; CREATE DATABASE sonarqube OWNER sonarqube; ALTER DATABASE sonarqube SET encoding = &#39;UTF8&#39;; ALTER DATABASE sonarqube SET collation = &#39;en_US.UTF-8&#39;; ALTER DATABASE sonarqube SET collation_provider = &#39;libc&#39;; \q ``` 3. **修改PostgreSQL配置** - 编辑`pg_hba.conf`: ```bash sudo nano /etc/postgresql/*/main/pg_hba.conf ``` - 添加一行(允许本地连接): ``` local sonarqube sonarqube md5 ``` - 重启PostgreSQL: ```bash sudo systemctl restart postgresql ``` --- ### **三、安装SonarQube服务端** 1. **下载并解压SonarQube 8.9 LTS** ```bash wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-8.9.10.61524.zip unzip sonarqube-8.9.10.61524.zip sudo mv sonarqube-8.9.10.61524 /opt/sonarqube ``` 2. **修改配置文件** - 编辑`/opt/sonarqube/conf/sonar.properties`: ```properties sonar.jdbc.url=jdbc:postgresql://localhost:5432/sonarqube sonar.jdbc.username=sonarqube sonar.jdbc.password=sonarqube sonar.web.host=0.0.0.0 sonar.web.port=9000 ``` 3. **设置用户权限** ```bash sudo groupadd sonarqube sudo useradd -g sonarqube sonarqube sudo chown -R sonarqube:sonarqube /opt/sonarqube ``` 4. **启动SonarQube** ```bash sudo su sonarqube cd /opt/sonarqube/bin/linux-x86-64/ ./sonar.sh start ``` - 检查日志:`tail -f /opt/sonarqube/logs/sonar.log` - 访问 `http://localhost:9000`,默认账号:`admin/admin`。 --- ### **四、安装SonarScanner** 1. **下载并配置SonarScanner** ```bash wget https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-4.8.0.2856-linux.zip unzip sonar-scanner-cli-4.8.0.2856-linux.zip sudo mv sonar-scanner-4.8.0.2856-linux /opt/sonar-scanner export PATH=$PATH:/opt/sonar-scanner/bin # 添加到环境变量(如~/.bashrc) ``` --- ### **五、分析Java 8项目** 1. **生成SonarQube Token** - 登录SonarQube Web界面,进入 **User > My Account > Security**,生成一个Token(如`sqp_123456`)。 2. **配置项目** - 在项目根目录创建 `sonar-project.properties`: ```properties sonar.projectKey=my-java-project sonar.projectName=My Java 8 Project sonar.java.source=8 sonar.java.binaries=target/classes # 编译后的class文件路径 sonar.sources=src/main/java # 源代码路径 sonar.host.url=http://localhost:9000 sonar.login=sqp_123456 # 替换为你的Token ``` 3. **执行代码分析** ```bash # 使用Maven(需JDK 8编译) mvn clean install mvn sonar:sonar -Dsonar.login=sqp_123456 # 或使用SonarScanner sonar-scanner -Dsonar.java.binaries=target/classes ``` --- ### **六、常见问题** 1. **Java版本冲突** - 确保SonarQube服务端使用Java 11,项目编译和分析使用JDK 8。 2. **数据库连接失败** - 检查PostgreSQL配置、用户名密码及权限。 3. **权限不足** - 确保`/opt/sonarqube`目录属主为`sonarqube`用户。 4. **端口占用** - 修改`sonar.web.port`或关闭占用9000端口的进程。 --- 完成以上步骤后,即可在SonarQube界面查看Java 8项目的代码质量报告。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值