package hudson.plugins.warnings.parser;
import hudson.plugins.analysis.util.model.Priority;
import java.util.regex.Matcher;
/**
* A parser for the Gnat compiler warnings.
*
* @author Bernhard Berger
*/
public class GnatParser extends RegexpLineParser {
/** Warning type of this parser. */
static final String WARNING_TYPE = "gnat";
/** Pattern of Gnat compiler warnings. */
private static final String GNAT_WARNING_PATTERN = "^(.+.(?:ads|adb)):(\\d+):(\\d+): ((?:error:)|(?:warning:)|(?:\\(style\\))) (.+)$";
/**
* Creates a new instance of <code>GnatParser</code>.
*/
public GnatParser() {
super(GNAT_WARNING_PATTERN, "Ada Compiler (gnat)");
}
/** {@inheritDoc} */
@Override
protected Warning createWarning(final Matcher matcher) {
Priority priority;
String category;
if ("warning:".equalsIgnoreCase(matcher.group(4))) {
priority = Priority.NORMAL;
category = "GNAT warning";
}
else if ("(style)".equalsIgnoreCase(matcher.group(4))) {
priority = Priority.LOW;
category = "GNAT style";
}
else {
priority = Priority.HIGH;
category = "GNAT error";
}
return new Warning(matcher.group(1), getLineNumber(matcher.group(2)), WARNING_TYPE,
category, matcher.group(5), priority);
}
}