public class FindBugTest02 {
private String[] name;
public String[] getName(){
return name;
}
public void setName(String[] name) {
this.name=name;
}
public static void main(String[] args) {
FindBugTest02 test=new FindBugTest02();
String[] name= {"xiaoming"};
System.out.println(test.getName());
}
}
首先看上面一段代码示例,运用FindBug工具进行检查后可以发现如下提示:
1. Bug分析:
Bug的严重级别rank为troubling(10——14),表示不好的,可能会引发不良后果
Bug的置信度confidence用来衡量标记真正错误的可能性,normal confidence代表在当前级别下概率较小的Bug
Bug的规则检查器pattern,DMI_INVOKING_TOSTRING_ON_ARRAY表示将默认调用对象的toString方法,而默认是输出对象的内存地址
Bug的规则检测器的二级类别type是被发现Bug Pattern的类别名字,USELESS_STRING:使用格式字符串以无用的方式格式化的数组正确性
Bug的规则检测器的一级类别category,Correctness(80多)表示正确性问题
错误集中在最后一行代码,原因是getName方法获得的结果是String[]类型,直接输出并不能显示其中的内容,而是显示其实际存储的String类型的引用地址。
2. 输出为字符串:
String str =Arrays.toString(test.getName());
System.out.println(str);