• 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}contribcheckstyle-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:datajenkinsetccheckstyle-build.xml
    set JENKINS_WORKSPACE=D:datajenkinsworkspace
    set CHECKSTYLE_INSTALL=D:datajenkinsmyConfcheckstyle-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脚本自始至终只有一份,作业中执行代码规范检查的命令也相同,大大减轻了手工配置可能带来的错误。

  • 相关阅读:
    38
    37
    学记
    36.java_exception_test
    c++中enum的用法——枚举类型
    35
    34
    33
    32
    31
  • 原文地址:https://www.cnblogs.com/helloIT/p/6828438.html
Copyright © 2020-2023  润新知