我正在尝试使用jqassistant查找项目中使用的所有已检查异常。 是否可以通过jqa区分已检查/未检查的异常?
答案 0 :(得分:1)
如果您知道检查异常的类型,即从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