diff --git a/eo-maven-plugin/src/main/java/org/eolang/maven/VerifyMojo.java b/eo-maven-plugin/src/main/java/org/eolang/maven/VerifyMojo.java index dda7888e1c..a2489db470 100644 --- a/eo-maven-plugin/src/main/java/org/eolang/maven/VerifyMojo.java +++ b/eo-maven-plugin/src/main/java/org/eolang/maven/VerifyMojo.java @@ -24,6 +24,7 @@ package org.eolang.maven; import com.jcabi.log.Logger; +import com.jcabi.xml.XML; import com.yegor256.xsline.TrClasspath; import com.yegor256.xsline.TrDefault; import java.nio.file.Path; @@ -105,6 +106,7 @@ void exec() { */ private Optimization optimization() { Optimization opt = new OptTrain( + this::logErrors, new TrClasspath<>( new TrDefault<>(), "/org/eolang/parser/fail-on-errors.xsl", @@ -117,4 +119,35 @@ private Optimization optimization() { return opt; } + /** + * Log errors of xml. + * @param xml XMIR. + * @return XML. + */ + private XML logErrors(final XML xml) { + for (final XML error: xml.nodes("/program/errors/error")) { + final String message = Logger.format( + "%[file]s, line %s: %s", + xml.xpath("/program/@source").get(0), + error.xpath("@line").get(0), + error.xpath("text()").get(0) + ); + final String severity = error.xpath("@severity").get(0); + switch (severity) { + case "warning": + Logger.warn(this, message); + break; + case "error": + case "critical": + Logger.error(this, message); + break; + default: + throw new IllegalArgumentException( + String.format("Incorrect severity: %s", severity) + ); + } + } + return xml; + } + }