使用 jQAssistant 查找 checked/unchecked 异常

Find checked/unchecked Exceptions with jQAssistant

我正在尝试使用 jqassistant 查找我的项目中使用的所有已检查异常。 有什么方法可以用 jqa 区分 checked/unchecked 异常吗?

如果您知道哪些类型是已检查异常,即从 java.lang.Exception.

继承,则可以检测已检查异常的使用

这里的问题是您可能看不到完整的继承层次结构,因为这需要扫描所有涉及的工件。作为示例,您将看到您的应用程序的任何异常都继承自 java.io.IOException,但由于尚未扫描 JRE-JAR 文件,因此在图表中看不到此异常实际上扩展了 java.lang.Exception。此限制也适用于可能提供自己的异常类型的所有其他使用的库。

解决此问题的一种方法是使用标签 :Exception:Checked 明确标记所需的异常类型,例如

MATCH
  (:Artifact)-[:REQUIRES]->(e:Type)
WHERE
  e.fqn in [
    "java.lang.Exception",
    "java.io.IOException"
  ]
SET
  e:Exception:Checked
RETURN
  e

使用这个概念可以创建一个关于创建检查异常实例的方法的报告:

MATCH
  (t:Type)-[:DECLARES]->(m:Method)-[i:INVOKES]->(:Constructor)<-[:DECLARES]-(e:Exception:Checked)
RETURN
  t.fqn, m.signature, i.lineNumber