boolean found = false;
// Loop looking for matching param
final Iterator<DetailAST> paramIt = params.iterator();
while (paramIt.hasNext()) {
final DetailAST param = paramIt.next();
if (param.getText().equals(tag.getArg1())) {
found = true;
paramIt.remove();
break;
}
}
if (tag.getArg1().startsWith("<") && tag.getArg1().endsWith(">")) {
// Loop looking for matching type param
final Iterator<DetailAST> typeParamsIt = typeParams.iterator();
while (typeParamsIt.hasNext()) {
final DetailAST typeParam = typeParamsIt.next();
if (typeParam.findFirstToken(TokenTypes.IDENT).getText()
.equals(
tag.getArg1().substring(1,
tag.getArg1().length() - 1)))
{
found = true;
typeParamsIt.remove();
break;
}
}
}
// Handle extra JavadocTag
if (!found) {
log(tag.getLineNo(), tag.getColumnNo(), "javadoc.unusedTag",
"@param", tag.getArg1());
}
}
// Now dump out all type parameters/parameters without tags :- unless
// the user has chosen to suppress these problems
if (!mAllowMissingParamTags && aReportExpectedTags) {
for (DetailAST param : params) {
log(param, "javadoc.expectedTag", "@param", param.getText());
}
for (DetailAST typeParam : typeParams) {
log(typeParam, "javadoc.expectedTag", "@param", "<"
+ typeParam.findFirstToken(TokenTypes.IDENT).getText()
+ ">");
}
}
}