搭建docker+sonarqube并使用scanner、maven分析项目

一、搭建docker+sonarqube

步骤1:进入服务器,创建一个文件夹sonarqube

$ ssh root@ip
$ mkdir sonarqube
$ cd sonarqube

# 可以选用临时或者正式部署方案

# 临时部署方案

# 通用部署
$ docker run -d \
  --name sonarqube_temp \
  -p 9000:9000 -p 9092:9092 \
  sonarqube
 
# mac部署
$ docker run -d \
  --name sonarqube_temp \
  -p 9000:9000 -p 9092:9092 \
  --platform linux/x86_64 \
  -e SONAR_SEARCH_JAVAADDITIONALOPTS="-Dbootstrap.system_call_filter=false" \
  sonarqube

步骤2:正式环境部署方案

# 创建容器网络
$ docker network create sonarqube

步骤3:创建数据库容器实例

#创建数据库容器实例
docker run -d \
  --name sonarqube_postgres \
  --network sonarqube \
  -e POSTGRES_USER=sonarqube \
  -e POSTGRES_PASSWORD=sonarqube \
  -e PGDATA=/var/lib/postgresql/data/pgdata \
  -v $PWD/postgresql_data:/var/lib/postgresql/data \
  postgres

步骤4:创建sonarqube容器实例

# 创建sonarqube容器实例,可以通过-Xms4g -Xmx4g增加下ES的堆内存大小
# mac环境需要加 -e SONAR_SEARCH_JAVAADDITIONALOPTS="-Dbootstrap.system_call_filter=false"
$ docker run -d  \
  --name sonarqube_lu \
  -p 9000:9000 -p 9092:9092 \
  --network sonarqube \
  -e SONARQUBE_JDBC_USERNAME=sonarqube \
  -e SONARQUBE_JDBC_PASSWORD=sonarqube \
  -e SONARQUBE_JDBC_URL="jdbc:postgresql://sonarqube_postgres/sonarqube" \
  -e SONAR_SEARCH_JAVAADDITIONALOPTS="-Xms2g -Xmx2g" \
  -e SONARQUBE_WEB_JVM_OPTS="-Xms1g -Xmx1g" \
  -v $PWD/sonarqube_data:/opt/sonarqube/data \
  -v $PWD/sonarqube_extensions:/opt/sonarqube/extensions \
  -v $PWD/sonarqube_logs:/opt/sonarqube/logs \
  sonarqube

步骤5:浏览器输入ip:9000进入sonarqube,初始用户名密码:admin/admin

步骤6:进入My account-security生成token方便使用

步骤7:将他们配置到   ~/.bash_profile

​$ vim  ~/.bash_profile

export SQ_HOST=http://ip:9000
export SQ_TOKEN=72fbaeca411e73e5c58c0deca30e655affea1608

​

步骤8:安装你需要的插件

 步骤9:安装完成后点击Restart重启sonoarqube

sonarqube 基本环境配置完成,接下来我们就可以去用 scanner 分析代码了

Go语言可以用scanner,java语言可以使用maven、gradle

二、使用SonarScanner分析项目

步骤1:安装SonarScanner

SonarScanner地址:SonarScanner | SonarQube Docs

docker地址:Docker Hub

# pull镜像
$ docker pull sonarsource/sonar-scanner-cli:latest

步骤2:docker scanner和项目安装在同一环境中,进入你要分析的项目的目录,目的是要将当前路径($PWD)挂在到/usr/src

步骤3:运行sonar-scanner去分析项目

# 可以进入需要分析的项目路径,然后将当前目录挂载到/usr/src
$ docker run --rm -it -e SONAR_HOST_URL=$SQ_HOST -e SONAR_LOGIN=$SQ_TOKEN -v $PWD:/usr/src sonarsource/sonar-scanner-cli:latest -Dsonar.projectKey=xxx-scanner
 

三、使用maven单模块项目代码分析

步骤1:安装java+mvn 

# 下载java11
https://www.oracle.com/java/technologies/downloads/#java11
# 进入目录并将java11移到该目录下
$ cd /usr/local/java
# 解压java到/usr/local/java
$ tar -zxvf jdk-11.0.17_linux-x64_bin.tar

# 下载apache-maven
$ wget https://dlcdn.apache.org/maven/maven-3/3.8.6/binaries/apache-maven-3.8.6-bin.tar.gz
# 解压apache-maven到/usr/local/
$ tar -zxvf apache-maven-3.8.6-bin.tar.gz

# 配置java和maven的环境变量
$ vim /etc/profile

#set Java environment
export JAVA_HOME=/usr/lib/java/jdk-11.0.17
export PATH=$JAVA_HOME/bin:JAVA_HOME/bin$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

#set Maven environment
export MAVEN_HOME=/usr/local/apache-maven-3.8.1 //这里是你的maven的路径
export PATH=$MAVEN_HOME/bin:$PATH

# 重新加载系统配置文件
$ source /etc/profile

# 检查是否安装成功
$ java -version
$ mvn -v

步骤2:配置setting.xml(可省略)

在文件中设置host、token等 

# 进入setting配置
$ cd /usr/local/apache-maven-3.8.6/conf/settings.xml

# 内容
<settings>
  <mirrors>
    <mirror>
        <id>alimaven</id>
        <mirrorOf>central</mirrorOf>
        <name>aliyun maven</name>
        <url>http://maven.aliyun.com/nexus/content/repositories/central/</url>
    </mirror>
  </mirrors>
    <pluginGroups>
        <pluginGroup>org.sonarsource.scanner.maven</pluginGroup>
    </pluginGroups>
    <profiles>
        <profile>
            <id>sonar</id>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
            <properties>
                <!-- Optional URL to server. Default value is http://localhost:9000 -->
                <sonar.host.url>
                  http://myserver:9000
                </sonar.host.url>
            </properties>
        </profile>
     </profiles>
</settings>

步骤3:进入你要分析的项目的目录,检查pom.xml文件,此处的java版本要和本地的java版本一致

步骤4:运行mvn

# 方式1:如果已经设置了settings.xml,则运行
$ mvn org.sonarsource.scanner.maven:sonar-maven-plugin:LATEST:sonar 
# 方式2:如果没有设置settings.xml,
可以直接通过命令指定host、token (前提要配置SQ_HOST、SQ_TOKEN)
使用这种方法执行就不用配置projectKey,因为会从项目中的pom.xml中读取版本号等信息

$ mvn clean verify \
  org.sonarsource.scanner.maven:sonar-maven-plugin:LATEST:sonar \
  -Dsonar.host.url=$SQ_HOST   \
  -Dsonar.login=$SQ_TOKEN \
  -Dcheckstyle.skip  \
  -Dmaven.gitcommitid.skip=true

运行成功:

步骤5:进入ip:9000查看报告

 

遇到的问题1:

# 运行mvn分析项目时报错
[ERROR] Failed to execute goal org.sonarsource.scanner.maven:sonar-maven-plugin:3.9.1.2184:sonar (default-cli) on project litemall: Execution default-cli of goal org.sonarsource.scanner.maven:sonar-maven-plugin:3.9.1.2184:sonar failed: An API incompatibility was encountered while executing org.sonarsource.scanner.maven:sonar-maven-plugin:3.9.1.2184:sonar: java.lang.UnsupportedClassVersionError: org/sonar/batch/bootstrapper/EnvironmentInformation has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0

解决1:

项目需要的java版本是11,我本地是java8,后面升级到java11就成功解决

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值