热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

持续集成_个推怎么管理亿级代码的质量?持续集成SonarQube 代码质量管理系统

篇首语:本文由编程笔记#小编为大家整理,主要介绍了个推怎么管理亿级代码的质量?持续集成SonarQube 代码质量管理系统相关的知识,希望对你有一定的参考价值。

篇首语:本文由编程笔记#小编为大家整理,主要介绍了个推怎么管理亿级代码的质量?持续集成SonarQube 代码质量管理系统相关的知识,希望对你有一定的参考价值。


一个项目的成功与失败,系统的性能都很大程度的取决于项目的整体代码质量。

在个推,整个现网系统被分割成了许多不同功能的模块,不同的模块交由不同的小组进行开发。面对高速的版本迭代,和越来越复杂的系统逻辑。作为保证整个系统性能的重要因素之一,代码质量需要统一的管理并推广到各个开发人员。SonarQube 正是在这种情况下被集成入个推持续集成系统。下面个推技术大牛来给大家分享一些关于持续集成SonarQube 代码质量管理系统的使用经验。

平台架构

如下图所示,整个代码管理平台由,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.web.cOntext=“sonar web 环境路径” 默认用 /

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

安装,配置Jenkins SonarQube 插件


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


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


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

Jenkins服务器安装Sonar-Runner


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


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

本地机 安装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.username=sonar

sonar.jdbc.password=sonar

sonar.login=admin

sonar.password=admin

代码质量管理

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

代码分析配置:


个推怎么管理亿级代码的质量?持续集成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 选项中所配置的信息,登陆查看分析结果。


总结

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




推荐阅读
  • 本文详细介绍了SQL日志收缩的方法,包括截断日志和删除不需要的旧日志记录。通过备份日志和使用DBCC SHRINKFILE命令可以实现日志的收缩。同时,还介绍了截断日志的原理和注意事项,包括不能截断事务日志的活动部分和MinLSN的确定方法。通过本文的方法,可以有效减小逻辑日志的大小,提高数据库的性能。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 本文详细介绍了MysqlDump和mysqldump进行全库备份的相关知识,包括备份命令的使用方法、my.cnf配置文件的设置、binlog日志的位置指定、增量恢复的方式以及适用于innodb引擎和myisam引擎的备份方法。对于需要进行数据库备份的用户来说,本文提供了一些有价值的参考内容。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 如何在php文件中添加图片?
    本文详细解答了如何在php文件中添加图片的问题,包括插入图片的代码、使用PHPword在载入模板中插入图片的方法,以及使用gd库生成不同类型的图像文件的示例。同时还介绍了如何生成一个正方形文件的步骤。希望对大家有所帮助。 ... [详细]
  • springboot启动不了_Spring Boot + MyBatis 多模块搭建教程
    作者:枫本非凡来源:www.cnblogs.comorzlinp9717399.html一、前言1、创建父工程最近公司项目准备开始重构,框 ... [详细]
  • Jenkins的分布式构建,在Jenkins的配置中叫做节点,分布式构建能够让同一套代码或项目在不同的环境(如:Windows和Linux系统)中编译、部署等。将jenkins项目 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • r2dbc配置多数据源
    R2dbc配置多数据源问题根据官网配置r2dbc连接mysql多数据源所遇到的问题pom配置可以参考官网,不过我这样配置会报错我并没有这样配置将以下内容添加到pom.xml文件d ... [详细]
  • Windows7 64位系统安装PLSQL Developer的步骤和注意事项
    本文介绍了在Windows7 64位系统上安装PLSQL Developer的步骤和注意事项。首先下载并安装PLSQL Developer,注意不要安装在默认目录下。然后下载Windows 32位的oracle instant client,并解压到指定路径。最后,按照自己的喜好对解压后的文件进行命名和压缩。 ... [详细]
  • PDO MySQL
    PDOMySQL如果文章有成千上万篇,该怎样保存?数据保存有多种方式,比如单机文件、单机数据库(SQLite)、网络数据库(MySQL、MariaDB)等等。根据项目来选择,做We ... [详细]
  • MySQL语句大全:创建、授权、查询、修改等【MySQL】的使用方法详解
    本文详细介绍了MySQL语句的使用方法,包括创建用户、授权、查询、修改等操作。通过连接MySQL数据库,可以使用命令创建用户,并指定该用户在哪个主机上可以登录。同时,还可以设置用户的登录密码。通过本文,您可以全面了解MySQL语句的使用方法。 ... [详细]
  • Postgresql备份和恢复的方法及命令行操作步骤
    本文介绍了使用Postgresql进行备份和恢复的方法及命令行操作步骤。通过使用pg_dump命令进行备份,pg_restore命令进行恢复,并设置-h localhost选项,可以完成数据的备份和恢复操作。此外,本文还提供了参考链接以获取更多详细信息。 ... [详细]
author-avatar
用户k3fe6y3kps
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有