Java理论与实践:平衡测试,第2部分:编写和优化bug检测器 - 编程入门网
for (String name : names)
throwList.add(new ExceptionThrown(name, getPC()));
}
break;
}
}
}
} catch (ClassNotFoundException e) {
bugReporter.reportMissingClass(e);
}
break;
default:
break;
}
} finally {
stack.sawOpcode(this, seen);
}
}
Java理论与实践:平衡测试,第2部分:编写和优化bug检测器(4)时间:2010-12-22 IBM Brian Goetz汇总结果 在获得所需的关于捕获和抛出异常的信息后,最后一步是汇总这些信息。在 超类 visit(Code) 的调用返回后,将完全填充 throwList 和 caughtList 集合 。它们包含关于方法中所有 try-catch 块的信息,所以您必须将抛出信息和捕 获信息关联,以标识 bug 模式。 清单 6 显示了用于标识 RuntimeException 捕获的逻辑。它将迭代捕获块的 列表,如果发现捕获 Exception 的块,它会再次查找捕获块,该捕获块将捕获 字节码同一范围的 RuntimeException。它还可以查找在字节码的相应范围中抛 出 Exception 的实例。如果没有捕获 RuntimeException,也没有抛出 Exception,则存在一个潜在的 bug。 清单 6. 合并捕获和抛出数据,以标识 RuntimeException 捕获
要编写 bug 检测器,则需要了解 JVM 字节码和类文件的一些结构。BCEL 和 FindBugs 库将为您处理此任务,并从字节码中提取信息,在 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |