SonarQube部署及代码质量扫描入门教程
一、前言
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、初始化Token
通过默认账号密码 admin
,admin
登录SonarQube,这时候会弹出引导

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

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
即可看到扫描结果

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

4、报表指标简介
指标 |
简介 |
---|---|
Bugs |
bug个数及评分 |
Vulnerabilities |
安全漏洞个数及评分 |
Debt |
债务(代码问题)持续时间 |
Code Smells |
轻微问题:代码风格等等 |
Coverage |
单元测试覆盖率 |
Duplications |
代码重复率 |
Duplicated Blocks |
代码重复块数 |
四、备注
1、附录
本文首发于我的独立博客:https://ken.io/note/sonarqube-install-and-code-scan-tutorial
SonarQube部署及代码质量扫描入门教程的更多相关文章
- Jenkins之自动部署、代码安全扫描、自动化接口测试
搭建Jenkins wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.reporpm --i ...
- Windows安装使用SonarQube7.4 对java项目进行代码质量扫描
我这里使用7.4因为使用JDK是1.8 其它版本看下依赖版本就好 1.下载7.4版本安装包 https://binaries.sonarsource.com/CommercialDistributio ...
- DevOps之持续集成SonarQube代码质量扫描
一.SonarQube介绍 SonarQube是一个用于代码质量检测管理的开放平台,可以集成不同的检测工具,代码分析工具,以及持续集成工具.SonarQube 并不是简单地把不同的代码检查 ...
- SonarQube代码质量扫描持续集成
1.安装JDK和配置JAVA_HOME和CLASSPATH 2.安装mysql数据库 3.创建数据库和用户 mysql -u root -p mysql> CREATE DATABASE son ...
- jenkins+sonarQube代码质量扫描 并排除指定的目录
sonar.projectKey=dev1-news-paymentsonar.projectName=dev1-news-paymentsonar.projectVersion=$BUILD_NUM ...
- Jenkins 集成Sonar代码质量扫描
Jenkins上安装插件 在jenkins插件安装界面安装: 插件名 SonarQube Scanner for Jenkins Jenkins上配置 jenkins中操作:系统管理-系统设置,找到 ...
- jenkis +sonarqube 对后端代码静态扫描,钉钉群通知执行结果(记录)
代码提交,触发后端sonar测试,测试完成,jenkins触发依赖任务,执行python脚本,达到预期,调用上线任务模块,进行上线,达不到预期,钉钉群通知. 牵涉到配置: 1.配置sonar测试任务 ...
- 2018-06-21 中文代码示例视频演示Python入门教程第五章 数据结构
知乎原链 续前作: 中文代码示例视频演示Python入门教程第四章 控制流 对应在线文档: 5. Data Structures 这一章起初还是采取了尽量与原例程相近的汉化方式, 但有些语义较偏(如T ...
- 2018-06-20 中文代码示例视频演示Python入门教程第四章 控制流
知乎原链 续前作: 中文代码示例视频演示Python入门教程第三章 简介Python 对应在线文档: 4. More Control Flow Tools 录制中出了不少岔子. 另外, 输入法确实是一 ...
随机推荐
- django基础知识之HTML转义:
HTML转义 Django对字符串进行自动HTML转义,如在模板中输出如下值: 视图代码: def index(request): return render(request, 'temtest/in ...
- 谈谈 c# 对象初始化问题
C#对象初始化 之前在学习过程中只是知道该如何初始化对象,但是却不明白为何要这么做,不这么做有什么问题. 现在就针对我最近遇到的问题(定义了全局字节数组没有初始化,然后在多线程里头使用,然后就一直报n ...
- NetCore + Mysql CodeFirst 生成数据库
首先定义领域的模型类,然后配置下面的一些东西,最后执行类 1. 新建Context 继承自 DbContext public class EFProjectContext : DbContext { ...
- [NOI2014]魔法森林题解
这道题正解其实是LCT,然而貌似SPFA也可以成功水过,所以根本不知道LCT的我只能说SPFA了. 这道题最大的限制是两种精灵就意味着一条道可能有两个权值,因此我们需要去将其中一个固定,然后再推另一个 ...
- HDU5521 Meeting(dijkstra+巧妙建图)
HDU5521 Meeting 题意: 给你n个点,它们组成了m个团,第i个团内有si个点,且每个团内的点互相之间距离为ti,问如果同时从点1和点n出发,最短耗时多少相遇 很明显题目给出的是个无负环的 ...
- .net持续集成cake篇之cake任务依赖、自定义配置荐及环境变量读取
系列目录 新建一个构建任务及任务依赖关系设置 上节我们通过新建一个HelloWorld示例讲解了如何编写build.cake以及如何下载build.ps1启动文件以及如何运行.实际项目中,我们使用最多 ...
- MFC在一个工程中启动其他工程的exe文件
说明:有的时候把两个工程合并,但是偷懒不想在工程中添加代码,所以想到了这个办法,仅限偷懒哈哈哈哈 方法:新建一个主程序,在主程序的界面中添加按钮,在按钮的程序代码中添加以下语句: void CMain ...
- mysql数据库建表分类字段--尽量少用字符串--原因探索
虽然一直都知道,类型 之类的字段 直接用字符窜会很方便,不过最好还是不要用字符串:但是也不是特别清楚为什么不要用,时间久了 就忍不住用一下字符窜试试,这一试 还挺好用的,吓得我 感觉探究了一下 为什么 ...
- 安卓图片加载框架--Universal-Image-Loader
今天来介绍图片加载的框架Android-Universal-Image-Loader GITHUB上的下载路径为:https://github.com/nostra13/Android-Univers ...
- Excel催化剂开源第29波-在Winform上使用富文本编辑器控件
富文本编辑器,一般都是BS架构专利一般,好像百度有一个开源的比较出名,但无奈这些都只能用在JS上,在BS网页端开发上使用.像Winform开发的VSTO,只能羡慕的份.和一般Winform上用的Ric ...