自动化测试工具 | SonarQube 的安装与使用

简介

SonarQube(原名Sonar)是一个开源的代码质量管理系统,可以扫描项目中重复代码、编码标准、单元测试、代码覆盖率、代码复杂度、潜在Bug、注释等.

支持Java、C/C++、C#、PHP、Flex、Groovy、JavaScript、Python等多种语言.

代码扫码的好处在于通过配置规则扫描代码设计缺陷和代码优化从而提高代码的质量.

本文介绍使用docker技术搭建SonarQube环境并扫描代码.

环境搭建

快速启动

这种方式启动sonarqube是没有数据存储的,docker重新加载后数据不会reload数据.

docker run -d --name sonarqube -p 9000:9000 -p 9092:9092 sonarqube:lts

浏览器打开:0.0.0.0:9000
帐号密码:admin、admin

全配置启动

docker启动mysql

使用mysql作为数据存储,通过如下命令启动:

docker run --name mysql-5.6 -v /Users/xinxi/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123321 
-p 8888:3306 -d mysql:5.6

sonarqube不支持mysql5.5版本,最低支持5.6版本

docker启动sonarqube

需要注意两点:

  • db_sonar数据库需要手动先创建,否则会报找不到

  • 本地搭建ip地址不能写localhost,需要写内网ip

启动命令如下:

docker run -d --name Sonarqube -p 8185:9000 -p 8186:9092 
-e "SONARQUBE_JDBC_USERNAME=root"
-e "SONARQUBE_JDBC_PASSWORD=123321"
-e "SONARQUBE_JDBC_URL=jdbc:mysql://192.168.129.25:8888/
db_sonar?useUnicode=true&characterEncoding=utf8"
-d sonarqube:lts

效果

启动成功以后,第一次页登录成功后会设置token,这个token是以后被扫描代码工程中需要配置的,用于通过token的方式连接Sonarqube平台传数据结果

Android项目配置

Android项目是使用gradle管理插件,所以需要配置gradle文件.

在项目根目录的gradle配置如下:

buildscript {
 repositories {
   maven {
     url "https://plugins.gradle.org/m2/"
   }
 }
 dependencies {
   classpath "org.sonarsource.scanner.gradle:sonarqube-gradle-plugin:2.5"
 }
}

plugins {
 # 添加插件信息
 id "org.sonarqube" version "2.6-rc1"
}

apply plugin: "org.sonarqube"

执行命令:

gradle sonarqube \
 -Dsonar.host.url=http://localhost:8186 \
 -Dsonar.login=a1cf2c8dbdc187441c3f908b79b562404b9a4f6b

另外配置方式是在gradle.properties配置文件

上传结果成功

扫描结果

mvn项目配置

运行命令

mvn sonar:sonar   -Dsonar.host.url=http://localhost:9000   -Dsonar.login=c8ce928f1497f1fa5591cdcf5357aa4e44920796

扫描结果

iOS项目配置

安装

先需要安装如下工具

brew tap oclint/formulae
brew install oclint
brew install sonar-scanner
brew install gcovr

项目配置

需要在项目根目录增加run-sonar.sh和sonar-project.properties两个文件

具体配置请参考Demo代码

运行命令

在项目根目录下,sh run-sonar.sh

踩坑

提示没有oc插件

通过sonarqube安装的oc插件是收费的,下载免费的oc插件.

https://github.com/Backelite/sonar-objective-c

然后把backelite-sonar-objective-c-plugin-0.6.3.jar放到sonarqube的extensions/plugins中,然后重启镜像.

效果展示

制作镜像

sonarqube原生不支持中文、并且没有oc插件.可以把汉化中文包和oc插件打包成新的docker镜像

把sonar-l10n-zh-plugin-1.16.jar、backelite-sonar-objective-c-plugin-0.6.3.jar和dockerfile放到一个目录下

dockerfile如下:

dockfile:
FROM sonarqube
ADD sonar-l10n-zh-plugin-1.16.jar /opt/sonarqube/extensions/plugins/
ADD backelite-sonar-objective-c-plugin-0.6.3.jar /opt/sonarqube/extensions/plugins/

执行:docker build -t sonarqube:zh .

jenkins持续集成

使用Android项目为例,首先需要在Jenkins中安装sonarqube插件,然后在系统设置中配置SonarQube的servers地址

新建job并配置git地址

在构建处选择Execute SonarQube Scanner中配置如下

提示需要java插件

在SonarQube中安装java插件并且重启

扫描代码完成并且上传扫码结果

SonarQube查看扫描结果

结语

SonarQube是一款优秀代码扫描工具,可以通过静态扫码代码的方式发现编码问题,代码扫描是一种低成本高收益的方式,在持续集成中是必不可少的环节.

学习帖

SonarQube的安装与使用

https://blog.imyxiao.com/docker/sonarqube.html

SonarQube 中文插件安装

https://www.jianshu.com/p/6cc4632628b1

使用Jenkins进行Android自动打包及SonarQube代码自动检测

http://blog.51cto.com/536410/2052972

oclint官方

http://oclint.org

IOS-Sonar代码质量监控

https://blog.csdn.net/helloworld_junyang/article/details/53836001

基于Sonar的iOS代码质量检测系统

https://blog.csdn.net/hualusiyu/article/details/79349025

iOS Sonar集成流程详解

https://www.jianshu.com/p/74bee59fef1c

Docker构建SonarQube检测代码质量平台

https://blog.csdn.net/OneZhous/article/details/80527953

SonarQube + Jenkins Pipeline配置

https://blog.csdn.net/liuxinghao/article/details/77967158

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值