51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 1128|回复: 0
打印 上一主题 下一主题

【我分享】 Jenkins+PMD构建自动化静态代码检测

[复制链接]
  • TA的每日心情
    慵懒
    2017-7-9 10:38
  • 签到天数: 13 天

    连续签到: 1 天

    [LV.3]测试连长

    跳转到指定楼层
    1#
    发表于 2014-12-30 14:53:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    前言:软件缺陷是不可避免的,要尽量减少错误并提高软件质量,主要有两在类技术,即缺陷预防和缺陷检测
    缺陷预防包括编写更好的设计规范、实施代码审核制度、运行代码静态分析工具、运行单元测试等
    PMD是一种开源分析Java代码的工具,通过静态分析获知代码错误,该工具可以做到检查Java代码中是否含有未使用的变量、是否含有空的抓取块、是否含有不必要的对象等等

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


    PMD下载地址:http://sourceforge.net/projects/pmd/
    下载后解压即可
    PMD主要可以通过ant脚本来执行,编写ant的build文件,这里新建的为如buildPMD.xml

    [xml] view plaincopy

    • <?xml version="1.0" encoding="UTF-8"?>  
    •   
    • <project name="pmd" default="pmd" basedir=".">  
    •       
    • <property environment="env">  
    • <property name="ExampleProject.location" value="../ExampleProject">  
    •     <!-- 定义pmd的classpath,均为下载的pmd包解压后lib目录下的jar包-->  
    • <path id="pmd.classpath">  
    •   <pathelement location="${basedir}/lib/asm-3.2.jar">  
    •   <pathelement location="${basedir}/lib/jaxen-1.1.1.jar">  
    •   <pathelement location="${basedir}/lib/junit-4.4.jar">  
    •   <pathelement location="${basedir}/lib/pmd-5.0.4.jar">  
    •   
    •   <!--  
    •   <fileset dir="${basedir}/lib/">  
    •       <include name="**/*.jar">  
    •    
    •   -->  
    • </include></pathelement></pathelement></pathelement></pathelement></path>  
    • <target depends="pmd_html" name="pmd">  
    •   <taskdef name="pmd" classname="net.sourceforge.pmd.ant.PMDTask" classpathref="pmd.classpath">  
    •    <!-- 定义代码检测规则,这里直接列出规则imports.xml和java-unusedcode规则,本例注释了,使用下面一种在另一文件中定义规则集-->  
    •    <!--
    •     <pmd rulesetfiles="rulesets/java/imports.xml,java-unusedcode">
    •    -->  
    •     <!-- 定义PMD检测规则所在的文件,规则集在pmdrule.xml文件中定义-->  
    •     <pmd rulesetfiles="${basedir}/pmdrule.xml" encoding="UTF-8">  
    •     <!-- 输出XML格式的报告-->  
    •     <formatter type="html" tofile="pmd_report.html" toconsole="true">  
    •     <!-- 静态代码检测ExampleProject工程下src目录下的所有java文件-->  
    •     <fileset dir="${ExampleProject.location}/src">  
    •         <include name="**/*.java">  
    •     </include></fileset>  
    •   </formatter></pmd>  
    • </taskdef></target>  
    •   
    • <target name="pmd_html">  
    •   <taskdef name="pmd" classname="net.sourceforge.pmd.ant.PMDTask" classpathref="pmd.classpath">  
    •   <!--
    •     <pmd rulesetfiles="rulesets/java/imports.xml,java-unusedcode">
    •   -->  
    •     <pmd rulesetfiles="${basedir}/pmdrule.xml" encoding="UTF-8">  
    •   <!-- 输出HTML格式的报告-->  
    •     <formatter type="xml" tofile="pmd_report.html" toconsole="true">  
    •     <fileset dir="${ExampleProject.location}/src">  
    •         <include name="**/*.java">  
    •     </include></fileset>  
    •   </formatter></pmd>  
    • </taskdef></target>  
    •   
    • </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文件请查看原文



    原文链接:http://blog.csdn.net/hunterno4/article/details/9304573


    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-23 00:28 , Processed in 0.064041 second(s), 23 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表