Javadoc警告不予置评

时间:2011-03-09 09:57:32

标签: java javadoc

如果没有为方法或类提供javadoc注释,是否有办法(最好通过参数,标记,doclet或类似方法)让Javadoc生成警告?我已经在选项和谷歌搜索了一个侦察员,但看不到任何突出的相关性。我目前正在开发一个项目,其中所有内容都需要具有某种形式的Javadoc注释,这对于此目的非常有用。

编辑:我知道这些事情可以通过代码质量工具(例如checkstyle)强制执行,我只是想知道是否有办法配置Javadoc来警告不同的事情,比如这个。

3 个答案:

答案 0 :(得分:7)

您可以尝试checkstyle来强制执行此类约定。

答案 1 :(得分:2)

如果您真的想使用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(使用ant)给出了这个输出:

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

如果我们希望每当发现一个错误时都不成功,我们应该在这种情况下从start方法返回false。

答案 2 :(得分:1)

这项任务最好用PMD或FindBug等代码分析工具(可能是检查样式)完成,因为这些工具的设计会发现这些问题等等。

IntelliJ有一个内置的检查程序,可以帮助填充缺少的javadoc内容以及完整性检查/拼写检查。