Sonarqube检测代码质量

发布于 7 天前  25 次阅读


Sonarqube检测代码质量

流程背景:通过开发提交代码到gitlab仓库,jenkins拉取代码,后触发检测代码,通过钉钉通知代码状态。

部署sonarqube:

系统版本:ubt22.04

安装的提前条件:

  1. 安装java openjdk17
  2. 安装postgreSQL数据库
  3. 设置系统
  4. 下载sonarqube包
  5. 配置sonarqube
  1. 安装java openjdk

apt update

apt install -y openjdk-17-jdk-headless

Java --version #查看版本

  1. 安装postgresql13.18版本数据库
  2. 首先要添加postgresql存储库的GPG密钥

wget -q https://www.postgresql.org/media/keys/ACCC4CF8.asc -O - | apt-key add -

  1. 为ubt系统添加postgresql存储库

sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/ `lsb_release -cs`-pgdg main" >> /etc/apt/sources.list.d/pgdg.list'

  1. 更新包索引

apt update

  1. 下载postgresql数据库

apt install -y postgresql-13

  1. 验证是否启动数据库

看服务状态,systemctl status postgresql

看端口5432是否启动,ss -lntup | grep 5432

若未启动,则启动,未果,看日志,没问题后,设置成开机自启enable

  1. 然后要为postgresql设置一个新的数据库和用户为sonarqube
  2. 切换到postgresql进入到数据库

su -u postgres psql

  1. 为sonarqube创建一个新的数据库和用户,并赋予权限

CREATE USER sonar WITH PASSWORD 'sonar';

CREATE DATABASE sonar OWNER sonar;

GRANT ALL PRIVILEGES ON DATABASE sonar TO sonar;

\l\du ,可以看到postgresql服务器上的数据库和用户列表

  1. 然后退出\q ,切换到root用户
  2. 设置系统
  3. 首先要为sonarqube创建一个sonar用户,因为sonarqube不允许root启动

useradd sonar -m -s /bin/bash

sonar:x:1001:1001::/home/sonar:/bin/bash

  1. 然后打开vim /etc/sysctl.conf ,在最后添加以下配置,然后应用

vm.max_map_count=524288 #sonarqube要求内核参数大于等于524288

fs.file-max=131072 #要求fs.file-max大于等于131072

sysctl --system

  1. 修改文件增大符

ulimit -n 131072

ulimit -u 8192

  1. 下载sonarqube包
  2. wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-10.5.1.90531.zip

(建议直接去官方下载Download Previous SonarQube Server Versions | Sonar (sonarsource.com))

  1. 下载好了解压

unzip sonarqube-10.5.1.90531.zip -d /opt/sonarqube

  1. 把该目录的权限改为之前创建的用户

Chown -R sonar:sonar /opt/sonarqube

  1. 配置sonarqube

打开sonarqube的配置文件 vim /etc/sonarqube/conf/sonar.properties

sonar.jdbc.username=sonar

sonar.jdbc.password=sonar

sonar.jdbc.url=jdbc:postgresql://postgresql:1234/sonar #数据库地址和用户

sonar.path.data=/var/sonarqube/data

sonar.path.temp=/var/sonarqube/temp

#sonar.web.port=9000 #默认端口9000,也可以通过该配置去设置

#sonar.web.host=0.0.0.0 #默认所有地址,也可以通过该配置去设置

  1. 然后启动sonarqube(不能用root启动,要不然会报错)

su - sonar -c '/opt/sonarqube/bin/linux-x86-64/sonar.sh start'

  1. 查看端口9000是否启动,查看服务是否正常

ss -lntup | grep 9000 ps -ef

  1. 编写systemd服务,保持开启自启动

[Unit]

Description=SonarQube service

After=syslog.target network.target

[Service]

Type=forking

ExecStart=/opt/sonarqube/bin/linux-x86-64/sonar.sh start

ExecStop=/opt/sonarqube/bin/linux-x86-64/sonar.sh stop

User=sonar

Group=sonar

Restart=always

LimitNOFILE=65536

LimitNPROC=4096

[Install]

WantedBy=multi-user.target

Ps:可选,安装中文插件

wget https://github.com/xuhuisheng/sonar-l10n-zh/releases/download/sonar-l10n-zh-plugin-10.5/sonar-l10n-zh-plugin-10.5.jar

mv sonar-l10n-zh-plugin-10.5.jar /opt/sonarqube/extensions/plugins/

重启服务即可生效!!!

Jenkins集成sonarqube

流程:开发通过git提交代码到gitlab仓库,jenkins拉取代码,触发构建步骤,开始检查代码质量,然后通过钉钉发送质检结果,也可通过webui查看

配置说明:

  1. 在sonarqube创建一个令牌用于jenkins
  2. 在 Jenkins 上配置 SonarQube 服务端地址;系统管理–>系统配置–>sonarQube (告诉jenkins,SonarQubeServers服务端地址)
  1. 添加jenkins的凭借
  2. 配置分析项(例:java)

在jenkins创建的项目中配置maven

clean verify sonar:sonar

-Dsonar.projectKey=hello #代码名

-Dsonar.projectName='hello'

-Dsonar.host.url=http://10.0.0.73:9000/ #sonarqube地址

-Dsonar.token=sqa_9cd32c816711bfe2e1db7f497c691f0a76c77994 #sonarqube的令牌

  1. 非java代码需要用到sonar-scanner工具分析
  2. 首先我们要在jenkins服务器上下载sonar-scanner,解压

wget https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-4.0.0.1744-linux.zip

unzip sonar-scanner-cli-4.0.0.1744-linux.zip -d /usr/local/

mv /usr/local/sonar-scanner-4.0.0.1744-linux /usr/local/sonar-scanner

(2)添加到jenkins的构建步骤中

/usr/local/sonar-scanner/bin/sonar-scanner \

-Dsonar.projectKey=test \

-Dsonar.sources=. \

-Dsonar.host.url=http://10.0.0.73:9000/ \

-Dsonar.token=sqa_9cd32c816711bfe2e1db7f497c691f0a76c77994

Ps : 可能会出现的报错,jdk版本问题

在sonar-scanner启动脚本里没有配置你下载的jdk版本,需要修改

然后再修改~/.bashrc 添加环境变量,指定使用的java版本

export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64

export PATH=$JAVA_HOME/bin:$PATH

曾许人间第一流
最后更新于 2025-11-28