in agent/src/jetbrains/buildServer/xmlReportPlugin/parsers/pmd/PmdXmlReportParser.java [26:60]
protected List<XmlHandler> getRootHandlers() {
return new ORHandler(elementsPath(new Handler() {
public XmlReturn processElement(@NotNull final XmlElementInfo reader) {
return reader.visitChildren(elementsPath(new Handler() {
public XmlReturn processElement(@NotNull final XmlElementInfo reader) {
final String file = reader.getAttribute("name");
return reader.visitChildren(elementsPath(new Handler() {
public XmlReturn processElement(@NotNull final XmlElementInfo reader) {
final String rule = reader.getAttribute("rule");
final String ruleset = reader.getAttribute("ruleset");
// 'beginline' and 'priority' MUST be evaluated here (before visitText)
// because reader may be changed later (when reading text, underlying buffer could be changed)
final int beginline = getInt(reader.getAttribute("beginline"));
final int priority = getInt(reader.getAttribute("priority"));
myCallback.reportInspectionType(new InspectionTypeResult(rule, rule, ruleset, ruleset));
return reader.visitText(new TextHandler() {
public void setText(@NotNull final String text) {
myCallback.reportInspection(new InspectionResult(file, rule, text.trim(), beginline, priority));
}
});
}
}, "violation"));
}
}, "file"));
}
}, "pmd")) {
@Override
protected void finished(final boolean matched) {
if (!matched) myCallback.error("Unexpected report format: \"pmd\" root element missing. Please check PMD sources for the supported XML Schema");
}
}.asList();
}