1、名词解释
Ant
Ant是一种基于Java的build工具, 类似于C中的Msbuild与devenv, Ant被广为使用的是其build.xml功能,这个文件可以集成多种工具,并进行持续编译至打包完成,也可以理解为一个简单的持续集成环境
PMD
PMD是一款采用BSD协议发布的Java程序代码检查工具。该工具检查源文件的潜在问题,可以做到检查Java代码中是否含有未使用的变量、是否含有空的抓取块、是否含有不必要的对象等。我们所使用的是 pmd-src-5.0.4 版本
CheckStyle
CheckStyle是SourceForge下的一个项目,提供了一个帮助JAVA开发人员遵守某些编码规范的工具。例如javadoc注释, 命名规范等,它能够自动化代码规范检查过程,从而使得开发人员从这项重要,但是枯燥的任务中解脱出来
2、build.xml详解
Ant的javac任务来编译java程序
<?xmlversion="1.0"?>
<!—设置变量-->
<projectname="wendy">
<propertyname="classes"value="F:\data\build\classes"/>
<propertyname="build"value="F:\data\build"/>
<propertyname="lib"value="F:\data\WebRoot\WEB-INF/lib"/>
<!—删除build路径-->
<targetname="clean">
<deletedir="build"/>
</target>
<!-- 建立build/classes路径,并编译class文件到此路径下-->
<targetname="compile"depends="clean">
<mkdirdir="${classes}"/>
<javacsrcdir="src\jit\diy\obj"destdir="${classes}"/>
</target>
使用Ant的jar任务生成jar文件
<targetname="jar"depends="run">
<jardestfile="test.jar"basedir="${classes}">
<manifest>
<attributename="Main-class"value="test"/>
</manifest>
</jar>
</target>
使用Ant的war任务打包J2EE Web项目
<targetname="war"depends="compile">
<wardestfile="${build}/webproject.war"webxml="WebRoot/WEB-INF/web.xml">
<!—拷贝webroot下除了WEB-INF和META-INF的两个文件夹-->
<filesetdir="WebRoot"includes="**/*.jsp"/>
<!—拷贝lib下的jar包-->
<libdir="${lib}"/>
<!—拷贝build\class下的class文件-->
<classesdir="${classes}"/>
</war>
</target>
3、 集成PMD节点
<pathid="pmd.path">
<filesetdir="${lib.dir}/pmd-src-5.0.4">
<includename="**/*.jar" />
</fileset>
</path>
<taskdefname="pmd"classname="net.sourceforge.pmd.ant.PMDTask"lasspathref="pmd.path"/>
<taskdefname="cpd"classname="net.sourceforge.pmd.cpd.CPDTask"classpathref="pmd.path"/>
<targetname="pmd">
<pmdshortFilenames="true">
<!—设置检查规则文件-->
<ruleset>java\basic.xml</ruleset>
<!—设置report生成路径-->
<formattertype="html"toFile="${report.dir}/foo.html"toConsole="false"/>
<filesetdir="${src.dir}">
<!—设置检查文件-->
<includename="**/*.java"/>
</fileset>
</pmd>
</target>
<targetname="cpd">
<!—设置重复代码循环次数及生成文件路径-->
<cpdminimumTokenCount="100"outputFile="f:/report/cpd.txt">
<filesetdir="${src.dir}">
<includename="**/*.java"/>
</fileset>
</cpd>
</target>
4、集成CheckStyle
<targetname="my_check"depends="init">
<taskdefresource="checkstyletask.properties"classpath="${checkstyle.dir}\checkstyle-5.6-all.jar"/>
<!—设置检查规则文件-->
<checkstyleconfig="${checkstyle.dir}\test_checkstyle.xml">
<!—设置被检查文件-->
<filesetdir="F:\data\src"includes="**/*.java"/>
<formattertype="plain" />
<!—设置检查结果输出-->
<formattertype="xml"toFile="${result.dir}\checkstyle_report.xml" />
</checkstyle>
</target>
<targetname="xml2html"depends="my_check">
<!—设置html检查结果输出-->
<xsltin="${result.dir}\checkstyle_report.xml"out="${result.html}\checkstyle.html"style="${checkstyle.dir}\contrib\checkstyle-frames-errors.xsl">
</xslt>
</target>
5、检查方法
如果你已经有了ant或类似CruiseControl.Net等脚本形式的持续构建环境,只需要添加这些节点正常运行脚本就可以了
如果你是配置管理人员,需要对开发代码进行审核汇报,那么你可以写一个bat,包含以下内容,将bat放到ant的安装目录下,定期执行即可以pmd为例,checkstyle同理:
ant –f f:\build_pmd.xml pmdcpd
如果你是研发人员,则不需要这样麻烦,直接找个可以集成到IDE里的插件就可以了,在编译的时候执行代码检查,这样比较便于研发人员修改,网上就可以搜的到,如果有找不到的可以联系我单独发给你J