2019独角兽企业重金招聘Python工程师标准>>>

平台架构

如下图所示,整个代码管理平台由,Analysers, Server , Database 组成。 当然,根据需求不同 SonarQube 也支持 Eclipse 等IDE的集成。

在这里我们主要介绍由   Analysers, Server , Database 组成的平台。

Server : 指的是SonarQube 服务器,提供代码管理与分析的源数据(例如,分析规则—Rules)和展示平台。

Database : 用来存储Server 的信息和Analyser的 分析数据。

Analysers: 准确来说,这里的Analysers 指的是由不同方式集成于项目,或独立的代码分析程序或插件。

例如,Analyser 可以集成在 Maven 里, Jenkins里 或者独立的 Sonar-Runner.

部署方式

很多时候,代码质量监控都是基于持续集成系统,从而完善整个持续集成流程。这里主要介绍怎样在Jenkins 上快速部署 SonarQube,以达到代码质量统一管理; 怎样让每个程序员可以独立的检查自己的代码质量,以增加每次集成的质量。

1. 准备数据库

2. 安装 ,配置Sonar-Qube 服务器

3. 安装,配置Jenkins  SonarQube 插件

4. 安装,配置 Sonar-runner

准备数据库

Sonar-Qube 支持多种数据库,在这里我们使用 Mysql. 进入 Mysql , 然后运行以下命令来创建数据库和授予数据库权限。

mysql> CREATE DATABASE sonar CHARACTER SET utf8 COLLATE utf8_general_ci;

mysql> CREATE USER 'sonar' IDENTIFIED BY 'sonar';

mysql> GRANT ALL ON sonar.* TO 'sonar'@'%' IDENTIFIED BY 'sonar';

mysql> GRANT ALL ON sonar.* TO 'sonar'@'localhost' IDENTIFIED BY 'sonar';

mysql> FLUSH PRIVILEGES;

安装 Sonar-Qube 服务器

下载最新版本的 Sonar-Qube , 解压缩到本地安装路径。

Sonar-Qube 提供非常简单有效的配置方式,本例中我们只需要修改位于 Conf 文件下的 sonar.properties 文件。

主要修改项目如下:

sonar.jdbc.username=sonar

sonar.jdbc.password=sonar

sonar.jdbc.url=jdbc:mysql://“数据库IP地址”:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance

sonar.web.host=”sonar web 界面地址”

sonar.web.context=“sonar web 环境路径” 默认用 /

sonar.web.port=”sonar web 端口”

安装,配置Jenkins  SonarQube 插件

进入Jenkins 插件管理页面,安装SonarQube 插件。

安装完后,Jenkins 主要有SonarQube 和 Sonar-Runner 两个配置项。(默认SonarQube 登陆账户为admin , 密码为admin。)

Jenkins服务器安装Sonar-Runner

下砸并解压Sonar-Runner 到本地安装路径,并配置Jenkins sonar-runner 指向安装路径

本地机 安装Sonar-Runner

下载并解压Sonar-Runner 到本地安装路径,并添加本地环境变量为 sonar-runner-2.4/bin

本地机器必须修改位于sonar-runner-2.4/conf 文件夹下的sonar-runner.properties文件。(Jenkins 服务器可选,因为Jenkins 会缺省加载SonarQube的配置)。 主要配置项如下:

sonar.host.url=http://localhost:8100

sonar.jdbc.url=jdbc:mysql://”数据库IP地址”:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance (这里使用的是Mysql 数据库)

sonar.jdbc.username=sonar

sonar.jdbc.password=sonar

sonar.login=admin

sonar.password=admin

代码质量管理

配置完所有工具以后,就可以进入SonarQube 安装路径的bin 文件,并找与服务器操作系统想对应的文件夹。 然后运行 sonar start,来启动SonarQube 服务器。

代码分析配置:

在Jenkins 里的配置如下图。具体配置项可参考http://docs.sonarqube.org/display/SONAR/Analyzing+with+SonarQube+Runner

本地运行Sonar-Runner 则需要在待分析的项目根目录里创建一个名为sonar-project.properties 的文件,然后添加 Analysis properties 的代码分析配置项。然后在命令行里进入到待分析项目根目录并执行 sonar-runner。

这样代码既可以通过Jenkins Job来监控代码库,也可以让程序员自己先检查然后在集成入主代码库。

代码分析执行完后,根据SonarQube里web 选项中所配置的信息,登陆查看分析结果。

默认地址为 localhost:9000。 具体分析结果如下图:

总结

当模块之间的联系越来越复杂,代码质量管理也面临越来越多的困难,SonarQube 代码质量管理系统给个推解决了很大的难题,这套解决方案帮助个推更好的进行产品迭代和优化,由此个推也能给广大开发者们提供更优质的推送技术服务!

转载于:https://my.oschina.net/u/1782938/blog/517950

个推如何管理亿级代码的质量?持续集成SonarQube 代码质量管理系统相关推荐

  1. DevOps之持续集成SonarQube代码质量扫描

          SonarQube是一个用于代码质量检测管理的开放平台,可以集成不同的检测工具,代码分析工具,以及持续集成工具.SonarQube 并不是简单地把不同的代码检查工具结果直接显示在 Web ...

  2. Kafka万亿级消息实战干货~持续更新中

    完整文章地址:https://mp.weixin.qq.com/s/4t4k6aO_1P_wSH6pU2geog 文章目录 一.Kafka应用层面 1.版本升级 2.数据/副本迁移 3.流量限制 4. ...

  3. 持续集成之“依赖管理”

    转自: http://www.infoq.com/cn/news/2011/05/ci-dependency-management http://kb.cnblogs.com/page/101101/ ...

  4. jenkins集成sonarQube实现代码质量检查

    1.sonarQube的简介 SonarQube是一款自动化代码审查工具,用于检测代码中的错误.漏洞和代码异味.它可以与你现有的工作流集成,以支持跨项目分支和拉取请求的连续代码检查. 其工作流程如下: ...

  5. Jenkins 在 Tomcat 中的部署及代码静态检查工具集成

    Jenkins 的简单部署 在安装了 Jenkins 运行所需的依赖(主要是 JDK)之后,可以通过如下步骤简单快速地部署 Jenkins: 下载 Jenkins. 打开终端并切换至下载目录. 运行命 ...

  6. Docker+Jenkins持续集成环境(3)集成PMD、FindBugs、Checkstyle静态代码检查工具并邮件发送检查结果...

    为了规范代码,我们一般会集成静态代码检测工具,比如PMD.FindBugs.Checkstyle,那么Jenkins如何集成这些检查工具,并把检查结果放到构建邮件里呢? 今天做了调研和实现,过程如下 ...

  7. 【一图流思维导图】QA质量管理 持续集成 代码质量 数据工厂

    QA质量管理 持续集成 快速交付效率 开发实践 为团队成员频繁的集成他们的工作 ci前后对比 问题暴露晚 业务交付时间快速增长 服务越多,多支开发成本大大增加 研发模式 代码 构建 测试 测试预发布平 ...

  8. 为何Google、微软、华为将亿级源代码放一个仓库?从全球最大代码管理库说起...

    作者 | 夕颜 编辑 | Just 出品 | AI 科技大本营(ID:rgznai100) [导读]2017 年,在当时微软的一篇官方博客中,时任微软云开发服务副总裁的 Brian Harry 表示微 ...

  9. 百亿级实时消息推送的实战之道,与王者荣耀一班车就是这么稳!

    要说现在市面上最火爆的手游,莫非拥有两亿注册用户的王者荣耀了.据悉,王者荣耀的渗透率高达22.3%,这意味着每7个中国人中就有一位是王者荣耀注册用户.众所周知,手游App对推送实时性和精准性要求非常高 ...

最新文章

  1. python的windows出现问题_Windows下使用python库 curses遇到错误消息的解决方案
  2. HighNewTech:70后、80后、90后、95后职场人大数据调查(有趣的五个结论)——源于猎聘网
  3. 2017年第八届蓝桥杯 - 省赛 - C/C++大学A组 - G. 正则问题
  4. APP上架证书无效:解决
  5. 日本电影《摇摆》:男人之间的心灵碰撞
  6. jest测试ajax,ajax – 如何使用Jest来测试React呈现的异步数据?
  7. node mysql安装目录_nodejs 指定全局安装路径和缓存路径
  8. 跨站脚本专题 XSS
  9. 在超市使用室内地图的5个好处
  10. 苹果开发者账号可以创建多少测试证书_配置2020苹果开发者账号证书的简要说明...
  11. 成功将qt程序移植到arm板上
  12. CKEditor/FCKEditor 使用-CKEditor(FCKeditor)精简版大全
  13. 手游用户数据分析平台
  14. 阿里面试经历与感受谈
  15. 推荐一个谷歌浏览器插件:划词翻译
  16. android恢复 模式,Android Doze模式使用命令启用和恢复
  17. 用python 获取当前时间(年-月-日 时:分:秒),并且返回当前时间的下一秒
  18. 2013年5月上海乌镇游
  19. CTime/COleDateTime::Format方法的使用
  20. 笔记 | 绝对值不等式

热门文章

  1. 目标检测voc转coco改良版
  2. 简记SqueezeNet
  3. 第十五章:交互式界面(十一)
  4. 郎永淳妻子抗癌4年路:儿子弃读名校陪治病(转)
  5. Java 网络编程(三) 创建和使用URL访问网络上的资源
  6. (译)我的第一游戏完成之后的5点心得体会
  7. 在JavaScript中实现命名空间
  8. mysql4语法_4 MySQL 语法技巧
  9. 大数据可视化面临哪些挑战
  10. 报错ValueError: check_hostname requires server_hostname