SonarQub代码分析平台部署

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介:

SonarQube构架

SonarQube(简称Sonar)是管理代码质量的开放平台,它可以快速地对代码质量进行分析,并给出合理的解决方案,提高管理效率,保证代码质量。

SonarQube框架包含以下四个部分:

  • Project

  • SonarQube Scanner

  • SonarQube Server

  • SonarQube Database

SonarQube架构

Project

是需要被分析的源码,如我们的app工程源码,SonarQube支持多种语言和多种工程结构,Andriod是属于一种多模块的Java工程。 

SonarQube Scanner

是用于执行代码分析的工具,在Project的根目录下执行,我们还需要在Project下进行SonarQube配置,其中指定了工程的相关信息,还指定了SonarQube Server的地址,SonarQube Scanner分析完毕之后,会将结果上报到该Server。

注:官方对Scanner的描述是“The SonarQube Scanner is recommended as the default launcher to analyze a project with SonarQube”,个人理解是可以用任何其它的工具替代,只要能对Source进行分析,并生成Server能构解析的数据格式上报给Server。


SonarQube Server

显示分析结果的Web Server,在SonarQube Scanner第一次将一个工程的分析结果上报给SonarQube Server后,Server上会自动创建一个工程显示分析的结果,可以在Server上设置代码质量管理相关的各种配置,如设置代码检查规则(Rule)和质量门限(Quality Gate)等。 

SonarQube配置

SonarQube支持多种工程构建方式的配置,也对应需要用不同的Scanner来执行分析过程:

  • Ant

  • Maven

  • MSBuild(Microsoft Build Engine)

  • Gradle

  • Sonar Runner


一、安装配置Sonar

1、需要下载的安装包有下面两个

https://sonarsource.bintray.com/Distribution/sonarqube/sonarqube-5.6.6.zip   #sonar安装包

https://sonarsource.bintray.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-3.0.3.778-linux.zip  #sonar scanner安装包

2、修改数据库配置

1
2
3
4
5
6
7
#mysql -u root -p
 
mysql> CREATE DATABASE sonar CHARACTER SET utf8 COLLATE utf8_general_ci; 
mysql> CREATE USER  'sonar'  IDENTIFIED BY  'Sonar123!' ;
mysql> GRANT ALL ON sonar.* TO  'sonar' @ '%'  IDENTIFIED BY  'Sonar123!' ;
mysql> GRANT ALL ON sonar.* TO  'sonar' @ 'localhost'  IDENTIFIED BY  'Sonar123!' ;
mysql> FLUSH PRIVILEGES;

3、解压修改配置

1
2
3
4
5
6
7
8
9
10
11
# unzip sonarqube-5.6.6.zip
# mv sonarqube-5.6.6 sonarqube
# cd sonarqube
修改sonar.properties配置
# vim conf/sonar.properties
sonar.jdbc.username=sonar
sonar.jdbc.password=Sonar123!
sonar.jdbc.url=jdbc:mysql: //10 .61.100.32:3306 /sonar ?useUnicode= true &characterEncoding=utf8&rewriteBatchedStatements= true &useConfigs=maxPerformance
sonar.sorceEncoding=UTF-8
sonar.login=admin
sonar.password=admin

4、启动sonarqube

1
2
3
# /home/sonarqube/bin/linux-x86-64/sonar.sh start
# netstat -ntpl |grep 9000
tcp        0      0 0.0.0.0:9000                0.0.0.0:*                   LISTEN      2045 /java

此时通过浏览器就可以打开sonarqube界面,下面开始通过配置sonar scanner来分析代码并在浏览器显示。

二、安装配置Sonar scanner

1、解压并修改配置

1
2
3
4
5
6
7
8
9
10
11
# unzip sonar-scanner-cli-3.0.3.778-linux.zip
# mv sonar-scanner-3.0.3.778-linux/ sonar-scanner
# cd sonar-scanner
# vim conf/sonar-scanner.properties
sonar.host.url=http: //10 .61.100.34:9000
sonar.sourceEncoding=UTF-8
sonar.jdbc.username=sonar
sonar.jdbc.password=Sonar123!
sonar.jdbc.url=jdbc:mysql: //10 .61.100.32:3306 /sonar ?useUnicode= true &characterEncoding=utf8
onar.login=admin
sonar.password=admin

2、拉取代码做测试用

1
# git clone http://yull:xxxxxxx@xx.xxx.xxx/rd/canbaobao.git

3、分析测试

1
2
3
4
5
6
7
8
9
10
11
# cd /home/coding/canbaobao   #切换到git代码根目录
# /home/sonarqube/sonar-scanner/bin/sonar-scanner  #成功执行完毕会有下面提示
INFO: ANALYSIS SUCCESSFUL, you can browse http: //10 .61.100.34:9000 /dashboard/index/my :project
INFO: Note that you will be able to access the updated dashboard once the server has processed the submitted analysis report
INFO: More about the report processing at http: //10 .61.100.34:9000 /api/ce/task ? id =AV0v7l4rYf3zHFnt0hqQ
INFO: ------------------------------------------------------------------------
INFO: EXECUTION SUCCESS
INFO: ------------------------------------------------------------------------
INFO: Total  time : 55.900s
INFO: Final Memory: 50M /464M
INFO: ------------------------------------------------------------------------

4、此时即可在浏览器中查看代码分析情况

wKiom1lkdHWQJf1MAACIlxSwe_0057.png-wh_50


本文转自  亮公子  51CTO博客,原文链接:http://blog.51cto.com/iyull/1946326

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
数据库
【平台开发】技术整合思考(五)代码生成代码
【平台开发】技术整合思考(五)代码生成代码
82 2
|
前端开发 Java API
如何使用线上环境进行本地代码调试
如何使用线上环境进行本地代码调试
504 0
|
小程序 测试技术 开发工具
【小程序自动化Minium】一、框架介绍和环境搭建
【小程序自动化Minium】一、框架介绍和环境搭建
【小程序自动化Minium】一、框架介绍和环境搭建
|
JSON JavaScript Go
一日一技:如何正确在自己项目里面集成别人的代码?
一日一技:如何正确在自己项目里面集成别人的代码?
525 0
一日一技:如何正确在自己项目里面集成别人的代码?
|
SQL JSON 前端开发
|
安全 IDE Java
代码分析体系及Sonarqube平台
代码分析体系及Sonarqube平台
|
监控 Java 测试技术
方案设计:基于IDEA插件开发和字节码插桩技术,实现研发交付质量自动分析
前言 二、技术实现准备 三、对字节码插桩 1. 方法入口 2. 采集信息 四、IDEA 插件开发 五、效果演示 六、总结 七、系列推荐
427 0
方案设计:基于IDEA插件开发和字节码插桩技术,实现研发交付质量自动分析
|
Java 开发工具 Android开发
Freeline:极速编译方案的开源之路
在3月1号举办的“阿里开源项目最佳实践”在线技术峰会上,蚂蚁金服客户端开发工程师黄咏分享了Freeline整个的开源历程和变化,他从不同的角度讲述了Freeline整个技术底层的原理,以及编译加速方案的对比,并分享了Freeline整个开源以来的收获和体会。
5901 0
|
安全 关系型数据库 Java
在阿里云环境下搭建基于SonarQube的自动化安全代码检测平台
本文目的主要是提供一种思路和方法,让软件开发者像测试软件功能一样,测试软件安全缺陷,并且能够融入到整个的软件开发过程中。
9029 0
|
前端开发 .NET 程序员