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

平台架构

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

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

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

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

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

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

 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 代码质量管理系统给个推解决了很大的难题,这套解决方案帮助个推更好的进行产品迭代和优化,由此个推也能给广大开发者们提供更优质的推送技术服务!

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏黑白安全

内网提权中常用命令

C:\Users\thel3l> systeminfo | findstr /B /C:"OS Name" /C:"OS Version" OS Name: M...

10620
来自专栏FreeBuf

如何用HERCULES绕过杀软

HERCULES是一个由Go语言开发的可以绕过防病毒软件的可定制的有效载荷生成器,只需简单的设置,就可以生成用于Metasploit的免杀payload,经测试...

29660
来自专栏进击的程序猿

ElasticSearch学习笔记1

先看第一个问题,如果我们用数据来实现搜索功能,可能的语句就是对 string 建立索引,或者直接 like 关键字。带来的问题是什么?

7920
来自专栏耕耘实录

Linux修改用户名及相关信息(包括root)

版权声明:本文为耕耘实录原创文章,各大自媒体平台同步更新。欢迎转载,转载请注明出处,谢谢

41720
来自专栏码匠的流水账

聊聊nginx与tomcat的5xx

本文主要讲述一下nginx与tomcat的502、504、503错误及其常见的产生原因。

22110
来自专栏坚毅的PHP

ImageMagick and JMagick install on Mac OSX

接的遗留代码,在本地运行,有jmagick-6.4.0.jar 但是出现错误: javax.servlet.ServletException: java.lan...

44860
来自专栏SDNLAB

从一个 Neutron DHCP 补丁谈起

前言 前几个星期,社区通过了一个 Patch 来解决一个遗留很久的 DHCP 相关的问题,这个 Patch 并不复杂(review 地址是 https://re...

41670
来自专栏草根专栏

常见形式 Web API 的简单分类总结

请求--响应类的API的典型做法是,通过基于HTTP的Web服务器暴露一个/套接口。API定义一些端点,客户端发送数据的请求到这些端点,Web服务器处理这些请求...

17630
来自专栏原创

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

平台架构 如下图所示,整个代码管理平台由,Analysers, Server , Database 组成。 当然,根据需求不同 SonarQube 也支持 Ec...

35250
来自专栏耕耘实录

再议Linux的禁ping设置——以CentOS7.4为例

版权声明:本文为耕耘实录原创文章,各大自媒体平台同步更新。欢迎转载,转载请注明出处,谢谢

28010

扫码关注云+社区

领取腾讯云代金券