diff --git a/pom.xml b/pom.xml index 2ed880a8..bca2817b 100644 --- a/pom.xml +++ b/pom.xml @@ -87,6 +87,11 @@ SOFTWARE. jcabi-xml 0.30.1 + + io.github.secretx33 + path-matching-resource-pattern-resolver + 0.1 + org.cactoos cactoos diff --git a/src/main/java/org/eolang/lints/LintByXsl.java b/src/main/java/org/eolang/lints/LintByXsl.java index 3eba367b..69ac43e3 100644 --- a/src/main/java/org/eolang/lints/LintByXsl.java +++ b/src/main/java/org/eolang/lints/LintByXsl.java @@ -23,12 +23,14 @@ */ package org.eolang.lints; +import com.jcabi.xml.ClasspathSources; import com.jcabi.xml.XML; import com.jcabi.xml.XSL; import com.jcabi.xml.XSLDocument; import java.io.IOException; import java.util.Collection; import java.util.LinkedList; +import org.cactoos.Input; import org.cactoos.io.ResourceOf; import org.cactoos.text.IoCheckedText; import org.cactoos.text.TextOf; @@ -50,15 +52,24 @@ final class LintByXsl implements Lint { * @param xsl Relative path of XSL * @throws IOException If fails */ - LintByXsl(final String xsl) throws IOException { + LintByXsl(final Input xsl) throws IOException { this.sheet = new XSLDocument( new IoCheckedText( - new TextOf( - new ResourceOf( - String.format("org/eolang/lints/%s.xsl", xsl) - ) - ) + new TextOf(xsl) ).asString() + ).with(new ClasspathSources()); + } + + /** + * Ctor. + * @param xsl Relative path of XSL + * @throws IOException If fails + */ + LintByXsl(final String xsl) throws IOException { + this( + new ResourceOf( + String.format("org/eolang/lints/%s.xsl", xsl) + ) ); } diff --git a/src/main/java/org/eolang/lints/Scope.java b/src/main/java/org/eolang/lints/Scope.java index f9e411e5..8d54f79b 100644 --- a/src/main/java/org/eolang/lints/Scope.java +++ b/src/main/java/org/eolang/lints/Scope.java @@ -23,11 +23,13 @@ */ package org.eolang.lints; +import io.github.secretx33.resourceresolver.PathMatchingResourcePatternResolver; import java.io.IOException; import java.nio.file.Path; import java.util.Arrays; import java.util.Collection; import java.util.LinkedList; +import org.cactoos.io.InputOf; import org.cactoos.iterable.Mapped; /** @@ -40,13 +42,7 @@ public final class Scope { /** * Lints to use. */ - private static final Iterable LINTS = new Mapped<>( - LintByXsl::new, - Arrays.asList( - "critical/duplicate-names", - "critical/not-empty-atoms" - ) - ); + private static final Iterable LINTS = Scope.all(); /** * Directory with XMIR files. @@ -76,4 +72,25 @@ public Collection defects() throws IOException { return messages; } + /** + * All lints. + * @return List of all lints + */ + private static Iterable all() { + try { + return new Mapped<>( + res -> new LintByXsl( + new InputOf(res.getInputStream()) + ), + Arrays.asList( + new PathMatchingResourcePatternResolver().getResources( + "classpath*:org/eolang/lints/**/*.xsl" + ) + ) + ); + } catch (final IOException ex) { + throw new IllegalArgumentException(ex); + } + } + } diff --git a/src/main/java/org/eolang/lints/Severity.java b/src/main/java/org/eolang/lints/Severity.java index 9e456687..e10c6a7d 100644 --- a/src/main/java/org/eolang/lints/Severity.java +++ b/src/main/java/org/eolang/lints/Severity.java @@ -53,7 +53,7 @@ public static Severity parsed(final String text) { final Severity severity; if ("critical".equals(text)) { severity = Severity.CRITICAL; - } else if ("defect".equals(text)) { + } else if ("error".equals(text)) { severity = Severity.ERROR; } else if ("warning".equals(text)) { severity = Severity.WARNING; diff --git a/src/main/resources/org/eolang/lints/metas/mandatory-home-meta.xsl b/src/main/resources/org/eolang/lints/metas/mandatory-home-meta.xsl index 4829cf40..b7426efd 100644 --- a/src/main/resources/org/eolang/lints/metas/mandatory-home-meta.xsl +++ b/src/main/resources/org/eolang/lints/metas/mandatory-home-meta.xsl @@ -32,7 +32,7 @@ SOFTWARE. missing-home - + 0 warning diff --git a/src/main/resources/org/eolang/lints/metas/mandatory-package-meta.xsl b/src/main/resources/org/eolang/lints/metas/mandatory-package-meta.xsl index 591f54a3..6468f1a7 100644 --- a/src/main/resources/org/eolang/lints/metas/mandatory-package-meta.xsl +++ b/src/main/resources/org/eolang/lints/metas/mandatory-package-meta.xsl @@ -32,7 +32,7 @@ SOFTWARE. missing-package - + 0 warning diff --git a/src/main/resources/org/eolang/lints/metas/mandatory-version-meta.xsl b/src/main/resources/org/eolang/lints/metas/mandatory-version-meta.xsl index 1e39bcc8..bb69ffbb 100644 --- a/src/main/resources/org/eolang/lints/metas/mandatory-version-meta.xsl +++ b/src/main/resources/org/eolang/lints/metas/mandatory-version-meta.xsl @@ -32,7 +32,7 @@ SOFTWARE. missing-version-meta - + 0 warning