Jenkins和SonarQube集成

Posted by 夏泽民

Jenkins与SonarQube 集成插件的安装与配置 Jenkins 是一个支持自动化框架的服务器,我们这里不做详细介绍。Jenkins 提供了相关的插件,使得 SonarQube 可以很容易地集成 ,登陆 jenkins,点击”Manage Jenkins”,选择“Mange Plugins”点击“Avzilable”,搜索“Sonar”选中“SonarQube Scanner for Jenkins”点击安装插件,安装后好如下图: 点击”Manage Jenkins”,选择“Configure System”将SonarQube server的信息填入,点击保存。如图: 在jenkinse服务器上下载sonar-scanner,下载地址:https://sonarsource.bintray.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-3.0.3.778-linux.zip



sonarQube之平台搭建及sonar-scanner扫描

Posted by 夏泽民

SonarQube为静态代码检查工具,采用B/S架构,帮助检查代码缺陷,改善代码质量,提高开发速度,通过插件形式,可以支持Java、C、C++、JavaScripe等等二十几种编程语言的代码质量管理与检测。 通过客户端插件分析源代码,sonar客户端可以采用IDE插件、Sonar-Scanner插件、Ant插件和Maven插件方式,并通过各种不同的分析机制对项目源代码进行分析和扫描,并把分析扫描后的结果上传到sonar的数据库,通过sonar web界面对分析结果进行管理 架构图 可以从七个维度检测代码质量: (1)复杂度分布(complexity):代码复杂度过高将难以理解 (2) 重复代码(duplications):程序中包含大量复制、粘贴的代码而导致代码臃肿,sonar可以展示源码中重复严重的地方 (3) 单元测试统计(unit tests):统计并展示单元测试覆盖率,开发或测试可以清楚测试代码的覆盖情况 (4) 代码规则检查(coding rules):通过Findbugs,PMD,CheckStyle等检查代码是否符合规范 (5) 注释率(comments):若代码注释过少,特别是人员变动后,其他人接手比较难接手;若过多,又不利于阅读 (6) 潜在的Bug(potential bugs):通过Findbugs,PMD,CheckStyle等检测潜在的bug (7) 结构与设计(architecture & design):找出循环,展示包与包、类与类之间的依赖、检查程序之间耦合度 SonarQube安装 搭建分两大步:服务端跟客户端 服务端 ◆进入条件: 1、准备Java环境,这里略去配置 2、需要安装MySQL (支持数据库种类见sonar.properties),这里略去配置 3、sonar https://docs.sonarqube.org ◆数据库配置: 1、创建sonar数据库 2、选择conf/sonar.properties文件,配置数据库设置,默认已经提供了各类数据库的支持,这里选择MySQL数据库,默认已经准备了支持各种数据库,只需将MySQL注释部分去掉,顺便改了sonarQube的端口sonar.web.port=1011 sonar.jdbc.url=jdbc:mysql://localhost:1010/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance sonar.jdbc.driver=com.mysql.jdbc.Driver sonar.jdbc.username=root sonar.jdbc.password=root ◆sonar 将下载的soar安装包后,解压,随意放置一个地方 注:JDK的环境和系统环境,要对应,我是windows系统,JDK位64位,选windows-x86-64 进入bin目录后,点击SonarStart.bat,页面输入http://localhost:1011/,进入页面,配置成功 客户端 前面已经说了客户端可以通过IDE插件、Sonar-Scanner插件、Ant插件和Maven插件方式进行扫描分析,这一节先记录Sonar-Scanner扫描 ◆下载sonar-scanner解压,将bin文件加入环境变量path中如我的路径E:\sonar\sonar-scanner\bin将此路径加入path中 ◆修改sonar scanner配置文件, conf/sonar-scanner.properties。根据数据库使用情况进行取消相关的注释即可,同时需要添加数据库用户名和密码信息,即配置要访问的sonar服务和mysql服务器地址 ◆创建sonar-project.properties文件,以java工程为例在工程根目录下新建立一个sonar-project.properties配置文件



sendfile

Posted by 夏泽民

如今几乎每个人都听说过Linux中所谓的”零拷贝”特性,然而我经常碰到没有充分理解这个问题的人们。因此,我决定写一些文章略微深入的讲述这个问题,希望能将这个有用的特性解释清楚。在本文中,将从用户空间应用程序的角度来阐述这个问题,因此有意忽略了复杂的内核实现。



php流Streams、包装器wrapper

Posted by 夏泽民

流Streams这个概念是在php4.3引进的,是对流式数据的抽象,用于统一数据操作,比如文件数据、网络数据、压缩数据等,以使可以共享同一套函数, php的文件系统函数就是这样的共享,比如file_get_contents()函数即可打开本地文件也可以访问url就是这一体现。简单点讲,流就是表现出流式数据行为的资源对象。 以线性方式进行读写,并可以在流里面任意位置进行搜索。 流有点类似数据库抽象层,在数据库抽象层方面,不管使用何种数据库,在抽象层之上都使用相同的方式操作数据, 而流是对数据的抽象,它不管是本地文件还是远程文件还是压缩文件等等,只要来的是流式数据,那么操作方式就是一样的 有了流这个概念就引申出了包装器wrapper这个概念,每个流都对应一种包装器, 流是从统一操作这个角度产生的一个概念,而包装器呢是从理解流数据内容出发产生的一个概念,也就是这个统一的操作方式怎么操作或配置不同的内容; 这些内容都是以流的方式呈现,但内容规则是不一样的,比如http协议传来的数据是流的方式,但只有http包装器才理解http协议传来的数据的意思, 可以这么理解,流就是一根流水的管子,只不过它流出的是数据,包装器就是套在流这根管子外层的一个解释者,它理解流出的数据的意思,并能操作它 官方手册说:“一个包装器是告诉流怎么处理特殊协议或编码的附加代码”明白这句话的意思了吗?



phar

Posted by 夏泽民

一个php应用程序往往是由多个文件构成的,如果能把他们集中为一个文件来分发和运行是很方便的,这样的列子有很多,比如在window操作系统上面的安装程序、一个jquery库等等,为了做到这点php采用了phar文档文件格式,这个概念源自java的jar,但是在设计时主要针对 PHP 的 Web 环境,与 JAR 归档不同的是Phar 归档可由 PHP 本身处理,因此不需要使用额外的工具来创建或使用,使用php脚本就能创建或提取它。phar是一个合成词,由PHP 和 Archive构成,可以看出它是php归档文件的意思。 关于phar的官网文档请见http://php.net/manual/en/book.phar.php



Search

Popular posts

Anything in here will be replaced on browsers that support the canvas element

Recent posts

This blog is maintained by 夏泽民

Get in touch with me at 465474307@qq.com

Subscribe to our mailing list

* indicates required