




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、findBugs(静态分析工具)vFindBugs简介简介 vFindBugs的安装的安装vFindBugs的使用的使用v自定义自定义FindBugs检测器检测器vFindBugs生成生成html形式的报告整理形式的报告整理FindBugs简介vFindBugsFindBugs是一个专门分析是一个专门分析JAVAJAVA代码问题的代码问题的静态代码扫描工具,它是通过检查静态代码扫描工具,它是通过检查javajava字字节码来查找代码缺陷。很多我们写的不好节码来查找代码缺陷。很多我们写的不好的地方,可以优化的地方,它都能检查出的地方,可以优化的地方,它都能检查出来来。vFindbugsFindb
2、ugs 是一个静态分析工具,它检查类是一个静态分析工具,它检查类或者或者 JARJAR 文件,将字节码与一组缺陷模式文件,将字节码与一组缺陷模式进行对比以发现可能的问题。利用这个工进行对比以发现可能的问题。利用这个工具,就可以在不实际运行程序的情况对软具,就可以在不实际运行程序的情况对软件进行分析。它可以帮助改进代码的质量。件进行分析。它可以帮助改进代码的质量。FindBugs能做什么vFindBugsFindBugs可以发现的问题包括:未关闭的可以发现的问题包括:未关闭的数据库连接,缺少必要的数据库连接,缺少必要的null checknull check,多,多余的余的 null check
3、 null check,多余的,多余的ifif后置条件,相后置条件,相同的条件分支,重复的代码块,错误的使同的条件分支,重复的代码块,错误的使用了用了=,建议使用,建议使用StringBufferStringBuffer代替字代替字符串连加等等。而且我们还可以自己配置符串连加等等。而且我们还可以自己配置检查规则检查规则( (做哪些检查做哪些检查, ,不做哪些检查不做哪些检查) )。vFindbugsFindbugs提供了方便操作的可视化界面,提供了方便操作的可视化界面,同时也可以作为同时也可以作为EclipseEclipse的一个插件来使用,的一个插件来使用,而我们使用得最多的还是作为而我们使
4、用得最多的还是作为EclipseEclipse的插的插件来使用件来使用。FindBugs和其他工具的区别vCheckstyleCheckstyle和和PMDPMD是根据样式(是根据样式(stylestyle) 来改进代码质量的。来改进代码质量的。vFindBugsFindBugs分析引擎它直接操作类文件分析引擎它直接操作类文件(classclass文文 件)而不是源代码。我们可以件)而不是源代码。我们可以通过命令行、各种构建工具(如通过命令行、各种构建工具(如AntAnt、Cruise ControlCruise Control、HudsonHudson及及MavenMaven等)、独等)、独
5、立的立的Swing GUISwing GUI或是以或是以EclipseEclipse和和NetBeans NetBeans IDEIDE插件的方式来运行插件的方式来运行FindBugsFindBugs。输出结果。输出结果既可以是既可以是XMLXML的,也可以是文本形式的。的,也可以是文本形式的。FindBugs的安装vEclipse插件的安装插件的安装 a.a.在在EclipseEclipse当中分别打开一下菜单当中分别打开一下菜单 Help-Software Help-Software Updates-Find and Install Updates-Find and Install b.
6、b.选择选择 Search for new features to install Search for new features to install 选项然选项然后点击后点击 Next Next c. c.新建一个新建一个 New Remote Site. New Remote Site. d. d.输入名称(比如:输入名称(比如:Findbugs Plug-inFindbugs Plug-in)和下面)和下面 的的URLURL:/eclipse/eclipse e. e. 开始安装开始安装
7、 安装好安装好FindbugsFindbugs以后,选择以后,选择Windows - Show View - Windows - Show View - Other - FindBugs - BugDetailsOther - FindBugs - BugDetails打开打开Bug DetailsBug Details视视图。图。v包安装:包安装:(myeclipse(myeclipse安装安装findBugs) findBugs) 1 1 、首先从、首先从findbugsfindbugs网站下载插件:网站下载插件:http:/ http:/ (附件中也有下好了的插件)(附件中也有下好了的插
8、件)2 2、将下载回来的、将下载回来的zipzip包解压,得到文件夹:包解压,得到文件夹:edu.umd.cs.findbugs.plugin.eclipse_0120712 edu.umd.cs.findbugs.plugin.eclipse_0120712 ,将该文件夹拷贝到将该文件夹拷贝到myeclipsemyeclipse安装目录下安装目录下common/pluginscommon/plugins目录下。我的目录结构:目录下。我的目录结构:D:Program D:Program FilesGenuitecCommonpluginsedu.umd.cs.fin
9、dbugs.FilesGenuitecCommonpluginsedu.umd.cs.findbugs.plugin.eclipse_0120712 plugin.eclipse_0120712 3 3、修改、修改myeclipsemyeclipse安装目录下安装目录下configuration/org.eclipse.equinox.simpleconfiguratconfiguration/org.eclipse.equinox.simpleconfiguratoror的的文件,在文件最后添加一行:文件,在文件最后
10、添加一行: edu.umd.cs.findbugs.plugin.eclipse,0120712,edu.umd.cs.findbugs.plugin.eclipse,0120712,file:/D:/ProgramFiles/Genuitec/Common/plugins/edu.file:/D:/ProgramFiles/Genuitec/Common/plugins/edu.umd.cs.findbugs.plugin.eclipse_0120712,4,faumd.cs.findbugs.plugin.eclipse_012071
11、2,4,falselse 这里这里filefile后面的路径要根据自己的目录设置进行修改,要后面的路径要根据自己的目录设置进行修改,要不然重启不然重启myeclipsemyeclipse后,仍然找不到后,仍然找不到findbugsfindbugs。 4 4、重启、重启myeclipsemyeclipse,选中项目,右键会出现一个,选中项目,右键会出现一个Find BugsFind Bugs菜单。至此,菜单。至此,findbugsfindbugs插件安装完毕。插件安装完毕。 FindBugs的使用FindbugsFindbugs可以通过三种方法使用:可以通过三种方法使用:vAnt/MavenAn
12、t/Maven工具;工具;v通过通过AntAnt提供的提供的SwingSwing操作界面;操作界面;v作为作为EclipseEclipse的一个插件来使用。的一个插件来使用。Findbugs的Eclipse插件使用v安装了安装了FindbugsFindbugs插件后。右击点击你要检查的项插件后。右击点击你要检查的项目选择目选择【Find BugsFind Bugs】-【Find BugsFind Bugs】进行检查。进行检查。v要查看要查看FindbugsFindbugs检查出了哪些检查出了哪些BugBug,可以选择,可以选择WindowsWindows菜单菜单-Show View-Bug E
13、xplorer-Show View-Bug Explorer,打开,打开Bug ExplorerBug Explorer面板。面板。v如果想要查看某个如果想要查看某个BugBug详细的信息,则可以选择详细的信息,则可以选择WindowsWindows菜单菜单-Open Perspective-Open Perspective,然后选择,然后选择FindBugsFindBugs就可以打开就可以打开FindBugsFindBugs的的PropertiesProperties面板,面板,在这个面板里面可以看到最详尽的在这个面板里面可以看到最详尽的BugsBugs信息。信息。FindBugs的配置 选
14、择你的项目,右键选择你的项目,右键 = Properties = = Properties = FindBugs =FindBugs =vRun FindBugs AutomaticallyRun FindBugs Automatically开关开关 当此项选中后,当此项选中后,FindBugsFindBugs将会在你修改将会在你修改JavaJava类时类时自动运行,如你设置了自动运行,如你设置了EclipseEclipse自动编译开关后,自动编译开关后,当你修改完当你修改完JavaJava文件保存,文件保存,FindBugsFindBugs就会运行,就会运行,并将相应的信息显示出来。当此项没
15、有选中,你并将相应的信息显示出来。当此项没有选中,你只能每次在需要的时候自己去运行只能每次在需要的时候自己去运行FindBugsFindBugs来检来检查你的代码。查你的代码。 vMinimum priority to report选择项 这个选择项是让你选择哪个级别的信息进行显示,有Low、Medium、High三个选择项可以选择,很类似于Log4J的级别设置啦。比如:你选择了High选择项,那么只有是High级别的提示信息才会被显示。你选择了Medium选择项,那么只有是Medium和High级别的提示信息才会被显示。你选择了Low选择项,那么所有级别的提示信息都会被显示Enable bu
16、g categories选择项 Correctness关于代码正确性相关方面的; Performance关于代码性能相关方面的; Internationalization关于代码国际化相关方面; Multithreaded correctness关于代码多线程正确性相关方面的; Style关于代码样式相关方面的; Malicious code vulnerability关于恶意破坏代码相关方面的; vSelect bug patterns to check for选择项 在这里你可以选择所要进行检查的相关的Bug Pattern条目 可以从Bug codes、Detector name、Det
17、ector description中看到相应的是要检查哪些方面的内容,你可以根据需要选择或去掉相应的 检查条件自定义FindBugs检测器v编写自定义的检测器Detector 项目中需要引入FindBugs的jar文件:findBug.jar自定义的检测器需要继承OpcodeStackDetector重写其sawOpcode方法。下面用一个简单的自定义检测器来说明。此检测器是用来查找项目中有没有system.out和system.error情况出现的。建议编写的时候可以先查看FindBugs源代码以查找类似于你要编写的检测器。自定义检测器ForbiddenSystemOutClass.java
18、 接下来找到接下来找到eclipseeclipse编译的编译的.class.class文件,一般在文件,一般在项目的项目的liblib目录里面可以找到。将其放入目录里面可以找到。将其放入findbufindbugs-plugin.jargs-plugin.jar文件中对应的目录下:文件中对应的目录下:findbugs -findbugs -plugin.jareduumdcsfindbugsdetectplugin.jareduumdcsfindbugsdetect(如图)(如图) v修改修改findbugs.xmlfindbugs.xml文件文件 找到找到EclipseEclipse插件安装
19、文件夹中插件安装文件夹中findbugs-findbugs-plugin.jarplugin.jar所在的文件夹,我的文件夹是:所在的文件夹,我的文件夹是:D:ProgramFilesGenuitecCommonpluginsedD:ProgramFilesGenuitecCommonpluginsedu.umd.cs.findbugs.plugin.eclipse_01u.umd.cs.findbugs.plugin.eclipse_012071220712 打开打开findbugs-plugin.jarfindbugs-plugin.jar文件,找到文件,找到f
20、indbugs.xmlfindbugs.xml和和messages.xmlmessages.xml两个文件。双击打两个文件。双击打开开findbugs.xmlfindbugs.xml,你可以修改原有的文件,也可,你可以修改原有的文件,也可以替换原有的文件为自己写的以替换原有的文件为自己写的findbugs.xmlfindbugs.xml。findbugs.xml和messages.xml两个文件findbugs.xml的编写v对于每一个新的检测器,在对于每一个新的检测器,在 FindBugs.xml FindBugs.xml 文件文件中增加一个中增加一个 Detector Detector 元
21、素和一个元素和一个 BugPattern BugPattern 元素。元素。 Detector Detector 元素指定用于实现检测器的类元素指定用于实现检测器的类以及它是快速还是慢速检测器。以及它是快速还是慢速检测器。speed speed 属性的可属性的可能值有能值有 slow slow、moderate moderate 和和 fast fast。vBugPattern BugPattern 元素指定三个属性。元素指定三个属性。 abbrev abbrev 属性属性定义检测器的缩写。缩写用于标识用命令行客户定义检测器的缩写。缩写用于标识用命令行客户运行时检测到的缺陷。可以用同一个缩写将
22、几个运行时检测到的缺陷。可以用同一个缩写将几个相关的检测器组织到一起。相关的检测器组织到一起。. .vtype 属性是惟一标识符,有两个用途。在使用 Ant 版本或者命令行版本的 FindBugs 且输出格式设置为 XML 时,用 type 属性标识问题。 type 属性也是在检测器的 Java 代码中指定的,用以创建缺陷的正确类型。 category 属性是枚举类型。它是以下类型中的一种:CORRECTNESS :一般正确性问题MT_CORRECTNESS :多线程正确性问题MALICIOUS_CODE :如果公开给恶意代码,有可能成为攻击点PERFORMANCE :性能问题messages
23、.xml的编写vmessages.xml 文件由三个元素组成: Detector 、 BugPattern 和 BugCode vDetails 元素包含检测器的简单 HTML 描述,因而应当包含在 CDATA 部分中.vBugPattern 元素类似于在 FindBugs.xml 中定义的 BugPattern 元素。需要 type 属性,并且它应当匹配在 FindBugs.xml 和在检测器的 Java 代码中使用的相同惟一标识符。v BugCode 元素必须用元素的属性指定这个缩写v运行 放置好这三个文件,重启Eclipse,在需要检测的文件上单击右键,选择findbugs即可从检测出带有system.out或system.error语句。FindBugs生成html形式的报告整理v之前用的是findbugs的eclipse插件,但是在导出报告的时候是xml形式的,很不易阅读,下来讲下用findbugs来导出html的报告。v准备工作 下载到ant和findbugs。并且配置好它们的环境变量编写ant脚本
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 宠物食品配方设计考核试题及答案
- 宠物膳食补充剂管理考察试题及答案
- 21届叶圣陶杯作文山东获奖名单公示
- 弹弓技术培训课件
- 修车店劳务合同标准文本
- 业务聘请合同标准文本
- 2007建筑合同标准文本
- 与技术平台合作合同样本
- 健身租赁合同样本
- 代理酒店合同范例
- 2023风电机组基础锚笼环技术规范
- 《劳动法案例分析》课件
- 2023天地伟业安防产品技术参数和检测报告
- 古代小说中的女性形象与性别角色演变
- 火龙罐联合耳穴压豆治疗失眠个案护理
- 鬼谷神掌 (静月山人整理)
- 施工日志(模板)
- GB/T 713.6-2023承压设备用钢板和钢带第6部分:调质高强度钢
- 人教版小学英语单词表(汇总)
- 竖曲线计算公式
- 酒店住宿消费流水明细账单表
评论
0/150
提交评论