1 package org.incava.doctorj; 2 3 import java.util.Iterator ; 4 import java.util.List ; 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 14 public abstract class FunctionDocAnalyzer extends ItemDocAnalyzer 15 { 16 public final static String 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 61 protected abstract ASTFormalParameters getParameterList(); 62 63 } 64 | Popular Tags |