静态分析自定义规则以强制执行未经检查的异常处理

时间:2014-10-01 09:44:23

标签: java checkstyle findbugs runtimeexception pmd

我有一个我在项目中创建的运行时异常,我想确保它在我的一个类中被捕获,以便整个程序在发生时不会爆炸(即如果有人删除了try / catch语句我想知道通过在构建中使用某些东西或静态分析工具失败了。不幸的是,由于java没有强制我为这个未经检查的异常提供try / catch语句,因此无法在编译时强制执行它。 (我无法将我的异常更改为已检查的异常)。

我想知道是否有任何方法可以在特定的类中强制执行try / catch语句,可能使用checkstyle / pmd / findbugs自定义规则。 (检查特定类中的特定方法是否有针对我的运行时异常的try catch语句。)

感谢。

2 个答案:

答案 0 :(得分:2)

答案 1 :(得分:1)

Checkstyle,FindBugs或PMD(或其贡献包)中没有现成的探测器可以满足您的需求。所以你必须自己动手。

在没有实际编程的情况下解决此问题的最简单方法是编写PMD XPath rule,在类XY块中查找方法catch你的运行时异常。

如果失败了,custom Checkstyle check将是下一个最简单的,但它需要一点点编程,您将不得不随后在任何地方部署自定义检查。

您也可以按照另一个答案中的建议编写自己的FindBugs检测器,但由于您不会使用任何特定的FindBugs功能(例如字节码分析),对我来说似乎有些过分。