如果沒有爲方法或類提供的javadoc註釋,是否有方法(最好通過參數,taglet,doclet或類似方法)讓Javadoc生成警告?我在搜索引擎和谷歌搜索方面有了一個偵察員,但看不到任何突出的相關內容。我目前正在開發一個項目,其中所有內容都需要有某種形式的Javadoc評論,這對於此目的非常有用。Javadoc對無評論提出警告
編輯:我知道這樣的事情可以通過代碼質量工具,如checkstyle強制執行,我只是想知道是否有一種方法來配置Javadoc警告不同的事情,如這樣。
如果沒有爲方法或類提供的javadoc註釋,是否有方法(最好通過參數,taglet,doclet或類似方法)讓Javadoc生成警告?我在搜索引擎和谷歌搜索方面有了一個偵察員,但看不到任何突出的相關內容。我目前正在開發一個項目,其中所有內容都需要有某種形式的Javadoc評論,這對於此目的非常有用。Javadoc對無評論提出警告
編輯:我知道這樣的事情可以通過代碼質量工具,如checkstyle強制執行,我只是想知道是否有一種方法來配置Javadoc警告不同的事情,如這樣。
如果你真的想要使用Javadoc,自定義檢查doclet將是要走的路。
下面是一個例子:
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
如果我們希望每當發現一個錯誤這是不成功的,在這種情況下,我們應該從start-method返回false。
您可以嘗試checkstyle來執行此類約定。
這個任務最好使用像PMD或FindBug這樣的代碼分析工具(可能檢查樣式),因爲這些都是針對這些問題而設計的。
IntelliJ有一個內置檢查器,它可以幫助填充缺少的javadoc內容以及完整性檢查/拼寫檢查它。
感謝讓我發現:) – Dunaril 2011-03-09 10:04:40
是的,checkstyle是最好的選擇,任何違規與錯誤類型的嚴重程度將失敗的構建。 – asgs 2011-03-09 10:05:10
謝謝,這是值得指出的,我可能會回到使用checkstyle來做到這一點。我只是想知道是否有一個簡單的Javadoc選項,我錯過了任何人都知道的選項。 – berry120 2011-03-09 10:05:15