Javadoc предупредить без комментариев - PullRequest
4 голосов
/ 09 марта 2011

Есть ли способ (предпочтительно с помощью аргумента, тэглета, доклета или подобного) заставить Javadoc сгенерировать предупреждение, если для метода или класса не предоставлен комментарий javadoc?Я разбирался в вариантах и ​​гуглил, но не вижу ничего, что выделяется как актуальное.В настоящее время я работаю над проектом, где все должно иметь некоторую форму комментариев Javadoc, и это было бы очень полезно для этой цели.

РЕДАКТИРОВАТЬ: я знаю, что такие вещи могут быть реализованы с помощью инструментов качества кода, таких как checkstyleМне просто интересно, есть ли способ настроить Javadoc для предупреждения о таких вещах, как этот.

Ответы [ 3 ]

7 голосов
/ 09 марта 2011

Вы можете попробовать checkstyle для обеспечения соблюдения таких соглашений.

2 голосов
/ 09 марта 2011

Если вы действительно хотите использовать Javadoc, то вам стоит воспользоваться специальным проверочным доклетом.

Вот пример:

package de.fencing_game.paul.examples.doclet;

import com.sun.javadoc.*;

public class CheckingDoclet extends Doclet {

    private static void checkElement(ProgramElementDoc ped,
                                     DocErrorReporter err) {
        if(ped.commentText().equals("")) {
            err.printError(ped.position(), ped + " has no documentation!");
        }
    }

    private static void checkAll(ProgramElementDoc[] array,
                                 DocErrorReporter err) {
        for(ProgramElementDoc ped : array) {
           checkElement(ped, err);
        }
    }

    public static boolean start(RootDoc root) {
        for(ClassDoc clazz : root.classes()) {
           checkElement(clazz, root);
           checkAll(clazz.constructors(), root);
           checkAll(clazz.fields(), root);
           checkAll(clazz.enumConstants(), root);
           checkAll(clazz.methods(), root);
        }
        return true;
    }
}

Запуск doclet на себя (с муравьем) дает такой вывод:

doccheck.doclet:
  [javadoc] Generating Javadoc
  [javadoc] Javadoc execution
  [javadoc] Loading source files for package de.fencing_game.paul.examples.doclet...
  [javadoc] Constructing Javadoc information...
  [javadoc] de/fencing_game/paul/examples/doclet/CheckingDoclet.java:7: error - de.fencing_game.paul.examples.doclet.CheckingDoclet has no documentation!
  [javadoc] de/fencing_game/paul/examples/doclet/CheckingDoclet.java:7: error - de.fencing_game.paul.examples.doclet.CheckingDoclet() has no documentation!
  [javadoc] de/fencing_game/paul/examples/doclet/CheckingDoclet.java:9: error - de.fencing_game.paul.examples.doclet.CheckingDoclet.checkElement(com.sun.javadoc.ProgramElementDoc, com.sun.javadoc.DocErrorReporter) has no documentation!
  [javadoc] de/fencing_game/paul/examples/doclet/CheckingDoclet.java:16: error - de.fencing_game.paul.examples.doclet.CheckingDoclet.checkAll(com.sun.javadoc.ProgramElementDoc[], com.sun.javadoc.DocErrorReporter) has no documentation!
  [javadoc] de/fencing_game/paul/examples/doclet/CheckingDoclet.java:23: error - de.fencing_game.paul.examples.doclet.CheckingDoclet.start(com.sun.javadoc.RootDoc) has no documentation!
  [javadoc] 5 errors

BUILD SUCCESSFUL
Total time: 2 seconds

Если мы хотим, чтобы это не было успешным при обнаружении одной ошибки, в этом случае мы должны вернуть false из метода start.

1 голос
/ 09 марта 2011

Эту задачу лучше всего выполнить с помощью инструмента анализа кода, такого как PMD или FindBug (возможно, стиль проверки), поскольку они предназначены для поиска подобных проблем и многого другого.

IntelliJ имеет встроенную проверку, которая может помочь заполнитьотсутствует содержание Javadoc, а также проверка на исправность / проверку орфографии.

...