package hudson.plugins.warnings.parser; import hudson.plugins.analysis.util.model.Priority; import java.util.regex.Matcher; /** * A parser for the erlc compiler warnings. * * @author Stefan Brausch */ public class ErlcParser extends RegexpLineParser { /** Warning type of this parser. */ static final String WARNING_TYPE = "erlc"; /** Pattern of erlc compiler warnings. */ private static final String ERLC_WARNING_PATTERN = "^(.+\\.(?:erl|yrl|mib|bin|rel|asn1|idl)):(\\d*): ([wW]arning: )?(.+)$"; /** * Creates a new instance of <code>ErlcCompileParser</code>. */ public ErlcParser() { super(ERLC_WARNING_PATTERN, "Erlang Compiler"); } /** {@inheritDoc} */ @Override protected Warning createWarning(final Matcher matcher) { String filename = matcher.group(1); int linenumber = getLineNumber(matcher.group(2)); Priority priority; String category; String message = matcher.group(4); String categoryMatch = matcher.group(3); if ("warning: ".equalsIgnoreCase(categoryMatch)) { priority = Priority.NORMAL; category = "ERLC " + categoryMatch.substring(0, categoryMatch.length() - 2); } else { priority = Priority.HIGH; category = "ERLC Error"; } return new Warning(filename, linenumber, WARNING_TYPE, category, message, priority); } }