SonarQube部署及代码质量扫描入门教程

1、前言

一、本文主要内容

  • CentOS7下SonarQube部署
  • Maven扫描Java项目并将扫描结果提交到SonarQube Server
  • SonarQube扫描报表介绍

二、环境信息

工具/环境 版本
CentOS CentOS 7.6(IP:192.168.88.45)
SonarQube 7.5
JDK 1.8.0
MySQL 5.7

三、准备工做

  • 安装JDK1.8

参考:https://ken.io/note/centos-ja...java

  • 安装MySQL

参考:https://ken.io/note/centos-my...mysql

2、部署SonarQube

一、基础准备

  • 安装必要的软件包
yum install -y wget zip unzip
  • 调整系统参数
sysctl -w  vm.max_map_count=262144
sysctl -w fs.file-max=65536
ulimit -u 4096 sonarqube
ulimit -n 65536 sonarqube
  • 建立专用帐号sonar
#建立帐号并受权
useradd sonar
passwd sonar

#授予sudo权限
visudo
#在文件末尾增长
sonar    ALL=(ALL)       ALL
sonar 7.5版本必须在非root帐号下启动

二、准备数据库及帐号

#进入mysql-shell
mysql -u root -p

#新建用户
CREATE USER 'sonar'@'localhost' IDENTIFIED BY 'Sonar@2019';
CREATE USER 'sonar'@'%' IDENTIFIED BY 'Sonar@2019';

#新建数据库
CREATE DATABASE sonar;

#赋予数据库访问权限
GRANT ALL PRIVILEGES ON sonar.* TO 'sonar'@'localhost';
GRANT ALL PRIVILEGES ON sonar.* TO 'sonar'@'%';

#刷新权限
FLUSH PRIVILEGES;

#退出
quit;

三、下载

  • 准备软件以及数据目录
mkdir -p /usr/sonar
mkdir -p /sonar/data
mkdir -p /sonar/temp
  • 下载
#进入下载目录
cd /home/downloads

#下载软件包
sudo wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-7.5.zip

#解压
sudo unzip sonarqube-7.5.zip -d /usr/sonar/
  • 受权
#授予相关目录权限
chown -R sonar:sonar /usr/sonar
chown -R sonar:sonar /sonar

四、配置环境变量

#修改profile文件
sudo vi /etc/profile

#在文件末尾增长变量:SONAR_HOME
export SONAR_HOME=/usr/sonar/sonarqube-7.5

#使变量生效
source /etc/profile

#测试
echo $SONAR_HOME

五、配置Sonar

#修改配置文件
sudo vi $SONAR_HOME/conf/sonar.properties

#在配置文件开头增长如下配置

#数据库配置
sonar.jdbc.username=sonar
sonar.jdbc.password=Sonar@2019
sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useConfigs=maxPerformance&rewriteBatchedStatements=true&characterEncoding=utf8&useUnicode=true&serverTimezone=GMT%2B08:00

#文件配置
sonar.path.data=/sonar/data
sonar.path.temp=/sonar/temp

#Web配置
sonar.web.host=0.0.0.0
sonar.web.port=9000
sonar.web.context=/

这里要强调的是,端口号须要>1000,由于sonar启动是使用的非root帐号,默认是不能使用1000如下的端口的,不然会启动失败linux

六、开放端口

sudo firewall-cmd --add-port=9000/tcp --permanent
sudo firewall-cmd --reload

七、启动Sonar

#切换到sonar帐号
su sonar

#启动
sh $SONAR_HOME/bin/linux-x86-64/sonar.sh start

#启动完成会看到如下输出
Starting SonarQube...
Started SonarQube.

#若是未完成启动能够使用console命令查看启动过程当中的问题
sh $SONAR_HOME/bin/linux-x86-64/sonar.sh console
sonar支持的启动参数: console | start | stop | restart | status | dump

若是启动完成,可是依然不能访问,能够经过如下命令查看启动日志web

cat $SONAR_HOME/logs/web.log

成功启动后,能够访问 http://192.168.88.45:9000sql

sonarqube-starting

这时候SonarQube会进行初始化,好比:初始化数据库。初始化完成后将看到首页shell

sonarqube-home

3、扫描项目示例

一、初始化Token

经过默认帐号密码 admin,admin登陆SonarQube,这时候会弹出引导数据库

sonarqube-tokengenerate

输入TokenName,而后点击Generate就会生成token,点击Continue
而后选择Java-Maven项目,这时候apache

sonarqube-scancommand

token建立后,一旦窗口关闭就不能查询,只能再次建立,因此咱们要先将token复制下来保存。centos

token建立:http://192.168.88.45:9000/account/security/安全

二、项目准备

本次咱们以Java项目做为示例进行扫描,本机须要配置好了Java&Maven环境
参考:https://ken.io/note/java-quic...

若是已有Java项目能够忽略这一步

  • 建立项目
mvn archetype:generate \
-DarchetypeGroupId=org.apache.maven.archetypes \
-DarchetypeArtifactId=maven-archetype-quickstart \
-DremoteRepositories=http://maven.aliyun.com/nexus/content/groups/public \
-DgroupId=io.ken.sonar \
-DartifactId=sonardemo \
-Dpackage=io.ken.sonar \
-Dversion=1.0
  • 修改pom.xml

增长build节点,指定默认build动做以及JDK版本

<build>
    <defaultGoal>compile</defaultGoal>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.8.1</version>
        <configuration>
          <source>1.8</source>
          <target>1.8</target>
        </configuration>
      </plugin>
    </plugins>
</build>

三、扫描并提交

#进入项目根目录
cd sonardemo

#执行扫描
mvn sonar:sonar \
  -Dsonar.host.url=http://192.168.88.45:9000 \
  -Dsonar.login=8e359701283af794e8b77f3029863a1be7ad8ee4

扫描完成访问:http://192.168.88.45:9000便可看到扫描结果

sonarqube-scan-javademo

点击项目名字能够查看扫描详情

sonarqube-scan-javademo-detail

四、报表指标简介

指标 简介
Bugs bug个数及评分
Vulnerabilities 安全漏洞个数及评分
Debt 债务(代码问题)持续时间
Code Smells 轻微问题:代码风格等等
Coverage 单元测试覆盖率
Duplications 代码重复率
Duplicated Blocks 代码重复块数

4、备注

一、附录


本文首发于个人独立博客:https://ken.io/note/sonarqube...

相关文章
相关标签/搜索