Jenkins系列——使用checkstyle进行代码规范检查【升级版】
1.背景
在《Jenkins系列——使用checkstyle进行代码规范检查》一文中完成了ant实现代码规范检查的例子。但存在以下缺陷:
- 每个作业都需要配置一个不同的checkstyle ant脚本,而这个脚本中的多数代码是重复的。
- 报告采取覆盖方式,而我们有时需要保留一定构建次数的报告。
2.分析
- 使用变量代替ant脚本中变化的路径,这个变量通过ant命令的 -Dxxx=value 的方式传值。
- 建立名为${BUILD_NUMBER}的目录,将该次构建成功的报告保留在该目录下。
3.环境
同《Jenkins系列——使用checkstyle进行代码规范检查》中的环境。
4.验证
4.1 修改checkstyle的ANT脚本
checkstyle脚本如下:
<?xml version="1.0" encoding="UTF-8"?> <project name="checkstyle" default="checkstyle" basedir="."> <!-- 检查源码的路径 --> <target name="init"> <tstamp/> <!-- 输出报告的路径 --> <property name="project.dir" value="${JENKINS_WORKSPACE}\${JOB_NAME}"/> <property name="project.checkstyle.report.dir" value="${project.dir}\checkstyle_report\${BUILD_NUMBER}"/> <property name="project.checkstyle.result.name" value="checkstyle-result.xml"/> <property name="project.checkstyle.report.name" value="checkstyle-report.html"/> <!-- 检测规则存放路径 --> <property name="checkstyle.config" value="${CHECKSTYLE_INSTALL}\sun_checks.xml"/> <property name="checkstyle.report.style" value="${CHECKSTYLE_INSTALL}\contrib\checkstyle-author.xsl"/> <property name="checkstyle.result" value="${project.checkstyle.report.dir}\${project.checkstyle.result.name}"/> <property name="checkstyle.report" value="${project.checkstyle.report.dir}\${project.checkstyle.report.name}"/> <mkdir dir="${project.checkstyle.report.dir}"/> </target> <taskdef resource="checkstyletask.properties" classpath="${CHECKSTYLE_INSTALL}\checkstyle-5.7-all.jar" /> <target name="checkstyle" depends="init" description="check java code and report." > <checkstyle config="${checkstyle.config}" failureProperty="checkstyle.failure" failOnViolation="false"> <formatter type="xml" tofile="${checkstyle.result}" /> <fileset dir="${project.dir}" includes="**/*.java" /> <!-- 检查源代码的存放路径 --> </checkstyle> <!-- 通过指定的xsl模版文件生成一份html的报告,这里生成的文件用于邮件发送时附加上,另外Jenkins插件也会生成可视化的结果 --> <style in="${checkstyle.result}" out="${checkstyle.report}" style="${checkstyle.report.style}" /> </target> </project>
4.2 配置job
新建一个job,取名CheckstyleDemo2_CODE,配置如下:
文字版(便于复制):
Jenkins 配置set ANTFILE_PATH=D:\data\jenkins\etc\checkstyle-build.xml set JENKINS_WORKSPACE=D:\data\jenkins\workspace set CHECKSTYLE_INSTALL=D:\data\jenkins\myConf\checkstyle-5.7 ant -f %ANTFILE_PATH% -DJENKINS_WORKSPACE=%JENKINS_WORKSPACE% -DCHECKSTYLE_INSTALL=%CHECKSTYLE_INSTALL% -DBUILD_NUMBER=%BUILD_NUMBER% -DJOB_NAME=%JOB_NAME%
点击构建,得到构建成功的结果:
工作区如下:
可见,改造后的checkstyle运行达到了预期效果。
4.3 通过配置另一个job验证效果(无需改动配置)
新建一个job,取名CheckstyleDemo3_CODE,直接copy CheckstyleDemo2_CODE,仅需改动SVN源码路径及访问该SVN路径的权限信息。
构建后情况如下:
5.总结
经过以上的改造,checkstyle 的ANT脚本自始至终只有一份,作业中执行代码规范检查的命令也相同,大大减轻了手工配置可能带来的错误。