现在的位置: 首页 > 综合 > 正文

checkstyle+ant配置

2012年11月20日 ⁄ 综合 ⁄ 共 4253字 ⁄ 字号 评论关闭

checkstyle是apache项目组提供的一款代码规范检测工具,使用checkstyle,可以帮助开发人员快速找到不符合规范要求的代码,本文将要介绍的是如何在ant中配置checkstyle,以生成代码质量检测报告。

版本:

     checkstyle5.3,ant1.7.1及以上

ant配置文件内容

 

 

Xml代码 
<?xml version="1.0" encoding="UTF-8"?> 
<project name="Checkstyle" default="xml2html" basedir="."> 
    <property file="build.properties" /> 
 
    <!--前面省略项目中的其他target --> 
    <!-- 定义lib存放目录 --> 
    <property name="lib.dir" value="${basedir}/lib/checkstyle5.3" /> 
 
    <!-- 定义输出结果目录 --> 
    <property name="result.dir" value="${basedir}/result" /> 
 
    <!-- 定义输出结果目录 --> 
    <property name="result.html" value="${basedir}/result/html" /> 
    <!-- 定义源码目录 配置该文件时请确认此目录 --> 
    <property name="src.dir" value="${basedir}/../src" /> 
    <!--  初始化输出结果目录 --> 
    <target name="init"> 
        <delete dir="${result.dir}" /> 
        <mkdir dir="${result.dir}" /> 
        <SPAN style="COLOR: #ff0000"><!--<mkdir dir="${result.html}" />--></SPAN> 

    </target> 
    <!-- 引入ant的<checkstyle>命令 checkstyletask.properties文件在jar包中 --> 
    <taskdef resource="checkstyletask.properties" classpath="${basedir}/lib/checkstyle-5.3-all.jar" /> 

    <!-- 定义checkstyle执行计划 --> 
    <target name="cs" description="Generates a report of code convention violations." depends="init"> 

        <!-- 指定检查规范为GS_java_check.xml  fileset指的要检查的文件;formatter type指结果返回格式 --> 

        <checkstyle failonviolation="false" config="${lib.dir}/my_java_check.xml"> 

            <fileset dir="${basedir}/../src" includes="**/*.java" /> 
            <formatter type="plain" /> 
            <formatter type="xml" toFile="${result.dir}/checkstyle_report.xml" /> 

        </checkstyle> 
    </target> 
    <target name="xml2html" depends="cs"> 
        <!-- 将生产结果根据扩展样式表文件checkstyle-frames.xsl生成html页面,输出到html --> 
        <xslt basedir="${result.dir}" destdir="${result.html}" extension=".html" style="${lib.dir}/checkstyle-frames.xsl"> 

            <param name="output.dir" expression="${result.html}" /> 
        </xslt> 
    </target> 
</project> 

<?xml version="1.0" encoding="UTF-8"?>
<project name="Checkstyle" default="xml2html" basedir=".">
 <property file="build.properties" />

 <!--前面省略项目中的其他target -->
 <!-- 定义lib存放目录 -->
 <property name="lib.dir" value="${basedir}/lib/checkstyle5.3" />

 <!-- 定义输出结果目录 -->
 <property name="result.dir" value="${basedir}/result" />

 <!-- 定义输出结果目录 -->
 <property name="result.html" value="${basedir}/result/html" />
 <!-- 定义源码目录 配置该文件时请确认此目录 -->
 <property name="src.dir" value="${basedir}/../src" />
 <!--  初始化输出结果目录 -->
 <target name="init">
  <delete dir="${result.dir}" />
  <mkdir dir="${result.dir}" />
  <!--<mkdir dir="${result.html}" />-->
 </target>
 <!-- 引入ant的<checkstyle>命令 checkstyletask.properties文件在jar包中 -->
 <taskdef resource="checkstyletask.properties" classpath="${basedir}/lib/checkstyle-5.3-all.jar" />
 <!-- 定义checkstyle执行计划 -->
 <target name="cs" description="Generates a report of code convention violations." depends="init">
  <!-- 指定检查规范为GS_java_check.xml  fileset指的要检查的文件;formatter type指结果返回格式 -->
  <checkstyle failonviolation="false" config="${lib.dir}/my_java_check.xml">
   <fileset dir="${basedir}/../src" includes="**/*.java" />
   <formatter type="plain" />
   <formatter type="xml" toFile="${result.dir}/checkstyle_report.xml" />
  </checkstyle>
 </target>
 <target name="xml2html" depends="cs">
  <!-- 将生产结果根据扩展样式表文件checkstyle-frames.xsl生成html页面,输出到html -->
  <xslt basedir="${result.dir}" destdir="${result.html}" extension=".html" style="${lib.dir}/checkstyle-frames.xsl">
   <param name="output.dir" expression="${result.html}" />
  </xslt>
 </target>
</project>

其中my_java_check.xm为checkstyle代码规范配置文件,可以在改文件中设置代码检测条件,

如:每个方法代码行数限制、java类的总长度、try/catch嵌套次数等等;

checkstyle-frames.xs是样式配置文件,l在xml转化htm时需要用到,该文件可以在checkstyle-5.3-all.jar包中找到;

 

 

ant文件包含了3个任务:

1)初始化输出目录,包含checkstyle生成文件目录,以及转换生成html格式文件目录

2)checkstyle检测代码,并见检测结果输出到checkstyle_report.xml文件

3)根据checkstyle-noframes.xs样式表,将checkstyle_report.xm转换为html格式文件

 

注意点:

在init target中,需要将<mkdir dir="${result.html}" />去掉,否则在执行xml转换时,会提示如下错误:

 

 

[xslt] : Error! The element type "META" must be terminated by the matching end-tag "</META>".

     [xslt] : Error! com.sun.org.apache.xml.internal.utils.WrappedRuntimeException: The element type "META" must be terminated by the matching end-tag "</META>".

     [xslt] Failed to process null

 

BUILD FAILED

D:\workspace\workspace_study\test\bulid\build-cs.xml:40: javax.xml.transform.TransformerException: javax.xml.transform.TransformerException: com.sun.org.apache.xml.internal.utils.WrappedRuntimeException: The element type "META" must be terminated by the
matching end-tag "</META>".

抱歉!评论已关闭.