使用 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
我正在尝试使用 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