JAVA静态代码质量分析工具FindBugs介绍

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

findBugs(静态分析工具)FindBugs简介FindBugs的安装FindBugs的使用自定义FindBugs检测器FindBugs生成html形式的报告整理FindBugs简介FindBugs是一个专门分析JAVA代码问题的静态代码扫描工具,它是通过检查java字节码来查找代码缺陷。很多我们写的不好的地方,可以优化的地方,它都能检查出来。Findbugs是一个静态分析工具,它检查类或者JAR文件,将字节码与一组缺陷模式进行对比以发现可能的问题。利用这个工具,就可以在不实际运行程序的情况对软件进行分析。它可以帮助改进代码的质量。FindBugs能做什么FindBugs可以发现的问题包括:未关闭的数据库连接,缺少必要的nullcheck,多余的nullcheck,多余的if后置条件,相同的条件分支,重复的代码块,错误的使用了==,建议使用StringBuffer代替字符串连加等等。而且我们还可以自己配置检查规则(做哪些检查,不做哪些检查)。Findbugs提供了方便操作的可视化界面,同时也可以作为Eclipse的一个插件来使用,而我们使用得最多的还是作为Eclipse的插件来使用。FindBugs和其他工具的区别Checkstyle和PMD是根据样式(style)来改进代码质量的。FindBugs分析引擎它直接操作类文件(class文件)而不是源代码。我们可以通过命令行、各种构建工具(如Ant、CruiseControl、Hudson及Maven等)、独立的SwingGUI或是以Eclipse和NetBeansIDE插件的方式来运行FindBugs。输出结果既可以是XML的,也可以是文本形式的。FindBugs的安装Eclipse插件的安装a.在Eclipse当中分别打开一下菜单Help-SoftwareUpdates-FindandInstallb.选择Searchfornewfeaturestoinstall选项然后点击Nextc.新建一个NewRemoteSite...d.输入名称(比如:FindbugsPlug-in)和下面的URL:开始安装安装好Findbugs以后,选择Windows-ShowView-Other…-FindBugs-BugDetails打开BugDetails视图。包安装:(myeclipse安装findBugs)1、首先从findbugs网站下载插件:(附件中也有下好了的插件)2、将下载回来的zip包解压,得到文件夹:edu.umd.cs.findbugs.plugin.eclipse_2.0.1.20120712,将该文件夹拷贝到myeclipse安装目录下common/plugins目录下。我的目录结构:D:\ProgramFiles\Genuitec\Common\plugins\edu.umd.cs.findbugs.plugin.eclipse_2.0.1.201207123、修改myeclipse安装目录下configuration/org.eclipse.equinox.simpleconfigurator的bundles.info文件,在文件最后添加一行:edu.umd.cs.findbugs.plugin.eclipse,2.0.1.20120712,file:/D:/ProgramFiles/Genuitec/Common/plugins/edu.umd.cs.findbugs.plugin.eclipse_2.0.1.20120712,4,false这里file后面的路径要根据自己的目录设置进行修改,要不然重启myeclipse后,仍然找不到findbugs。4、重启myeclipse,选中项目,右键会出现一个FindBugs菜单。至此,findbugs插件安装完毕。FindBugs的使用Findbugs可以通过三种方法使用:Ant/Maven工具;通过Ant提供的Swing操作界面;作为Eclipse的一个插件来使用。Findbugs的Eclipse插件使用安装了Findbugs插件后。右击点击你要检查的项目选择【FindBugs】-【FindBugs】进行检查。要查看Findbugs检查出了哪些Bug,可以选择Windows菜单-ShowView-BugExplorer,打开BugExplorer面板。如果想要查看某个Bug详细的信息,则可以选择Windows菜单-OpenPerspective,然后选择FindBugs就可以打开FindBugs的Properties面板,在这个面板里面可以看到最详尽的Bugs信息。FindBugs的配置选择你的项目,右键=Properties=FindBugs=RunFindBugsAutomatically开关当此项选中后,FindBugs将会在你修改Java类时自动运行,如你设置了Eclipse自动编译开关后,当你修改完Java文件保存,FindBugs就会运行,并将相应的信息显示出来。当此项没有选中,你只能每次在需要的时候自己去运行FindBugs来检查你的代码。Minimumprioritytoreport选择项这个选择项是让你选择哪个级别的信息进行显示,有Low、Medium、High三个选择项可以选择,很类似于Log4J的级别设置啦。比如:你选择了High选择项,那么只有是High级别的提示信息才会被显示。你选择了Medium选择项,那么只有是Medium和High级别的提示信息才会被显示。你选择了Low选择项,那么所有级别的提示信息都会被显示Enablebugcategories选择项Correctness关于代码正确性相关方面的;Performance关于代码性能相关方面的;Internationalization关于代码国际化相关方面;Multithreadedcorrectness关于代码多线程正确性相关方面的;Style关于代码样式相关方面的;Maliciouscodevulnerability关于恶意破坏代码相关方面的;Selectbugpatternstocheckfor选择项在这里你可以选择所要进行检查的相关的BugPattern条目可以从Bugcodes、Detectorname、Detectordescription中看到相应的是要检查哪些方面的内容,你可以根据需要选择或去掉相应的检查条件自定义FindBugs检测器编写自定义的检测器Detector项目中需要引入FindBugs的jar文件:findBug.jar自定义的检测器需要继承OpcodeStackDetector重写其sawOpcode方法。下面用一个简单的自定义检测器来说明。此检测器是用来查找项目中有没有system.out和system.error情况出现的。建议编写的时候可以先查看FindBugs源代码以查找类似于你要编写的检测器。自定义检测器ForbiddenSystemOutClass.java接下来找到eclipse编译的.class文件,一般在项目的lib目录里面可以找到。将其放入findbugs-plugin.jar文件中对应的目录下:findbugs-plugin.jar\edu\umd\cs\findbugs\detect(如图)修改findbugs.xml文件找到Eclipse插件安装文件夹中findbugs-plugin.jar所在的文件夹,我的文件夹是:D:\ProgramFiles\Genuitec\Common\plugins\edu.umd.cs.findbugs.plugin.eclipse_2.0.1.20120712打开findbugs-plugin.jar文件,找到findbugs.xml和messages.xml两个文件。双击打开findbugs.xml,你可以修改原有的文件,也可以替换原有的文件为自己写的findbugs.xml。findbugs.xml和messages.xml两个文件findbugs.xml的编写对于每一个新的检测器,在FindBugs.xml文件中增加一个Detector元素和一个BugPattern元素。Detector元素指定用于实现检测器的类以及它是快速还是慢速检测器。speed属性的可能值有slow、moderate和fast。BugPattern元素指定三个属性。abbrev属性定义检测器的缩写。缩写用于标识用命令行客户运行时检测到的缺陷。可以用同一个缩写将几个相关的检测器组织到一起。.type属性是惟一标识符,有两个用途。在使用Ant版本或者命令行版本的FindBugs且输出格式设置为XML时,用type属性标识问题。type属性也是在检测器的Java代码中指定的,用以创建缺陷的正确类型。category属性是枚举类型。它是以下类型中的一种:CORRECTNESS:一般正确性问题MT_CORRECTNESS:多线程正确性问题MALICIOUS_CODE:如果公开给恶意代码,有可能成为攻击点PERFORMANCE:性能问题messages.xml的编写messages.xml文件由三个元素组成:Detector、BugPattern和BugCodeDetails元素包含检测器的简单HTML描述,因而应当包含在CDATA部分中.BugPattern元素类似于在FindBugs.xml中定义的BugPattern元素。需要type属性,并且它应当匹配在FindBugs.xml和在检测器的Java代码中使用的相同惟一标识符。BugCode元素必须用元素的属性指定这个缩写运行放置好这三个文件,重启Eclipse,在需要检测的文件上单击右键,选择findbugs即可从检测出带有system.out或system.error语句。FindBugs生成html形式的报告整理之前用的是findbugs的eclipse插件,但是在导出报告的时候是xml形式的,很不易阅读,下来讲下用findbugs来导出html的报告。准备工作下载到ant和findbugs。并且配置好它们的环境变量编写ant脚本(build.xml)build.xml部分属性参数说明class嵌套元素指定要分析的类。这个元素必须指定一个location属性,location属性的名字为archive文件(jar,zip等)、目录或者class文件。可以为一个findbugs元素指定多个class元素。auxClasspath可选的嵌套元素,用于指定要分析的类所引用的类,但是并不对引用的类进行分析。sourcePath可选的嵌套元素,指定Java源代码的目录。home必须的属性,findbugs的安装目录。quietErrors可选的布尔型属性。如果是true的话,报告严重的分析错误和丢失的类。默认情况下为false。reportLevel可选的属性。指定优先级别。如果是low的话,那么报告所有的bug,如果是medium(缺省值),报告medium和high优先级的bug。生成FindbugsReport运行cmd打开DOS窗口,进入到build.xml所在目录,键入命令antfindbugs回车即可。可能遇到的问题由于工程比较大,所以在导出html的过程中有可能产生一个空白的html。此时原因可能是JVM内存的错(堆栈信息之类的),此时将findbugs的jvmargs属性改大,如改为jvmargs=-Xmx1000m,其实此属性是可选的,也可以省略。FindBugs进阶-过滤器FingBugs自定义的缺陷是很多的,当项目十分庞大的时候,一个一个查看缺陷实在是很痛苦的事情。而且有些缺陷是可以忽略的。解决方法是采用过滤器来选择关闭特定的检测器。匹

1 / 35
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功