package hudson.plugins.warnings.parser;
import hudson.plugins.analysis.util.model.Priority;
import java.util.regex.Matcher;
/**
* A parser for PHP runtime errors and warnings.
*
* @author Shimi Kiviti
*/
public class PhpParser extends RegexpLineParser {
/** Category for PHP Fatal error. */
static final String FATAL_ERROR_CATEGORY = "PHP Fatal error";
/** Category for PHP Warning. */
static final String WARNING_CATEGORY = "PHP Warning";
/** Category for PHP Notice. */
static final String NOTICE_CATEGORY = "PHP Notice";
/** Warning type of this parser. */
static final String WARNING_TYPE = "PHP Runtime Warning";
/** Pattern of PHP runtime warnings. */
private static final String PHP_WARNING_PATTERN = "^.*(PHP Warning|PHP Notice|PHP Fatal error):\\s+(.+ in (.+) on line (\\d+))$";
/**
* Creates a new instance of {@link PhpParser}.
*/
public PhpParser() {
super(PHP_WARNING_PATTERN, WARNING_TYPE, true);
}
/** {@inheritDoc} */
@Override
protected boolean isLineInteresting(final String line) {
return line.contains("PHP");
}
/** {@inheritDoc} */
@Override
protected Warning createWarning(final Matcher matcher) {
String category = matcher.group(1);
String message = matcher.group(2);
String fileName = matcher.group(3);
String start = matcher.group(4);
Priority priority = Priority.NORMAL;
if (category.contains("Fatal")) {
priority = Priority.HIGH;
}
return new Warning(fileName, Integer.parseInt(start), "PHP Runtime Warning", category, message, priority);
}
}