use of com.puppycrawl.tools.checkstyle.checks.javadoc.InvalidJavadocTag in project debezium by debezium.
the class JavaDocUtil method getJavadocTags.
/**
* Gets validTags from a given piece of Javadoc.
*
* @param aCmt the Javadoc comment to process.
* @param aTagType the type of validTags we're interested in
* @return all standalone validTags from the given javadoc.
*/
public static JavadocTags getJavadocTags(TextBlock aCmt, JavadocTagType aTagType) {
final String[] text = aCmt.getText();
final List<JavadocTag> tags = Lists.newArrayList();
final List<InvalidJavadocTag> invalidTags = Lists.newArrayList();
Pattern blockTagPattern = Utils.createPattern("/\\*{2,}\\s*@(\\p{Alpha}+)\\s");
for (int i = 0; i < text.length; i++) {
final String s = text[i];
final Matcher blockTagMatcher = blockTagPattern.matcher(s);
if ((aTagType.equals(JavadocTagType.ALL) || aTagType.equals(JavadocTagType.BLOCK)) && blockTagMatcher.find()) {
final String tagName = blockTagMatcher.group(1);
String content = s.substring(blockTagMatcher.end(1));
if (content.endsWith("*/")) {
content = content.substring(0, content.length() - 2);
}
final int line = aCmt.getStartLineNo() + i;
int col = blockTagMatcher.start(1) - 1;
if (i == 0) {
col += aCmt.getStartColNo();
}
if (JavadocTagInfo.isValidName(tagName)) {
tags.add(new JavadocTag(line, col, tagName, content.trim()));
} else {
invalidTags.add(new InvalidJavadocTag(line, col, tagName));
}
} else // No block tag, so look for inline validTags
if (aTagType.equals(JavadocTagType.ALL) || aTagType.equals(JavadocTagType.INLINE)) {
// Match JavaDoc text after comment characters
final Pattern commentPattern = Utils.createPattern("^\\s*(?:/\\*{2,}|\\*+)\\s*(.*)");
final Matcher commentMatcher = commentPattern.matcher(s);
final String commentContents;
// offset including comment characters
final int commentOffset;
if (!commentMatcher.find()) {
// No leading asterisks, still valid
commentContents = s;
commentOffset = 0;
} else {
commentContents = commentMatcher.group(1);
commentOffset = commentMatcher.start(1) - 1;
}
// The last '}' may
final Pattern tagPattern = Utils.createPattern(".*?\\{@(\\p{Alpha}+)\\s+([^\\}]*)");
// appear on the next
// line ...
final Matcher tagMatcher = tagPattern.matcher(commentContents);
while (tagMatcher.find()) {
if (tagMatcher.groupCount() == 2) {
final String tagName = tagMatcher.group(1);
final String tagValue = tagMatcher.group(2).trim();
final int line = aCmt.getStartLineNo() + i;
int col = commentOffset + (tagMatcher.start(1) - 1);
if (i == 0) {
col += aCmt.getStartColNo();
}
if (JavadocTagInfo.isValidName(tagName)) {
tags.add(new JavadocTag(line, col, tagName, tagValue));
} else {
invalidTags.add(new InvalidJavadocTag(line, col, tagName));
}
}
// else Error: Unexpected match count for inline JavaDoc tag
}
}
blockTagPattern = Utils.createPattern("^\\s*\\**\\s*@(\\p{Alpha}+)\\s");
}
return new JavadocTags(tags, invalidTags);
}
Aggregations