package hudson.plugins.warnings.parser;
import java.util.regex.Matcher;
import org.apache.commons.lang.StringUtils;
/**
* A parser for the ant JavaDoc compiler warnings.
*
* @author Ulli Hafner
*/
public class JavaDocParser extends RegexpLineParser {
/** Warning type of this parser. */
static final String WARNING_TYPE = "JavaDoc";
/** Pattern of javac compiler warnings. */
private static final String JAVA_DOC_WARNING_PATTERN = "^\\s*(?:\\[javadoc\\]\\s*(.*):(\\d+):.*-\\s*(.*)|\\[WARNING\\]\\s*javadoc\\s*.*\\s*-\\s*(.*\\\"(.*)\\\")|\\[WARNING\\]\\s*(.*):(\\d+):warning\\s*-\\s*(.*))$";
/**
* Creates a new instance of <code>AntJavacParser</code>.
*/
public JavaDocParser() {
super(JAVA_DOC_WARNING_PATTERN, WARNING_TYPE);
}
/**
* Creates a new annotation for the specified pattern.
*
* @param matcher the regular expression matcher
* @return a new annotation for the specified pattern
*/
@Override
protected Warning createWarning(final Matcher matcher) {
if (StringUtils.isNotBlank(matcher.group(3))) {
return new Warning(matcher.group(1), getLineNumber(matcher.group(2)), WARNING_TYPE, StringUtils.EMPTY, matcher.group(3));
}
else if (StringUtils.isNotBlank(matcher.group(5))) {
return new Warning(matcher.group(5), 0, WARNING_TYPE, StringUtils.EMPTY, matcher.group(4));
}
else if (StringUtils.isNotBlank(matcher.group(8))) {
return new Warning(matcher.group(6), getLineNumber(matcher.group(7)), WARNING_TYPE, StringUtils.EMPTY, matcher.group(8));
}
return FALSE_POSITIVE;
}
}