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腳本自始至終只有一份,作業中執行代碼規范檢查的命令也相同,大大減輕了手工配置可能帶來的錯誤。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM