sonarqube代码检查平台

部署文档:http://blog.leanote.com/post/gyb1/SonarQube

集成jenkins:https://www.youyoubai.com/index.php/2020/09/14/sonarqube%E9%9B%86%E6%88%90jenkins%E8%87%AA%E5%8A%A8%E5%8C%96%E6%A3%80%E6%9F%A5%E4%BB%A3%E7%A0%81/

1 部署文档docker-compose

https://www.wangairui.com/api/docker/edit/

2 手动部署8.9.3版本

环境要求

  • 1、centos7 x64

  • 2、jdk11

  • 3、postqresql10及以上版本

  • 4、sonarqube 8.9.1

  • 5、服务器配置2核8G

2.1 jdk11版本

yum install -y vim lrzsz wget unzip epel-release
yum install -y java-11-openjdk java-11-openjdk-devel

添加环境变量

vim /etc/profile
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-11.0.11.0.9-1.el7_9.x86_64
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin

2.2 下载8.9.3版本

https://www.sonarqube.org/downloads/

2.3 初始化环境

2.3.1 内核修改
vim /etc/sysctl.conf
vm.max_map_count=262144
fs.file-max=65536

执行生效

sysctl  -p
2.3.2 文件数
vim /etc/security/limits.conf
*    soft    nofile    65536
*    hard    nofile    65536
*    soft    nproc    4096
*    hard    nproc    4096

2.4 解压安装包

cd /opt
unzip sonarqube-8.9.3.48735.zip
mkdir /data/
mv sonarqube-8.9.3.48735 /data/sonarqube

2.5 修改配置文件 postgresql 12 我直接使用阿里云rds

mv  /data/sonarqube/conf/sonar.properties /data/sonarqube/conf/sonar.properties_bak
vim /data/sonarqube/conf/sonar.properties
sonar.jdbc.username=用户名
sonar.jdbc.password=密码
sonar.jdbc.url=jdbc:postgresql://xxxxx:5432/sonar?
sonar.web.javaOpts=-Xmx2048m -Xms1024m -XX:+HeapDumpOnOutOfMemoryError
sonar.web.host=本机IP
sonar.web.port=9000
sonar.ce.javaOpts=-Xmx2048m -Xms1024m -XX:+HeapDumpOnOutOfMemoryError
sonar.search.javaOpts=-Xmx3096m -Xms3096m -XX:MaxDirectMemorySize=1024m -XX:+HeapDumpOnOutOfMemoryError
sonar.path.data=/data/sonarqube/data
sonar.path.temp=/data/sonarqube/temp
sonar.jdbc.maxActive=60
sonar.jdbc.maxIdle=5
sonar.jdbc.minIdle=2
sonar.jdbc.maxWait=5000
sonar.jdbc.minEvictableIdleTimeMillis=600000
sonar.jdbc.timeBetweenEvictionRunsMillis=30000
sonar.jdbc.removeAbandoned=true
sonar.jdbc.removeAbandonedTimeout=60

2.6 授权并使用普通用户启动

useradd sonarqube
chmod -R 755 /data/sonarqube
chown -R sonarqube.sonarqube /data/sonarqube
su sonarqube
/data/sonarqube/bin/linux-x86-64/sonar.sh start

2.7 扩展设置sonar系统systemd服务

vim /etc/systemd/system/sonar.service
[Unit]
Description=SonarQube Server
After=syslog.target network.target

[Service] 
Type=forking
ExecStart=/data/sonarqube/bin/linux-x86-64/sonar.sh start
ExecStop= /data/sonarqube/bin/linux-x86-64/sonar.sh stop
LimitNOFILE=65536
LimitNPROC=4096
User=sonar
Group=sonar
Restart=on-failure
[Install]

WantedBy=multi-user.target

自动启动

systemctl restart sonar.service
systemctl enable sonar.service

3 安装界面

web访问
http://IP:9000
username:admin
password: admin

4 插件安装

5 配置maven

1 使用 SonarQube 分析 Maven 项目

下面我们以一个 Java Maven 项目 mavenDemo 为例,看下如何配置,以及 SonarQube 分析结果查看。
注意:这里有个兼容性选择问题,

  • 如果 SonarQube >= 4.5,那么 maven-sonar-plugin >= 2.7,

  • 如果 SonarQube < 4.5,那么 maven-sonar-plugin = 2.6;

  • 如果 Maven >= 3.0,那么maven-sonar-plugin >= 3.1,

  • 如果 Maven < 3.0,那么 maven-sonar-plugin = 3.0.2。

1.1 首先,我们需要配置 Maven 的 setting.xml文件,增加 sonarQube 配置。

<settings>
    <pluginGroups>
        <pluginGroup>org.sonarsource.scanner.maven</pluginGroup>
    </pluginGroups>
    <profiles>
        <profile>
            <id>sonar</id>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
            <properties>
                <!-- 配置 Sonar Host地址,默认:http://localhost:9000 -->
                <sonar.host.url>
                  http://myserver:9000
                </sonar.host.url>
            </properties>
        </profile>
     </profiles>
</settings>

1.2 Maven 工程目录执行

mvn clean verify sonar:sonar 
mvn clean install sonar:sonar

1.3 指定使用某个版本的 sonar-maven-plugin 插件,比如 3.3.0.603 版本,可以有两种方式:

一、修改 pom.xml 文件

<build>
  <plugins>
    <plugin>
      <groupId>org.sonarsource.scanner.maven</groupId>
      <artifactId>sonar-maven-plugin</artifactId>
      <version>3.3.0.603</version>
    </plugin>
  </plugins>
</build>

二、使用 mvn 命令指定

mvn clean install org.sonarsource.scanner.maven:sonar-maven-plugin:3.3.0.603:sonar

2 执行完毕之后,可以去 web页面查看分析结果。