我的新浪微博:http://weibo.com/u/1602714773 CSDN博客:http://blog.csdn.net/hunterno4

Jenkins+PMD构建自动化静态代码检测

上一篇 / 下一篇  2013-07-11 23:03:48 / 个人分类:持续集成

前言:软件缺陷是不可避免的,要尽量减少错误并提高软件质量,主要有两在类技术,即缺陷预防和缺陷检测

缺陷预防包括编写更好的设计规范、实施代码审核制度、运行代码静态分析工具、运行单元测试

PMD是一种开源分析Java代码的工具,通过静态分析获知代码错误,该工具可以做到检查Java代码中是否含有未使用的变量、是否含有空的抓取块、是否含有不必要的对象等等

因此Jenkins+PMD构建自动化静态代码检测是很有必要的


PMD下载地址:http://sourceforge.net/projects/pmd/

下载后解压即可

PMD主要可以通过ant脚本来执行,编写ant的build文件,这里新建的为如buildPMD.xml

  1. <?xml version="1.0" encoding="UTF-8"?>  
  2.   
  3. <project name="pmd" default="pmd" basedir=".">  
  4.       
  5.  <property environment="env">  
  6.  <property name="ExampleProject.location" value="../ExampleProject">  
  7.     <!-- 定义pmd的classpath,均为下载的pmd包解压后lib目录下的jar包-->  
  8. <path id="pmd.classpath">  
  9.   <pathelement location="${basedir}/lib/asm-3.2.jar">  
  10.   <pathelement location="${basedir}/lib/jaxen-1.1.1.jar">  
  11.   <pathelement location="${basedir}/lib/junit-4.4.jar">  
  12.   <pathelement location="${basedir}/lib/pmd-5.0.4.jar">  
  13.   
  14.   <!--  
  15.   <fileset dir="${basedir}/lib/">  
  16.       <include name="**/*.jar">  
  17.     
  18.   -->  
  19. </include></pathelement></pathelement></pathelement></pathelement></path>  
  20. <target depends="pmd_html" name="pmd">  
  21.   <taskdef name="pmd" classname="net.sourceforge.pmd.ant.PMDTask" classpathref="pmd.classpath">  
  22.    <!-- 定义代码检测规则,这里直接列出规则imports.xml和java-unusedcode规则,本例注释了,使用下面一种在另一文件中定义规则集-->  
  23.    <!-- 
  24.     <pmd rulesetfiles="rulesets/java/imports.xml,java-unusedcode"> 
  25.    -->  
  26.     <!-- 定义PMD检测规则所在的文件,规则集在pmdrule.xml文件中定义-->  
  27.     <pmd rulesetfiles="${basedir}/pmdrule.xml" encoding="UTF-8">  
  28.     <!-- 输出XML格式的报告-->  
  29.     <formatter type="html" tofile="pmd_report.html" toconsole="true">  
  30.     <!-- 静态代码检测ExampleProject工程下src目录下的所有java文件-->  
  31.     <fileset dir="${ExampleProject.location}/src">  
  32.         <include name="**/*.java">  
  33.     </include></fileset>  
  34.   </formatter></pmd>  
  35. </taskdef></target>  
  36.   
  37. <target name="pmd_html">  
  38.   <taskdef name="pmd" classname="net.sourceforge.pmd.ant.PMDTask" classpathref="pmd.classpath">  
  39.   <!-- 
  40.     <pmd rulesetfiles="rulesets/java/imports.xml,java-unusedcode"> 
  41.   -->  
  42.     <pmd rulesetfiles="${basedir}/pmdrule.xml" encoding="UTF-8">  
  43.   <!-- 输出HTML格式的报告-->  
  44.     <formatter type="xml" tofile="pmd_report.html" toconsole="true">  
  45.     <fileset dir="${ExampleProject.location}/src">  
  46.         <include name="**/*.java">  
  47.     </include></fileset>  
  48.   </formatter></pmd>  
  49. </taskdef></target>  
  50.   
  51. </project>  

本文中定义了两个target,分别生成了XML和HTML格式的报告,因为在Jenkins中的分析插件需要用XML格式才能生成视图报告,而XML格式对于团队来说不直观,不宜发送邮件,因此生成两份报告,一份用于Jenkins分析,一份发送邮件用于团队成员直接查看

编写好buildPMD.xml,直接使用ant -f buildPMD.xml即可在CMD命令或Linux shell下执行PMD静态代码检测

在Jenkins中新建个任务,Build项Add build step中选择“Execute Shell”,输入ant -f buildPMD.xml即可

附:pmdrule.xml


TAG: 缺陷预防 jenkins pmd 静态代码检测 自动化测试

 

评分:0

我来说两句

Open Toolbar