首页 > 代码库 > Jenkins系列——使用checkstyle进行代码规范检查【升级版】

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>
checkstyle-build.xml

4.2 配置job

新建一个job,取名CheckstyleDemo2_CODE,配置如下:技术分享

文字版(便于复制):

技术分享
set ANTFILE_PATH=D:\data\jenkins\etc\checkstyle-build.xmlset JENKINS_WORKSPACE=D:\data\jenkins\workspaceset CHECKSTYLE_INSTALL=D:\data\jenkins\myConf\checkstyle-5.7ant -f %ANTFILE_PATH% -DJENKINS_WORKSPACE=%JENKINS_WORKSPACE% -DCHECKSTYLE_INSTALL=%CHECKSTYLE_INSTALL% -DBUILD_NUMBER=%BUILD_NUMBER% -DJOB_NAME=%JOB_NAME%
Jenkins 配置

 

点击构建,得到构建成功的结果:

  技术分享

    工作区如下:

  技术分享

  可见,改造后的checkstyle运行达到了预期效果。

4.3 通过配置另一个job验证效果(无需改动配置)

  新建一个job,取名CheckstyleDemo3_CODE,直接copy CheckstyleDemo2_CODE,仅需改动SVN源码路径及访问该SVN路径的权限信息。

构建后情况如下: 

 技术分享

5.总结

  经过以上的改造,checkstyle 的ANT脚本自始至终只有一份,作业中执行代码规范检查的命令也相同,大大减轻了手工配置可能带来的错误。

Jenkins系列——使用checkstyle进行代码规范检查【升级版】