Найти отмеченные / непроверенные исключения с помощью jQAssistant - PullRequest
0 голосов
/ 10 октября 2018

Я пытаюсь использовать jqassistant, чтобы найти любые проверенные исключения, используемые в моем проекте.Есть ли способ отличить отмеченные / непроверенные исключения с помощью jqa?

1 Ответ

0 голосов
/ 10 октября 2018

Можно определить использование проверенных исключений, если вы знаете, какие типы являются проверенными исключениями, т.е. наследовать от java.lang.Exception.

Проблема здесь в том, что вы, вероятно, не увидите полную иерархию наследования какэто требует сканирования всех задействованных артефактов.В качестве примера вы увидите, что любое из исключений вашего приложения наследуется от java.io.IOException, но поскольку файл JRE-JAR не был отсканирован, на графике не видно, что это исключение фактически расширяет исключение java.lang.Exception.Это ограничение также распространяется на все остальные используемые библиотеки, которые могут предоставлять свои собственные типы исключений.

Способ обойти это состоит в том, чтобы явно пометить необходимые типы исключений с помощью меток : Exception и : Проверено , например

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
...