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

摘要:
初始化完成后将看到首页三、扫描项目示例1、初始化Token通过默认账号密码admin,admin登录SonarQube,这时候会弹出引导输入TokenName,然后点击Generate就会生成token,点击Continue然后选择Java-Maven项目,这时候token创建后,一旦窗口关闭就不能查询,只能再次创建,所以我们要先将token复制下来保存。

一、前言

1、本文主要内容

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

2、环境信息

工具/环境

版本

CentOS

CentOS 7.6(IP:192.168.88.45)

SonarQube

7.5

JDK

1.8.0

MySQL

5.7

3、准备工作

  • 安装JDK1.8

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

  • 安装MySQL

参考:https://ken.io/note/centos-mysql57-setup

二、部署SonarQube

1、基础准备

  • 安装必要的软件包
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账号下启动

2、准备数据库及账号

#进入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;

3、下载

  • 准备软件以及数据目录
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

4、配置环境变量

#修改profile文件
sudo vi /etc/profile
#在文件末尾增加变量:SONAR_HOME
export SONAR_HOME=/usr/sonar/sonarqube-7.5
#使变量生效
source /etc/profile
#测试
echo $SONAR_HOME

5、配置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以下的端口的,否则会启动失败

6、开放端口

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

7、启动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

如果启动完成,但是依然不能访问,可以通过以下命令查看启动日志

cat $SONAR_HOME/logs/web.log

成功启动后,可以访问 http://192.168.88.45:9000

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

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

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

三、扫描项目示例

1、初始化Token

通过默认账号密码 admin,admin登录SonarQube,这时候会弹出引导

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

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

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

token创建后,一旦窗口关闭就不能查询,只能再次创建,所以我们要先将token复制下来保存。

token创建:http://192.168.88.45:9000/account/security/

2、项目准备

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

如果已有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>

3、扫描并提交

#进入项目根目录
cd sonardemo
#执行扫描
mvn sonar:sonar 
  -Dsonar.host.url=http://192.168.88.45:9000 
  -Dsonar.login=8e359701283af794e8b77f3029863a1be7ad8ee4

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

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

点击项目名字可以查看扫描详情

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

4、报表指标简介

指标

简介

Bugs

bug个数及评分

Vulnerabilities

安全漏洞个数及评分

Debt

债务(代码问题)持续时间

Code Smells

轻微问题:代码风格等等

Coverage

单元测试覆盖率

Duplications

代码重复率

Duplicated Blocks

代码重复块数

四、备注

1、附录


本文首发于我的独立博客:https://ken.io/note/sonarqube-install-and-code-scan-tutorial

免责声明:文章转载自《SonarQube部署及代码质量扫描入门教程》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Docker 部署Jira8.1.0java中的JUC组件(Semaphore、CountDownLatch、CyclicBarrier)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

webpack使用的心得

1 . 我们需要使用打包工具,首先第一步就得 执行 npm install进行安装,可是很多时候 加载速度很慢,这个时候我们可以 用淘宝镜像源,参考地址: https://npm.taobao.org/ 使用方法如下: npm install --registry=https://registry.npm.taobao.org 全局配置镜像源: 淘宝镜像:...

Splunk系列:Splunk安装部署篇(一)

一、Splunk概述   splunk 是机器数据的引擎。   splunk 提供一整套解决方案。日志收集、存储、分析、可视化展示为一体。   官网:https://www.splunk.com     https://www.splunk.com/zh-hans_cn   部署,配置,SPL语言,分析,可视化展示。   教程:https://docs.s...

家中路由添加静态IP映射(二)

家中的路由器普遍通过DHCP向连接到此路由器的客户主机提供IP配置方式,但是一般都是动态IP; 假设需要静态IP配置到个人电脑,就要在路由器上进行配置IP和MAC地址映射关系。如上篇截图。路由器端配置完,继续在本地主机配置。 我的操作系统是Ubuntu16.04,默认使用NetworkManager管理网络连接,所以首先由禁用NetworkManager...

STM32 SWD下载口无法下载的原因和解决办法

1.SWD的下载口在程序中被禁用,IO口被设置为普通IO口 2.芯片被锁,原因有可能是程序执行了不正确的访问导致芯片被锁 3.供电不正常 4.SWD烧了 解锁原因: 在下载程序的时候有时候会发生错误导致内核停止工作,这就意味着内核被锁,这时候已经无法把程序下载进去了。 解决的办法就是用ISP方式下载程序进去冲刷一遍,然后就好用了。 除非使能了读保护,不...

网易开源游戏服务器框架-Pomelo实践(一)

Pomelo是网易开发的一款开源游戏服务器框架,出了做游戏的服务器端,他也可以作为一个高效的网站后台。网址是:http://pomelo.netease.com 其实,他官方的文档是中文的,照理说,我不用再写博客记录下详细的操作步骤了,但是发现里面还是有一些错误的,所以。。。还是要记录点东西。 1. 安装:参考https://github.com/Net...

在Mac下使用crontab执行定时脚本

基本设置命令 在终端里输入: sudo crontab -e 查看定时任务 crontab -l 删除定时任务 crontab -r 如果无法使用定时任务crontab 解决方法: sudo vim ~/.vimrc 添加如下内容并保存 autocmd filetype crontab setlocal nobackup nowriteb...