关于Java开发过程中质量提升-2自动化

  开发人员写代码过程中就实现自动代码检视,编辑器会提示编码规范错误,并给出正确实例,写完代码只需要提交到SVN库,然后启动自动化构建(可配置代码提交SVN后自动触发),测试环境中的项目马上和当前SVN库一致。告别专门召集代码检视会议(或只需要检视业务流程)、告别手工编译打包、安装。

----------------------------------------------------------------------------------从word文件copy出来,懒得弄图片了,so 无图。

第一章Jenkins配置

jenkins是一个广泛用于持续构建的可视化web工具,持续构建说得更直白点,就是各种项目的"自动化"编译、打包、分发部署。jenkins可以很好的支持各种语言(比如:java, c#, php, python等几乎所有语言)的项目构建,也完全兼容ant、maven、gradle等多种第三方构建工具,同时跟svn、git能无缝集成,也支持直接与知名源代码托管网站,比如github、bitbucket直接集成。

jenkins本身是用java语言开发的,所以安装jenkins的机器至少要有jdk,另外建议git/svn、ant/maven/gradle等工具也一并安装好,方便与这些构建工具集成。

1.1 安装Jenkins

可以直接在jenkins官方网站上:https://jenkins.io/index.html

下载jenkins的文件jenkins.war文件

有两种启动方法。

首先保证系统中已经安装了jdk,最好是jdk1.8, 并配置好环境变量。

第一种启动方法,切换到jenkins.war存放的目录,输入如下命令:

$ java -jar jenkins.war

然后在浏览器中输入http://localhost:8080,localhost可以是本机的ip,也可以是计算机名。就可以打开jenkins

第二种方法是用jetty打开

将jenkins.war文件放入jetty下的webapps目录下,启动jenkins时,在地址栏上输入

http://localhost:8080/jenkins 就可以访问

1.2 配置Jenkins

由于Jenkins配置在网上资料很多,这里只列出关键操作:

1、  登录Jenkins,选择“系统管理->插件管理->可选插件”,安装如下插件;

a)         邮件插件:Email Extension Plugin

b)        Maven插件:Maven Integration plugin

c)         SVN插件:SVN Publisher plugin

d)        SSH插件:SSH plugin/Publish Over SSH

刚安装需要等一会儿才有插件列表,如果安装失败就看下失败原因,一般是因为有依赖插件未安装(在插件管理中选择的都会自动把依赖插件一起安装好),只需安装提示插件即可,有时候也会因为网络原因需要安装多次才能装上。

2、  完成插件安装后,选择“系统管理->系统设置”,配置邮件和相关服务器信息即可

  Remote Directory是指定SSH进入的目录,注意先确认用户是否有权限。

3、  完成系统配置后,选择“系统管理-> Global Tool Configuration”,配置JDK和Maven

  JDK和Maven需要预先安装好,然后再这里指定安装目录。

1.3 创建Job

1、创建项目

a)登录Jenkins,选择“新建”,输入项目名称后选择“创建一个自由风格的软件项目”

b)进入上面建的Job,选择“配置”,进入配置界面

c)配置“丢弃旧的构建”

  这里主要是配置构建任务的保留数

d)配置“源码管理”和“构建触发器”

  如果公司的SVN库被加密,所以这里选择“None”,后面步骤中采用将代码下载到“/home/XXX/.jenkins/workspace/Job名称”目录中。

  选择“Build periodically”可以定时启动构建任务,比如每天凌晨1点启动构建,另外“Poll SCM”是定时检查源码库提交情况来启动构建,由于这里没有使用源码管理,所以该选项用不上。如果有源码管理,该配置会根据指定频率检测代码变化,触发构建。

e)配置“构建环境”

  i.如果公司SVN被加密,SVN插件不能用,所以在构建前先到服务器下载代码,选择“Send files or execute commands over SSH before the build starts”指定构建服务器,调用下载代码的脚本sh buildSVN.sh jobID svnURL例如:“sh /home/XXX/jenkins/build/buildSVN.sh JOBID SVNURL”。

  ii. 接上面完成代码下载后,可以选择“Add Transfer Set”再加一个,到安装服务器上执行安装前数据清理操作。

iii. 完成前置操作之后,就可以配置打完包之后的操作了,选择“Send files or execute commands over SSH after the build runs”是在打完包之后进行的操作,由于项目的发布/转测试模式是打完包后,直接发邮件通知配置管理员到打包目录获取软件包,然后配置管理员根据软件包中的SVN版本号进行打分支,所以这需要做软包添加SVN版本号的处理

 iv.完成软件包处理之后,就可以将软件包上传到安装服务器上进行安装了,这里支持集群安装,有多少个集群只需要选择添加多个“Add Transfer Set”就行了

自动安装得先有自动安装脚本,这里也就是解压、调用setup.sh脚本

f)最后就是配置“构建”和“构建后的操作”

配置maven编译、打包工具, 邮件根据实际情况配置即可,其他不需要编译的非Java项目,可以不需要配“构建”选项

构建后操作,选择邮件组件,然后加上需要发送和抄送人

2、  完成配置后,直接选择“保存”,然后选择“立即构建”

a)         选择自动创建的构建任务,可以查看任务执行情况

b)        进入“Console Output”查看实时构建信息

至此,整个Jenkins操作完成!

1.4 注意事项

1、  只搭一套环境,大家都统一使用这一套即可,不要再重复维护其他的环境,直接在该环节创建Job即可,方便统一管理。

2、  启动后所有文件都存贮在 /home/用户名/.jenkins 目录下,可以通过备份/.jenkins/job/项目名/config.xml文件来保留配置。

3、  请不要随意修改其他人的Job,创建自己的就好。

第二章SonarQube配置

Sonar是一个用于代码质量管理的开源平台,用于管理源代码的质量,可以从七个维度检测代码质量,通过插件形式,可以支持包括java, C#, C/C++, PL/SQL, Cobol, JavaScrip, Groovy,Python等等二十几种编程语言的代码质量管理与检测。

2.1安装SonarQube预置条件

1、  已安装Java环境

2、  已安装有数据库(支持多种数据库,我们这里用公司统一的PostgreSQL)

3、  软件下载地址:http://www.sonarqube.org/downloads/

4、  下载SonarQube与SonarQube Runner

5、  数据库配置:

进入数据库命令

su postgres

psql

create user sonar with password ‘sonar‘;

create database sonar owner sonar;

grant all privileges on database sonar to sonar;

2.2安装SonarQube和 sonar-runner

安装sonar与sonar-runner

a)  
将下载的sonar-3.7.zip包解压至Linux某路径如/usr/local

b)  
将下载的sonar-runner-dist-2.3.zip包解压某路径/usr/local

c)  
添加SONAR_HOME、SONAR_RUNNER_HOME环境变量,并将SONAR_RUNNER_HOME加入PATH

d)  
修改sonar配置文件

修改/conf/sonar.properties文件,配置数据库设置,默认已经提供了各类数据库的支持

这里使用PostgreSQL,因此取消PostgreSQL模块的注释,然后

e)    
修改sonar-runner的配置文件

修改/conf/sonar-scanner.properties文件

2.3配置SonarQube

1、 执行安装目标下/bin/linux-x86-64/sonar.sh
start|stop|restart 就可以进行启停重启操作。

2、 启动服务后访问http:\\localhost:9000即可

3、 登录SonarQube服务器后,可以查看项目中的问题、指标,并可以对代码规则、质量配置、质量阀和系统进行设置

4、
其中质量配置和质量阀都可以每个项目创建自己的标准,然后在项目指定即可

5、 如果有些指标项目需要调整,可以直接在问题中对相关指标进行修改

6、 修改完指标和阀值后重新运行sonar-runner就会根据最新规则进行分析

2.4配置sonar-runner

1、
在项目源码的根目录下创建sonar-project.properties配置文件,文件内容如下

sonar.projectKey=项目名

sonar.projectName=Simple Android project analyzed with the SonarQube Runner

sonar.projectVersion=1.0

sonar.sources=src

sonar.binaries=bin/classes

sonar.language=java

sonar.sourceEncoding=UTF-8

这里language可以是C/C++/Python等其他语言

2、
因为环境变量已配置,可在任意目录下执行sonar-runner命令,运行完成后登录到SonaQube,就可以查看刚刚添加的项目分析情况了

2.5Eclipse配置SonarLint插件(Java)

1、
打开eclipse,进入help->Eclipse Marketplace,输入sonar,安装sonarLint

2、
完成安装重启eclipse后,在window->show view中选择Sonar三个视图

3、
在SonarQube
Service中配置SonarQube服务信息

4、
最后右击项目工程,选择SonarLint->build…
然后选择对应的项目(可以在Sonar服务上配置好项目,供这里选择,也可以不配置)

5、
最后打开类文件就可以看到实时的分析结果了

该操作只用于eclipse,其他项目可以使用sonar-runner分析后登录SonarQube服务器上查看分析结果。

2.6注意事项

1、  只搭一套环境,大家都统一使用这一套即可,不要再重复维护其他的环境,直接在该环节创建Job即可,方便统一管理。

2、  每个项目可以到SonarQube服务器定制自己的编码规范,都创建自己项目的,其他项目的不要动。

3、  Jenkins自动化过程中,调用SVN代码下载之后会调用自动代码分析,需要注意在代码根目录添加sonar-project.properties配置文件。

时间: 2024-12-27 18:52:19

关于Java开发过程中质量提升-2自动化的相关文章

java开发过程中从前台传到后台中文乱码《filter》

在企业开发中,最常见的是javaweb项目,有web项目就免不了和后台打交道,比如我从jsp页面发送新增请求到后台,后台可能是servlet.struts2.springmvc等,这时就存在一个问题,在发送的参数值中如果包含中文经常到了后台你发现会是乱码,当然你可以在后台拿到值后对值进行重新编码,但是如果每次都要进行重新编码,会很麻烦,这里介绍一中简单的方式,希望可以对你有用. filter filter叫做过滤器,是java servlet中的技术,通过filter我们可以对要访问的web服务

Java 开发过程中发现的一个小问题java.lang.NullPointerException

if (detailtable.length > 0) { DetailTable dt = detailtable[i];// 针对每一个明细表遍历 Row[] s = dt.getRow();// 获取每一个明细表的行数组 log.info("明细表长度detail table length:"+s.length);           Common_OA_Detail[]  detailsobject=new Common_OA_Detail[s.length];//根据行

JAVA开发过程中的各种小坑

1.有时候你在本地跑的ECLIPSE中得到的正确的结果,部署到服务器上使用其他容器,如tomcat或WARS的时候,跑出的结果也许就不一致, 我们程序员会经常抱怨,在我机器上跑的好好的. 在不同的容器中,相同的代码有时候表现出不一致的结果,甚是需要注意,例如下面这个小例子. BeanFactoryContext.getWc().getServletContext().getRealPath("/"); 获取项目的基地址,这个代码是有效的. this.getClass().getReso

java开发过程中几种常用算法

排序算法 排序算法中包括:简单排序.高级排序 简单排序 简单排序常用的有:冒泡排序.选择排序.插入排序 冒泡排序代码如下: 1 private static void bubbleSrot(int[] arr) { 2 3 for (int i = 0; i < arr.length - 1; i++) { 4 5 for (int j = i + 1; j < arr.length; j++) { 6 7 if (arr[i] > arr[j]) { 8 9 int temp = ar

jsp开发过程中的连接池的作用

在今天利用java做网络编程项目的时候,安全性以及系统的运行速度都是每一个开发者都需要考虑的问题.尤其是在对java商城开发以及jsp商城的开发中,连接池的使用以及配置更为重要,为什么会如此说了,下面我们的开发人员就来带大家深入的了解一下java开发过程中的连接池. 数据库每个读写操作需要一个连接,而它的访问流程大概如下: 应用数据层向DataSource请求数据库连接 DataSource使用数据库Driver打开数据库连接 创建数据库连接,打开TCP socket 应用读/写数据库 如果该连

java表达式类型自动提升

[一道经典的Java面试题] short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错? 答案是:前者错,后者对.相信不管是否经历过java面试过,大家一定对这道题很熟悉.因为这道题确实太经典了,以至于成为了基本每个老师都会拿出来,当作课堂例题来讲.要说清这道题,首先看看java表达式类型转换规则. [java表达式类型转换] java是一门强类型语言,不仅每个变量具有指定的数据类型,它的表达式也有指定的数据类型.因此在不同类型之间进行

java编程中的性能提升问题

java编程中的性能提升 软件产品犹如一栋大楼,大楼在建设初期,会有楼房规划,建筑构想,打牢地基,后面才是施工人员进行进行实质性的建设.要保证软件产品的高质量,优秀的架构,优秀的产品设计,是产生高质量的前提.同时,没有过硬的编码实现,一样得不到预期的效果.纵观现在的产品,产品架构没多大差别,基本运用基线版本进行局点定制.而系统中的一些功能性能常常不过关,问题往往就出在编码实现上.这块是开发人员在开发过程中需要注意的.在JAVA程序中,性能问题的大部分原因并不在于JAVA语言,而是程序本身.养成良

关于Java运算中类型自动提升的问题

1.表达式中的自动类型提升: 表达式求值时,Java自动的隐含的将每个byte.short或char操作数提升为int类型,这些类型的包装类型也是可以的. 例如:short s1 = 1; s1 = s1 + 1; s1+1运算中的操作数s1会被自动提升为int类型,s1+1运算结果会成为int类型,再赋值给short类型的s1时,编译器会报告需要强制转换类型的错误.需要改为short s1=1; s1=(short)(s1+1);结果就是short类型. 例如:short s1 = 1; s1

android app 开发过程中 对于性能优化的总结

一款手机应用  从开发过程中就要做好 性能优化,这样才能 让用户体验度 提升, 假如 我们打开一个应用 出现卡顿, 不流畅,则会很影响 用户对该应用的态度,产品狗 都很注意这些人机交互方面的 体验. 谷歌官方也是一直在优化 android 系统,不论是  碎片化处理 还是 系能 上面,这方面 ios 就做的比较好,配置比 android 低,但是流畅度却比android高,体验效果更好. 官方推荐方案:http://www.oschina.net/news/60157/android-perfo