diff --git a/custom-checks/checkstyle/src/main/java/org/openhab/tools/analysis/checkstyle/readme/MarkdownCheck.java b/custom-checks/checkstyle/src/main/java/org/openhab/tools/analysis/checkstyle/readme/MarkdownCheck.java index 6944f57b..a8f5535a 100644 --- a/custom-checks/checkstyle/src/main/java/org/openhab/tools/analysis/checkstyle/readme/MarkdownCheck.java +++ b/custom-checks/checkstyle/src/main/java/org/openhab/tools/analysis/checkstyle/readme/MarkdownCheck.java @@ -15,11 +15,13 @@ import static org.openhab.tools.analysis.checkstyle.api.CheckConstants.*; import java.io.File; +import java.util.List; import org.openhab.tools.analysis.checkstyle.api.AbstractStaticCheck; import com.puppycrawl.tools.checkstyle.api.CheckstyleException; import com.puppycrawl.tools.checkstyle.api.FileText; +import com.vladsch.flexmark.ext.yaml.front.matter.YamlFrontMatterExtension; import com.vladsch.flexmark.parser.Parser; import com.vladsch.flexmark.util.ast.Node; import com.vladsch.flexmark.util.data.MutableDataSet; @@ -54,6 +56,7 @@ private void checkReadMe(FileText fileText) { MutableDataSet options = new MutableDataSet(); // By setting this option to true, the parser provides line numbers in the original markdown text for each node options.set(Parser.TRACK_DOCUMENT_LINES, true); + options.set(Parser.EXTENSIONS, List.of(YamlFrontMatterExtension.create())); Node readmeMarkdownNode = parseMarkdown(fileText, options); // CallBack is used in order to use the protected log method of the AbstractStaticCheck in the Visitor diff --git a/custom-checks/checkstyle/src/test/java/org/openhab/tools/analysis/checkstyle/test/MarkdownCheckTest.java b/custom-checks/checkstyle/src/test/java/org/openhab/tools/analysis/checkstyle/test/MarkdownCheckTest.java index e84341cb..453d4eb1 100644 --- a/custom-checks/checkstyle/src/test/java/org/openhab/tools/analysis/checkstyle/test/MarkdownCheckTest.java +++ b/custom-checks/checkstyle/src/test/java/org/openhab/tools/analysis/checkstyle/test/MarkdownCheckTest.java @@ -249,6 +249,11 @@ public void testDocFolderWrong() throws Exception { verifyMarkDownFile("testDocFolderWrong", expectedMessages); } + @Test + public void testFrontMatterIgnored() throws Exception { + verifyMarkDownFile("testFrontMatterIgnored", noMessagesExpected()); + } + private void createValidConfig() { config = createModuleConfig(MarkdownCheck.class); } diff --git a/custom-checks/checkstyle/src/test/resources/checkstyle/markdownCheckTest/testFrontMatterIgnored/README.md b/custom-checks/checkstyle/src/test/resources/checkstyle/markdownCheckTest/testFrontMatterIgnored/README.md new file mode 100644 index 00000000..1cc102ab --- /dev/null +++ b/custom-checks/checkstyle/src/test/resources/checkstyle/markdownCheckTest/testFrontMatterIgnored/README.md @@ -0,0 +1,16 @@ +--- +title: Sample document +description: | + # not a header + * not a list + ``` + not code formatting + ``` +children: + - ["doc/test1", "Test1"] + - ["doc/test2", "Test2"] +--- + +# Actual Header + +Body text.