sonarqube 代码质量检测

sonarqube 代码质量检测

介绍

主要检测,代码规范,代码错误,代码漏洞。

  1. SonarQube基础java开发,需安装open JDK8版本

  2. SonarQube需要依赖MySQL数据库,至少5.6版本以上

  3. SonarQube的小型实例至少4G内存,如果大型实例需要16G内存

在7.6以后版本,需要安装JDK11,并且不再支持MySQL需要使用PostgreSQL

PostgreSQL部署

# 更换postgresql的yum源
[root@web01 ~]# rpm -ivh https://mirrors.tuna.tsinghua.edu.cn/postgresql/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-42.0-32.noarch.rpm

# 修改yum源
[root@web01 ~]# sed -i 's#gpgcheck=1#gpgcheck=0#g' /etc/yum.repos.d/pgdg-redhat-all.repo

# 安装
[root@web01 ~]# yum install -y postgresql13-server

# 初始化
[root@web01 ~]# /usr/pgsql-13/bin/postgresql-13-setup initdb

# 启动postgre
[root@web01 ~]# systemctl start postgresql-13

# 启动报错原因
"/var/lib/pgsql/13/data/" is missing or empty.

# 切换用户
[root@web01 ~]# su - postgres

# 登录交互式终端
-bash-4.2$ psql

# 创建用户
postgres=# create user sonar_user with password '123';

# 创建数据库
postgres=# create database sonar_db owner sonar_user;

# 修改权限
postgres=# grant all on database sonar_db to sonar_user;

# 测试链接数据库
[root@web01 ~]# psql -d sonar_db -U sonar_user -h127.0.0.1

安装sonar(10.1)

# 0.优化
sysctl vm.max_map_count
sysctl fs.file-max
ulimit -n
ulimit -u

sysctl -w vm.max_map_count=524288
sysctl -w fs.file-max=131072
ulimit -n 131072
ulimit -u 8192

vim /etc/security/limits.conf
sonarqube   -   nofile   131072
sonarqube   -   nproc    8192

#1.上传sonarzip包
[root@web02 ~]# ll
-rw-rw-rw-  1 root root 366656421 Aug 29 10:21 sonarqube-10.1.0.73491.zip

#2.创建安装目录并解压sonarzip包至安装目录
[root@web02 ~]# mkdir /app
[root@web02 ~]# unzip sonarqube-10.1.0.73491.zip 
[root@web02 ~]# mv sonarqube-10.1.0.73491 /app/sonarqube-10.1
[root@web02 ~]# ll /app/
total 0
drwxr-xr-x 11 root root 172 Jun 20 13:51 sonarqube-10.1

#3.创建软连接
[root@web02 ~]# ln -s /app/sonarqube-10.1/ /app/sonarqube
[root@web02 ~]# ll /app/
total 0
lrwxrwxrwx  1 root root  20 Aug 29 19:01 sonarqube -> /app/sonarqube-10.1/

#4.修改配置文件
[root@web02 ~]# cd /app/sonarqube
[root@web02 sonarqube]# vim conf/sonar.properties 
sonar.jdbc.username=sonar_user
sonar.jdbc.password=123

#5.安装jdk环境
[root@web02 ~]# wget https://download.oracle.com/java/17/latest/jdk-17_linux-x64_bin.tar.gz
[root@web02 ~]# tar zxf jdk-17_linux-x64_bin.tar.gz
[root@web02 ~]# rm -rf jdk-17_linux-x64_bin.tar.gz
[root@web02 ~]# mv jdk-17.0.8 jdk-17
[root@web02 ~]# mv jdk-17 /usr/local/
[root@web02 ~]# vim /etc/profile.d/java.sh
export JAVA_HOME=/usr/local/jdk-17
export PATH=/usr/local/php/bin:/usr/local/jdk-17/bin:$PATH
[root@web02 ~]# source /etc/profile

#6.创建sonar用户并授权
[root@web02 sonarqube]# useradd sonar
[root@web02 sonarqube]# chown -R sonar:sonar /app/sonarqube*

#7.启动服务并查看端口
[root@web02 sonarqube]# su sonar /app/sonarqube/bin/linux-x86-64/sonar.sh start
[root@web02 sonarqube]# netstat -tupln | grep 9000
tcp6       0      0 :::9000                 :::*                    LISTEN      22408/java    

image-20230829162520663

image-20230829162733146

汉化sonar

image-20230829171004439

image-20230829171022944

image-20230829170953802

# 重启sonar即可
su sonar /app/sonarqube/bin/linux-x86-64/sonar.sh restart

生成token

image-20230829162910504

image-20230829170101379

squ_7829c7828b146ca06e463e1883673985bbe29f64

创建项目

image-20230829164611683

image-20230829164554899

image-20230829181309022

image-20230829190738147

image-20230829190837792

image-20230829190859237

#代码验证 //移动到jenkins工作目录下
[root@jenkins ~]# cd /var/lib/jenkins/workspace/hello-world-maven
[root@jenkins hello-world-maven]# mvn clean verify sonar:sonar \
  -Dsonar.projectKey=java \
  -Dsonar.projectName='java' \
  -Dsonar.host.url=http://10.0.0.7:9000 \
  -Dsonar.token=squ_7829c7828b146ca06e463e1883673985bbe29f64

报错:执行 Maven 插件的过程中遇到了 API 不兼容性问题。具体来说,问题是由于不同版本的 Java 编译造成的

解决方法:升级java或者降低maven版本

image-20230829202236622

#更换maven版本
[root@jenkins ~]# wget https://dlcdn.apache.org/maven/maven-3/3.9.4/binaries/apache-maven-3.9.4-bin.tar.gz --no-check-certificate

#解压
[root@jenkins ~]# tar xf apache-maven-3.9.4-bin.tar.gz -C /usr/lib/

# 配置环境变量
cat <<"EOF">/etc/profile.d/maven39.sh
export MAVEN_HOME=/usr/lib/apache-maven-3.9.4
export PATH=$PATH:$MAVEN_HOME/bin
EOF

# 修改maven下载源
vim /usr/lib/apache-maven-3.9.4/conf/settings.xml 
    <mirror>
        <id>aliyunmaven</id>
        <mirrorOf>*</mirrorOf>
        <name>阿里云公共仓库</name>
        <url>https://maven.aliyun.com/repository/public</url>
    </mirror>
# 生效当前配置
source /etc/profile

# 查看HOME路径
[root@jenkins ~]# mvn --version
Apache Maven 3.9.4 (dfbb324ad4a7c8fb0bf182e6d91b0ae20e3d2dd9)
Maven home: /usr/lib/apache-maven-3.9.4
Java version: 11.0.20, vendor: Red Hat, Inc., runtime: /usr/lib/jvm/java-11-openjdk-11.0.20.0.8-1.el7_9.x86_64
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-957.el7.x86_64", arch: "amd64", family: "unix"

# java变量设置
vim /etc/profile.d/java11.sh
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-11.0.20.0.8-1.el7_9.x86_64
export PATH=$JAVA_HOME/bin:$PATH

# 生效当前配置
source /etc/profile

网页修改信息:

image-20230829203858407

image-20230829203735537

image-20230829203827249

# 重新代码验证
[root@jenkins ~]# cd /var/lib/jenkins/workspace/hello-world-maven
[root@jenkins hello-world-maven]# mvn clean verify sonar:sonar \
  -Dsonar.projectKey=java \
  -Dsonar.projectName='java' \
  -Dsonar.host.url=http://10.0.0.7:9000 \
  -Dsonar.token=squ_7829c7828b146ca06e463e1883673985bbe29f64

image-20230829204723269

image-20230829204756215

安装sonar(7.7)

sonarqube安装前优化

## 至少2G运行内存 要装SonarQube要先做以下优化
[root@sonarqube ~]# sysctl -w vm.max_map_count=262144
vm.max_map_count = 262144
[root@sonarqube ~]# sysctl -w fs.file-max=65536
fs.file-max = 65536
[root@sonarqube ~]# ulimit -n 65536
[root@sonarqube ~]# ulimit -u 2048
[root@sonarqube ~]# vim /etc/sysctl.conf
vm.max_map_count=262144
fs.file-max=65536

## 文件描述符
[root@sonarqube ~]# vim /etc/security/limits.conf
* - nofile 65536
sonarqube - nproc 2048

sonarqube部署

# 先要安装jdk
[root@sonarqube ~]# yum install -y java

# 二进制安装mysql5.7
mysql> create database sonar charset utf8;
mysql> grant all on *.* to sonar@'localhost' identified by '123';

# 安装sonarqube7.7版本 并解压
[root@sonarqube ~]# wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-7.7.zip
[root@sonarqube ~]# mkdir /app
[root@sonarqube ~]# unzip sonarqube-7.7.zip -d /app/

# 软链接
[root@sonarqube ~]# ln -s /app/sonarqube-7.7 /app/sonarqube

# 创建sonar用户
[root@sonarqube ~]# useradd sonar

# 授权
[root@sonarqube ~]# chown -R sonar.sonar /app/sonarqube*

# 修改sonar配置文件
[root@sonarqube ~]# vim /app/sonarqube/conf/sonar.properties
sonar.jdbc.username=sonar
sonar.jdbc.password=123
sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false

# 启动sonar
[root@sonarqube ~]# su - sonar -c '/app/sonarqube/bin/linux-x86-64/sonar.sh start'

# 检查端口
[root@sonarqube ~]# netstat -lntup
cp6       0      0 :::9000                 :::*                    LISTEN      11531/java     

## 打开浏览器访问:http://10.0.0.8:9000/about

image-20230829193735134

image-20230829193808622

# token
e82aded3dc92ade7232143c12f62d67c4b448aad

image-20230829193945102

image-20230829194023903

image-20230829194050193

## 去jenkins的机器上执行一次 网页就会显示代码检测的结果了
# 进入jenkins工作目录
[root@jenkins ~]# cd /var/lib/jenkins/workspace/hello-world-maven
# 检测
[root@jenkins hello-world-maven]# mvn sonar:sonar \
  -Dsonar.projectKey=e82aded3dc92ade7232143c12f62d67c4b448aad \
  -Dsonar.host.url=http://10.0.0.8:9000 \
  -Dsonar.login=e82aded3dc92ade7232143c12f62d67c4b448aad

image-20230829194246995

image-20230829194342491

将sonar集成到jenkins

配置sonar server

image-20230829194453457

image-20230829194742181

image-20230829194813348

image-20230829195010927

image-20230830152816555

配置sonar scanner

系统管理 -> 全局工具配置 -> SonarQube Scanner 安装

image-20230830153035349

sonar scanner配置

image-20230830153115635

maven配置

image-20230830153259146

JDK配置

image-20230830153339067

配置项目

image-20230830153916734

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇