1 用途
FindBugs 是一个 java bytecode 静态分析工具,它可以帮助 java 工程师提高代码质量以及排除隐含的缺陷。FindBugs 检查类或者 JAR 文件,将字节码与一组缺陷模式进行对比以发现可能的问题。
有了静态分析工具,就可以在不实际运行程序的情况对软件进行分析。FindBugs 不是通过分析类文件的形式或结构来确定程序的意图,而是通常使用 Visitor 模式进行分析(Visitor 模式的更多信息)。
2 安装
目前 findbugs 最新的版本是 1.3.9,
2.1 Eclipse 插件的安装
环境要求,Findbugs 要求 Eclipse 3.4 以上的版本,JRE/JDK 1.5.0 以上的版本。步骤,将edu.umd.cs.findbugs.plugin.eclipse_1.3.9.20090821.zip 解压到 Eclipse 的"plugins" 子目录下,这样就可以在
<eclipse_install_dir>/plugins/edu.umd.cs.findbugs.plugin.eclipse_1.3.9.20090821/
下看到FindBugs logo 图片 findbugs.png。启动 Eclipse 然后选择 Help → About Eclipse Platform → Plug-in Details,你应该找到"FindBugs Plug-in"。
3 使用
启动
选中 java 工程,点击鼠标右键,选择名为“Find Bugs”的菜单,FindBugs 开始运行,问题指示器将指向根据 bug 模式识别出来的潜在问题代码位置。
可选项定制
你还可以通过 java 工程的属性对话框来定制 findbugs 的运行方式,可选项包括:
控制"Run FindBugs Automatically" 开关的 checkbox。 选中时, FindBugs 将在每次修改java 类后启动运行。
选择最小告警优先级和 Bug 类别。这些选项将选择哪些警告被显示。例如,如果你选择"Medium",只有 Medium 和 High priority 警告将被显示。近似地,如果你未选中"Style" checkbox,Style 类的警告信息将不会被显示。
选择探测器。这个列表允许你选择你想在工程中使用的探测器
4 配套的 Bug 模式解释
为了有针对性的使用这个工具,减少 bug 的误报,提高使用效率,我们选择了 10 个左右的 bug 模式,下面就是对这 10 个模式的解释。这些 bug 可能会引起程序的性能或逻辑问题.需要说明的是,findbugs 能检测的 bug pattern 远不仅于此,甚至可以定制自己的探测器,因 此,这个文档会不断扩充,同时,也欢迎大家不断探索和分享使用实践.
4.1 ES_COMPARING_PARAMETER_STRING_WITH_EQ
ES: Comparison of String parameter using == or != (ES_COMPARING_PARAMETER_STRING_WITH_EQ) This code compares a java.lang.String parameter for reference equality using the == or != operators. Requiring callers to pass only String constants or interned strings to a method is unnecessarily fragile, and rarely leads to measurable performance gains. Consider using the equals(Object)
method instead.
使用 == 或者 != 来比较字符串或interned字符串,不会获得显著的性能提升,同时并不可靠,请考虑使用equals()方法。
4.2 HE_EQUALS_NO_HASHCODE
HE: Class defines equals() but not hashCode() (HE_EQUALS_NO_HASHCODE) This class overrides equals(Object), but does not override hashCode(). Therefore, the class mayviolate the invariant that equal objects must have equal hashcodes.类定义了equals()方法但没有重写hashCode()方法,这样违背了相同对象必须具有相同的hashcodes的原则
4.3 IT_NO_SUCH_ELEMENT
It: Iterator next() method can't throw NoSuchElement exception (IT_NO_SUCH_ELEMENT) This class implements the java.util.Iterator interface. However, its next() method is not capable of throwing java.util.NoSuchElementException. The next() method should be changed so
it throws NoSuchElementException if is called when there are no more elements to return. 迭代器Iterator无法抛出NoSuchElement异常,类实现了java.util.Iterator接口,但是next()方法 无法抛出java.util.NoSuchElementException异常,因此,next()方法应该做如此修改,当被调用时,如 果没有element返回,则抛出NoSuchElementException异常
4.4 J2EE_STORE_OF_NON_SERIALIZABLE_OBJECT_INTO_SESSION
J2EE: Store of non serializable object into HttpSession (J2EE_STORE_OF_NON_SERIALIZABLE_OBJECT_INTO_SESSION)
This code seems to be storing a non-serializable object into an HttpSession. If this session is passivated or migrated, an error will result.
将没有实现serializable的对象放到HttpSession中,当这个session被钝化和迁移时,将会产生错误,建议放到HttpSession中的对象都实现serializable接口。
4.5 ODR_OPEN_DATABASE_RESOURCE
ODR: Method may fail to close database resource (ODR_OPEN_DATABASE_RESOURCE) The method creates a database resource (such as a database connection or row set), does not assign it to any fields, pass it to other methods, or return it, and does not appear to close the object on all paths out of the method. Failure to close database resources on all paths out of a method may result in poor performance, and could cause the application to have problems communicating with the database.
方法可能未关闭数据库资源,未关闭数据库资源将会导致性能变差,还可能引起应用与服务器间的通讯问题。
【下载地址】
百度网盘链接:https://pan.baidu.com/s/1f2Safd_aQNa86kLeAOGnag
提取码:xtt5
相关文章
使用-JFreeChart来创建基于web的图表
XStream使用文档
WebService发布过程及常见问题
webpack实战入门进阶调优分享
weblogic调优参数及监控指标
weblogic节点管理
weblogic管理控制台概述
weblogic-部署和启动
WebLogic-Server-性能及调优-调优-Java-虚拟机
Java 虚拟机(Java virtual machine,简称 JVM)是一种虚拟“执行引擎”实例,可在微处理器上执行 Java 类文件中的字节码。调整 JVM 的方式会影响 Weblogic Server 和应用程序的性能。
Velocity是一个基于java的模板引擎(template engine)。它允许任何人仅仅简单的使用模板语言(template language)来引用由java代码定义的对象。
Velocity 用户手册是帮助页面设计者和内容提供者认识 Velocity 和其简单而功能强大的脚本语言――Velocity 模板语言(VTL)。在手册上的许多例子,都是用 Velocity 插入动态的内容到网页上,但是所有的 VLT 例子都能应用到其他的页面和模板中。
FlashFXP绿色版网盘下载,附激活教程 1782
FlashFxp百度网盘下载链接:https://pan.baidu.com/s/1MBQ5gkZY1TCFY8A7fnZCfQ。FlashFxp是功能强大的FTP工具
Adobe Fireworks CS6 Ansifa绿色精简版网盘下载 1565
firework可以制作精美或是可以闪瞎眼的gif,这在广告领域是需要常用的,还有firework制作下logo,一些原创的图片还是很便捷的,而且fireworks用法简单,配合dw在做网站这一块往往会发挥出很强大的效果。百度网盘下载链接:https://pan.baidu.com/s/1fzIZszfy8VX6VzQBM_bdZQ
navicat for mysql中文绿色版网盘下载 1623
Navicat for Mysql是用于Mysql数据库管理的一款图形化管理软件,非常的便捷和好用,可以方便的增删改查数据库、数据表、字段、支持mysql命令,视图等等。百度网盘下载链接:https://pan.baidu.com/s/1T_tlgxzdQLtDr9TzptoWQw 提取码:y2yq
火车头采集器(旗舰版)绿色版网盘下载 1707
火车头采集器是站长常用的工具,相比于八爪鱼,简洁好用,易于配置。火车头能够轻松的抓取网页内容,并通过自带的工具对内容进行处理。站长圈想要做网站,火车头采集器是必不可少的。百度网盘链接:https://pan.baidu.com/s/1u8wUqS901HgOmucMBBOvEA
Photoshop(CS-2015-2023)绿色中文版软件下载 1823
安装文件清单(共46G)包含Window和Mac OS各个版本的安装包,从cs到cc,从绿色版到破解版,从安装文件激活工具,应有尽有,一次性打包。 Photoshop CC绿色精简版 Photoshop CS6 Mac版 Photoshop CC 2015 32位 Photoshop CC 2015 64位 Photoshop CC 2015 MAC版 Photoshop CC 2017 64位 Adobe Photoshop CC 2018 Adobe_Photoshop_CC_2018 Photoshop CC 2018 Win32 Photoshop CC 2018 Win64