package hudson.plugins.warnings.parser;
import hudson.plugins.analysis.util.model.Priority;
import java.util.regex.Matcher;
/**
* A parser for gcc 4.x compiler warnings.
*
* @author Frederic Chateau
*/
public class Gcc4CompilerParser extends RegexpLineParser {
/** A GCC error. */
static final String WARNING_CATEGORY = "GCC4 Error";
/** Warning type of this parser. */
static final String WARNING_TYPE = "gcc4";
/** Pattern of gcc 4 compiler warnings. */
private static final String GCC_WARNING_PATTERN = "^(.+?):(\\d+):(?:\\d+:)? (warning|error): (.*)$";
/**
* Creates a new instance of <code>Gcc4CompilerParser</code>.
*/
public Gcc4CompilerParser() {
super(GCC_WARNING_PATTERN, "GNU compiler 4 (gcc)");
}
/** {@inheritDoc} */
@Override
protected Warning createWarning(final Matcher matcher) {
String fileName = matcher.group(1);
int lineNumber = getLineNumber(matcher.group(2));
String message = matcher.group(4);
Priority priority;
if (matcher.group(3).equalsIgnoreCase("error")) {
priority = Priority.HIGH;
}
else {
priority = Priority.NORMAL;
}
return new Warning(fileName, lineNumber, WARNING_TYPE, WARNING_CATEGORY, message, priority);
}
}