要编写 bug 检测器,则需要了解 JVM 字节码和类文件的一些结构。BCEL 和 FindBugs 库将为您处理此任务,并从字节码中提取信息,在稍高级别上呈现它。遗憾的是,关于 BCEL 和 FindBugs 如何支持类分离的文档并不能满足您的需要。像使用许多开放源码项目一样,关于如何编写检测器的最佳信息源是参照执行类似任务的其他检测器。
使用静态分析的最大消耗是处理假警报。静态分析不一定精确,其目标不是发现 bug,而是只发现那些可能是 bug 的构造,这意味着有时会标记正确的代码出错。如果代码审核工具产生 95% 的假警报,那么任何人都不太可能想再次使用它;第一次发现报告新 bug 的假警报真的很痛苦。所以对于一个有效的 bug 模式检测器,它必须最小化假警报数量,最好使假情报不超过 50%。