日期:2014-05-16  浏览次数:20526 次

findBugs 在eclispe中的使用(转载)
(1)
findbugs是一个开源的eclipse 代码检查工具;它可以简单高效全面地帮助我们发现程序代码中存在的bug,bad smell,以及潜在隐患。针对各种问题,它并且提供了简单的修改意见供我们重构时进行参考; 通过使用它,可以一定程度上降低我们code review的工作量,并且会提高review效率。 通过findbugs找到bug,再由我们自己重构代码,可以培养我们的编码意识及水平,形成好的习惯提高开发编码能力。

Findbugs与PMD,checkStyle的区别:
Findbugs主要着眼于寻找代码中的缺陷,这就与其他类似工具有些区别了,比如说Checkstyle和PMD就是根据样式(style)来改进代码质量的。FindBugs分析引擎与Checkstyle和PMD也有所不同,因为它直接操作类文件(class文件)而不是源代码。

(2)
在eclipse中安装findbug插件:
下载地址:
http://downloads.sourceforge.net/project/findbugs/findbugs%20eclipse%20plugin/1.3.9/edu.umd.cs.findbugs.plugin.eclipse_1.3.9.20090821.zip?use_mirror=ncu

1,把下载的压缩包解压后,把plugin包copy到eclipse的plugin目录中去;
2,重新启动eclipse
3,打开eclipse->window->Preferences,搜索关键字findbugs,如果能找到配置项,那么表示安装成功,如下图.
(3)
findbugs 简单易用,按照下图操作即可: 选择指定的包或者类进行findbug.
此时findbugs会遍历指定的包或者类,进行分析,找出代码bug,然后集中显示在 find bugs 的bugs explorer 中,下面我们添加bugs explorer。
bugs explorer 添加完毕后,我们就可以查看刚刚找到的bugs了,如下图.

找出的bug有3中颜色, 黑色的臭虫标志是分类, 红色的臭虫表示严重bug发现后必须修改代码,橘黄色的臭虫表示潜在警告性bug 尽量修改。(附录是各种bug的解释及修改方案,请大家按附表参考修改)
双击bug项目就可以在右边编辑窗口自动打开相关代码文件并连接到代码片段。 点击行号旁边的小臭虫图标后再eclipse下方输出区将提供详细的bug描述,以及修改建议等信息。我们可以根据此信息进行修改。
(4)
ant中使用findBugs:
从http://findbugs.sourceforge.net/downloads.html下载最新版本的Findbugs,目前的版本是1.3.0, 于2007年11
月8日发布。把解压后目录复制到项目的lib目录下,然后就可以和Ant配合使用了。FindBugs工作在j2se1.4.0或以
后的版本中,需要至少256MB内存。
8.1
在Ant脚本中,首先定义Findbugs的解压目录位置:
<path id="findbugs.path" >
     <fileset  dir ="${lib.home}/findbugs-1.3.0">
        <include  name ="**/*.jar"/>
     </fileset>
</path>
8.2
接着声明Findbugs任务:
<taskdef name="findbugs" classpathref="findbug.path"
classname="edu.umd.cs.findbugs.anttask.FindBugsTask" />
8.3
建立任务:
<target name="findbug" depends="zip"> 
  <delete dir="${findbugs.result}" />
  <mkdir dir="${findbugs.result}" />
  <findbugs home="${findbugs.path}" output="xml:withMessages" outputFile="${findbugs.result}\bug.xml"
jvmargs="-Xmx1000m" timeout="6000000"> 
<!--  以下定义findbugs查找的类路径  -->
<class location="F:\CruiseControl\projects\DM_Management_Console\assemble\dm.war.zip"></class>
<!--  以下定义源代码的路径  -->
<sourcePath path="F:\CruiseControl\projects\DM_Management_Console"></sourcePath>
<!--  以下定义上述类所依赖的类路径  -->
   <auxClasspath> 
    <fileset dir="${webapp}\lib"> 
     <include name="*.jar" /> 
    </fileset>
   </auxClasspath>
  </findbugs> 
</target>
自己做的实例分析:
                <property name="findbugs.path" value="${webapp.test.libpath}\findbugs-1.3.9"/>        
                <property name="findbugs.result" value="${webapp.checkCodesResult}\findbugs"/>        
                <path id="findbug.path">                
                                <fileset dir="${findbugs.path}">