KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > incava > doctorj > FunctionDocAnalyzer


1 package org.incava.doctorj;
2
3 import java.util.Iterator JavaDoc;
4 import java.util.List JavaDoc;
5 import net.sourceforge.pmd.ast.*;
6 import org.incava.analysis.Report;
7 import org.incava.java.SimpleNodeUtil;
8 import org.incava.javadoc.*;
9
10
11 /**
12  * Analyzes Javadoc and code for methods and constructors, AKA functions.
13  */

14 public abstract class FunctionDocAnalyzer extends ItemDocAnalyzer
15 {
16     public final static String JavaDoc MSG_SERIALDATA_WITHOUT_DESCRIPTION = "@serialData without description";
17     
18     public FunctionDocAnalyzer(Report r, SimpleNode node)
19     {
20         super(r, node);
21     }
22
23     protected void checkJavadoc(JavadocNode javadoc)
24     {
25         super.checkJavadoc(javadoc);
26
27         SimpleNode encNode = getEnclosingNode();
28         int chkLevel = SimpleNodeUtil.getLevel(encNode);
29
30         ExceptionDocAnalyzer eda = new ExceptionDocAnalyzer(getReport(), javadoc, getNode(), chkLevel);
31         eda.run();
32
33         ASTFormalParameters params = getParameterList();
34         ParameterDocAnalyzer pda = new ParameterDocAnalyzer(getReport(), javadoc, getNode(), params, chkLevel);
35         pda.run();
36
37         if (javadoc == null) {
38             tr.Ace.log("no javadoc");
39         }
40         else if (isCheckable(encNode, CHKLVL_TAG_CONTENT)) {
41             JavadocTaggedNode[] taggedComments = javadoc.getTaggedComments();
42             tr.Ace.log("taggedComments", taggedComments);
43             
44             for (int ti = 0; ti < taggedComments.length; ++ti) {
45                 JavadocTaggedNode jtn = taggedComments[ti];
46                 JavadocTag tag = jtn.getTag();
47
48                 if (tag.text.equals(JavadocTags.SERIALDATA)) {
49                     checkForTagDescription(jtn, MSG_SERIALDATA_WITHOUT_DESCRIPTION);
50                 }
51             }
52         }
53         else {
54             tr.Ace.log("skipping check for tag content");
55         }
56     }
57
58     /**
59      * Returns the parameter list for the function.
60      */

61     protected abstract ASTFormalParameters getParameterList();
62
63 }
64
Popular Tags