日期:2014-05-16 浏览次数:20699 次
一,关于FindBugs
?(1) FindBugs 是由马里兰大学提供的一款开源 Java 静态代码分析工具,它检查类或者 JAR 文件,将字节码与一组缺陷模式进行对比以发现可能的问题(先对编译后的class进行扫描,然后进行对比),寻找出真正的缺陷和潜在的性能问题。在开发阶 段和维护阶段都可使用。
? 现今检测的类型如下:
? 正确性:如强制类型转换
? 标准:如某个类实现了equals方法但未实现hashCode方法
? 多线程:主要在同步和多线程问题
? 性能:潜在的性能委托
? 安全:相关
? 高危:导致Bug的可能性最高
? 更多的Bug描述:http://findbugs.sourceforge.net/bugDescriptions.html
二,下载FindBugs
?(1) 可以在官方网站 http://findbugs.sourceforge.net/downloads.html ?下载相应的版本(命令行版本,swing版本,ant版本,eclipse插件版本-离线包和在线更新两种方式)。
三,使用FindBugs
? (1) 开发可以使用eclipse插件方式安装好FindBugs,然后在eclipse中的Package Explorer 或者Navigater 里面,右键点击项目,在弹出的右键菜单中即可选中FindBugs运行。
??(2) 运行完成后代码中会有相应Bug级别的虫子样式标识(红色图标表示 bug 较为严重,黄色的图标表示 bug 为警告程度),鼠标移动到相应的虫子上,可查看详细描述和建议方案。
? (3) 高级运用:在eclipse中的属性配置可以针对不同的项目配置不同的FindBugs属性。
??(4) 在ant中也可以配置FindBugs;其他使用如:命令行检查,swing检查等
? (4) 在项目中设置自动运行:选中项目-右键-FindBugs-Run automatically
四,检查Bugs
1.找出 hash equals 不匹配
? List、Map、Set 等都调用equals() 和 hashCode(),重写对象的 equals() 方法,但是没有重写它的 hashCode 方法,或者相反的情况时。
2.忽略方法返回值
/**
* 对点评内容中的一些对页面有影响的字进行替换
* @param
content
* @return
*/
private
final String convert(final
String content)
{
??? if
(null
!= content) {
???????
content.replaceAll("\""
, "\\\\\""
).replaceAll("<"
, "<"
).replaceAll(">"
, ">"
);
???????
return
content;
??? }
???
?return
null
;
}