Как я могу получить javadoc всех методов с определенной аннотацией, с именем метода и именем пакета / класса? - PullRequest
5 голосов
/ 27 декабря 2011

Я ищу способ получить все javadoc для всех методов с определенной аннотацией во время выполнения. Я собираюсь использовать этот javadoc для отображения деталей об этих методах в пользовательском интерфейсе.

Эти методы позже используются для тестирования, они будут вызываться в неизвестном порядке, определяемом пользователем - я хочу, чтобы пользователь мог видеть javadoc без необходимости просматривать источники.

Да, у меня есть источники, и я могу использовать их для достижения цели.

Лучший способ думать об этом - поддерживать отдельный файл с описаниями, которые будут прочитаны во время выполнения, но это означает, что мне нужно поддерживать как javadoc, так и внешний файл, и мне не нравится идея сохранения две копии довольно похожего текста.

Ура за любые ответы! Спасибо.

Ответы [ 3 ]

2 голосов
/ 27 декабря 2011

Это не так просто, как кажется, потому что JavaDoc не является частью файла класса (нет метода getJavaDoc() для java.lang.reflect.Method).

Я бы атаковал проблему следующим образомэто:

  1. Загрузите Eclipse JDT.Он содержит компилятор Java Eclipse (добавьте org.eclipse.jdt.core_*.jar к вашему пути к классам. " Использование пакетного компилятора " также может помочь).
  2. Смотрите здесь как получить AST из Javaисходники, использующие компилятор Eclipse .
  3. AST содержит исходный код: вы видите аннотации, имена параметров, все.Чтобы собрать JavaDoc, используйте AstVisitor
  4. Извлеките все, что вам нужно, в один или несколько документов XML (легко создавать и анализировать), которые читает ваш пользовательский интерфейс.
  5. Создайте задачу Ant для автоматизациипроцесс и добавьте его в свою сборку.
0 голосов
/ 27 декабря 2011

Возможно, но требует некоторых усилий.

Как правило, создание Javadoc выполняется с помощью утилиты javadoc, которая достигла CLI. Вы можете вызвать его во время компиляции с помощью API процессора аннотаций и сохранить вместе с вашими скомпилированными ресурсами. Затем вы можете прочитать его во время выполнения.

Пожалуйста, посмотрите на этот проект как прекрасный пример использования препроцессора аннотации.

0 голосов
/ 27 декабря 2011

Если вы собираетесь использовать его в пользовательском интерфейсе и ваша кодовая база значительно велика, то вы можете рассмотреть возможность индексации ваших javadocs и создания поисковых запросов по индексам. Solr, Lucene, Sphinx - несколько технологий, которые вы можете использовать.

Я сомневаюсь, что вы сможете получить приемлемую производительность, используя JavaDocs непосредственно для чтения. Проверьте, насколько легко работать с Lucene здесь http://www.lucenetutorial.com/lucene-in-5-minutes.html

...