Findbugs能检测到在java中捕获RuntimeException吗?

问题描述:

你可以让我知道FindHug可以检测捕获java中的RuntimeException吗?Findbugs能检测到在java中捕获RuntimeException吗?

有效的java建议我们不要捕获RuntimeException。

所以我想知道,Findbugs可以抓住错误的捕捉。

此外,我已经检查过Klocwork JD.CATCH和checkstyle IllegalCatch适合于此目的。

+1

追赶“的RuntimeException”最好的工具是一个在你的脖子上... –

+0

但是,为什么不自动化它,如果你可以......有时候你会继承一个大型的代码库,里面充满了微不足道的错误,那么静态分析就能抓住它。 – HairyFotr

整理。 在FindBugs的有处理异常几个bug检测:

  • DE:方法可能会下降例外
  • DE:方法可能会忽略例外
  • Nm:类不从异常导出,即使它被命名为这样的
  • RV:异常创建和删除,而不是抛出
  • REC:异常被捕获时的例外是不是THR自己

findbugs-contrib(FindBugs的插件)有一些:

  • BED_BOGUS_EXCEPTION_DECLARATION
  • DRE_DECLARED_RUNTIME_EXCEPTION
  • EXS_EXCEPTION_SOFTENING_NO_CHECKED
  • EXS_EXCEPTION_SOFTENING_HAS_CHECKED
  • EXS_EXCEPTION_SOFTENING_NO_CONSTRAINTS

尝试一下,检查它们是否符合您的要求(特别是fb的最后一个(REC))。不过,如果你明明白白需要检测以下模式:

catch (RuntimeException re){ 
    ....    
} 

您可能需要实现自己的(很容易)错误的FindBugs的模式...

+0

感谢您的回答。我正在审查Findbugs错误模式。你能让我知道'DE'或'Nm'这些关键词是什么意思吗? – 500004dolkong

+0

这些只是缩写 - 就像REC可能意味着'运行时异常捕获(ing)'或EXS意味着EXception软化'。但对于你来说,最终用户对它没有特别的意义...... – Lonzak