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

Posted 叶莜落

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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.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%
Jenkins 配置

 

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

  

    工作区如下:

  

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

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

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

构建后情况如下: 

 

5.总结

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

以上是关于Jenkins系列——使用checkstyle进行代码规范检查升级版的主要内容,如果未能解决你的问题,请参考以下文章

让 Checkstyle 自定义规则在 Hudson/Jenkins 中工作

jenkins+checkstyle

centos7+maven+jenkins+checkstyle 构建总是java.io.EOFException异常

IDEA插件系列(62):CheckStyle-IDEA插件——对Java文件的实时和按需扫描

Sonar 集成Jenkins进行代码审查

配置sonar和jenkins进行代码审查