From b2a6d76d7e36e3a73ab719f004d44a3137e100ac Mon Sep 17 00:00:00 2001 From: Uwe Brandt Date: Tue, 26 Mar 2019 15:38:36 +0100 Subject: [PATCH 01/11] add CMake warnings support --- .../hafner/analysis/parser/CMakeParser.java | 45 +++++++++++++++++ .../analysis/parser/CMakeParserTest.java | 50 +++++++++++++++++++ .../edu/hm/hafner/analysis/parser/cmake.txt | 11 ++++ 3 files changed, 106 insertions(+) create mode 100644 src/main/java/edu/hm/hafner/analysis/parser/CMakeParser.java create mode 100644 src/test/java/edu/hm/hafner/analysis/parser/CMakeParserTest.java create mode 100644 src/test/resources/edu/hm/hafner/analysis/parser/cmake.txt diff --git a/src/main/java/edu/hm/hafner/analysis/parser/CMakeParser.java b/src/main/java/edu/hm/hafner/analysis/parser/CMakeParser.java new file mode 100644 index 000000000..566f2e180 --- /dev/null +++ b/src/main/java/edu/hm/hafner/analysis/parser/CMakeParser.java @@ -0,0 +1,45 @@ +package edu.hm.hafner.analysis.parser; + +import java.util.Optional; +import java.util.regex.Matcher; + +import org.apache.commons.lang3.StringUtils; + +import edu.hm.hafner.analysis.Issue; +import edu.hm.hafner.analysis.IssueBuilder; +import edu.hm.hafner.analysis.Severity; +import edu.hm.hafner.analysis.RegexpDocumentParser; + +/** + * A parser for CMake warnings. + * + * @author Uwe Brandt + */ +public class CMakeParser extends RegexpDocumentParser { + private static final long serialVersionUID = 8149238560432255036L; + + private static final String CMAKE_WARNING_PATTERN = + "CMake\\s+Warning(?:.*?(\\S+)){0,1}(?::(\\d+)\\s+(\\S+)){0,1}\\s*:\\n(.*)\\n"; + + /** + * Creates a new instance of {@link CMakeParser}. + */ + public CMakeParser() { + super(CMAKE_WARNING_PATTERN, true); + } + + @Override + protected Optional createIssue(final Matcher matcher, final IssueBuilder builder) { + String fileName = matcher.group(1); + if (fileName == null) { + fileName = ""; + } + return builder.setFileName(fileName) + .setLineStart(matcher.group(2)) + .setCategory(matcher.group(3)) + .setMessage(matcher.group(4)) + .setSeverity(Severity.WARNING_NORMAL) + .buildOptional(); + } +} + diff --git a/src/test/java/edu/hm/hafner/analysis/parser/CMakeParserTest.java b/src/test/java/edu/hm/hafner/analysis/parser/CMakeParserTest.java new file mode 100644 index 000000000..c51907851 --- /dev/null +++ b/src/test/java/edu/hm/hafner/analysis/parser/CMakeParserTest.java @@ -0,0 +1,50 @@ +package edu.hm.hafner.analysis.parser; + +import edu.hm.hafner.analysis.AbstractParserTest; +import edu.hm.hafner.analysis.Severity; +import edu.hm.hafner.analysis.Report; +import edu.hm.hafner.analysis.assertj.SoftAssertions; + +/** + * Tests the class {@link CMakeParser}. + */ +class CMakeParserTest extends AbstractParserTest { + CMakeParserTest() { + super("cmake.txt"); + } + + @Override + protected void assertThatIssuesArePresent(final Report report, final SoftAssertions softly) { + softly.assertThat(report).hasSize(4); + softly.assertThat(report.get(0)) + .hasSeverity(Severity.WARNING_NORMAL) + .hasCategory("") + .hasLineStart(0) + .hasMessage("[step1] Manually-specified variables were not used by the project") + .hasFileName(""); + softly.assertThat(report.get(1)) + .hasSeverity(Severity.WARNING_NORMAL) + .hasCategory("") + .hasLineStart(0) + .hasMessage("[step2] The build directory is a subdirectory of the source directory.") + .hasFileName("CMakeLists.txt"); + softly.assertThat(report.get(2)) + .hasSeverity(Severity.WARNING_NORMAL) + .hasCategory("(option)") + .hasLineStart(10) + .hasMessage("I'm the message") + .hasFileName("tools/gtest-1.8/googlemock/CMakeLists.txt"); + softly.assertThat(report.get(3)) + .hasSeverity(Severity.WARNING_NORMAL) + .hasCategory("(message)") + .hasLineStart(423) + .hasMessage("Special workaround applied") + .hasFileName("project/utils/fancy.cmake"); + } + + @Override + protected CMakeParser createParser() { + return new CMakeParser(); + } +} + diff --git a/src/test/resources/edu/hm/hafner/analysis/parser/cmake.txt b/src/test/resources/edu/hm/hafner/analysis/parser/cmake.txt new file mode 100644 index 000000000..4ab098518 --- /dev/null +++ b/src/test/resources/edu/hm/hafner/analysis/parser/cmake.txt @@ -0,0 +1,11 @@ +[step1] CMake Warning: +[step1] Manually-specified variables were not used by the project + +[step2] CMake Warning in CMakeLists.txt: +[step2] The build directory is a subdirectory of the source directory. + +CMake Warning (dev) at tools/gtest-1.8/googlemock/CMakeLists.txt:10 (option): +I'm the message + +CMake Warning at project/utils/fancy.cmake:423 (message): +Special workaround applied \ No newline at end of file From fb3a4486ff093149ba3e8d8fa74d4eaeb4345fe8 Mon Sep 17 00:00:00 2001 From: Uwe Brandt Date: Wed, 27 Mar 2019 09:55:43 +0100 Subject: [PATCH 02/11] try new minor version number --- pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index 1798ab1ce..aa2517042 100644 --- a/pom.xml +++ b/pom.xml @@ -2,11 +2,11 @@ - 4.0.0 + 4.1.0 edu.hm.hafner analysis-model - 4.0.1-SNAPSHOT + 4.1.1-SNAPSHOT jar From a1e7cd8182086907674fc524182a4e1a948be16b Mon Sep 17 00:00:00 2001 From: Uwe Brandt Date: Thu, 28 Mar 2019 19:44:50 +0100 Subject: [PATCH 03/11] fix review findings: version scheme and RegexpDocumentParser replaced by RegexpLineParser --- pom.xml | 4 +-- .../hafner/analysis/parser/CMakeParser.java | 26 ++++++++++--------- .../analysis/parser/CMakeParserTest.java | 4 ++- 3 files changed, 19 insertions(+), 15 deletions(-) diff --git a/pom.xml b/pom.xml index aa2517042..17791949c 100644 --- a/pom.xml +++ b/pom.xml @@ -2,11 +2,11 @@ - 4.1.0 + 4.0.0 edu.hm.hafner analysis-model - 4.1.1-SNAPSHOT + 4.1.0-SNAPSHOT jar diff --git a/src/main/java/edu/hm/hafner/analysis/parser/CMakeParser.java b/src/main/java/edu/hm/hafner/analysis/parser/CMakeParser.java index 566f2e180..ff4ed1a2b 100644 --- a/src/main/java/edu/hm/hafner/analysis/parser/CMakeParser.java +++ b/src/main/java/edu/hm/hafner/analysis/parser/CMakeParser.java @@ -8,36 +8,38 @@ import edu.hm.hafner.analysis.Issue; import edu.hm.hafner.analysis.IssueBuilder; import edu.hm.hafner.analysis.Severity; -import edu.hm.hafner.analysis.RegexpDocumentParser; +import edu.hm.hafner.analysis.LookaheadParser; +import edu.hm.hafner.util.LookaheadStream; /** * A parser for CMake warnings. * * @author Uwe Brandt */ -public class CMakeParser extends RegexpDocumentParser { +public class CMakeParser extends LookaheadParser { private static final long serialVersionUID = 8149238560432255036L; private static final String CMAKE_WARNING_PATTERN = - "CMake\\s+Warning(?:.*?(\\S+)){0,1}(?::(\\d+)\\s+(\\S+)){0,1}\\s*:\\n(.*)\\n"; + "CMake\\s+Warning(?:.*?(?\\S+)){0,1}(?::(?\\d+)\\s+(?\\S+)){0,1}\\s*:"; /** * Creates a new instance of {@link CMakeParser}. */ public CMakeParser() { - super(CMAKE_WARNING_PATTERN, true); + super(CMAKE_WARNING_PATTERN); } @Override - protected Optional createIssue(final Matcher matcher, final IssueBuilder builder) { - String fileName = matcher.group(1); - if (fileName == null) { - fileName = ""; + protected Optional createIssue(final Matcher matcher, final LookaheadStream lookahead, + final IssueBuilder builder) { + String message = ""; + if (lookahead.hasNext()) { + message = lookahead.next(); } - return builder.setFileName(fileName) - .setLineStart(matcher.group(2)) - .setCategory(matcher.group(3)) - .setMessage(matcher.group(4)) + return builder.setFileName(matcher.group("file")) + .setLineStart(matcher.group("line")) + .setCategory(matcher.group("category")) + .setMessage(message) .setSeverity(Severity.WARNING_NORMAL) .buildOptional(); } diff --git a/src/test/java/edu/hm/hafner/analysis/parser/CMakeParserTest.java b/src/test/java/edu/hm/hafner/analysis/parser/CMakeParserTest.java index c51907851..ed58ab0ba 100644 --- a/src/test/java/edu/hm/hafner/analysis/parser/CMakeParserTest.java +++ b/src/test/java/edu/hm/hafner/analysis/parser/CMakeParserTest.java @@ -7,6 +7,8 @@ /** * Tests the class {@link CMakeParser}. + * + * @author Uwe Brandt */ class CMakeParserTest extends AbstractParserTest { CMakeParserTest() { @@ -21,7 +23,7 @@ protected void assertThatIssuesArePresent(final Report report, final SoftAsserti .hasCategory("") .hasLineStart(0) .hasMessage("[step1] Manually-specified variables were not used by the project") - .hasFileName(""); + .hasFileName("-"); softly.assertThat(report.get(1)) .hasSeverity(Severity.WARNING_NORMAL) .hasCategory("") From 034be7500bfec5932223600b3b1d595b88ff61ab Mon Sep 17 00:00:00 2001 From: Uwe Brandt Date: Thu, 28 Mar 2019 19:54:55 +0100 Subject: [PATCH 04/11] fix indentation --- src/main/java/edu/hm/hafner/analysis/parser/CMakeParser.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/edu/hm/hafner/analysis/parser/CMakeParser.java b/src/main/java/edu/hm/hafner/analysis/parser/CMakeParser.java index ff4ed1a2b..c1124823e 100644 --- a/src/main/java/edu/hm/hafner/analysis/parser/CMakeParser.java +++ b/src/main/java/edu/hm/hafner/analysis/parser/CMakeParser.java @@ -39,7 +39,7 @@ protected Optional createIssue(final Matcher matcher, final LookaheadStre return builder.setFileName(matcher.group("file")) .setLineStart(matcher.group("line")) .setCategory(matcher.group("category")) - .setMessage(message) + .setMessage(message) .setSeverity(Severity.WARNING_NORMAL) .buildOptional(); } From 3a46b8178fb1ca1afa39ccb3e71fd8dc622d9fdf Mon Sep 17 00:00:00 2001 From: Uwe Brandt Date: Thu, 28 Mar 2019 22:44:42 +0100 Subject: [PATCH 05/11] replace tabs by spaces as found by codacity --- src/main/java/edu/hm/hafner/analysis/parser/CMakeParser.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/edu/hm/hafner/analysis/parser/CMakeParser.java b/src/main/java/edu/hm/hafner/analysis/parser/CMakeParser.java index c1124823e..6df978b58 100644 --- a/src/main/java/edu/hm/hafner/analysis/parser/CMakeParser.java +++ b/src/main/java/edu/hm/hafner/analysis/parser/CMakeParser.java @@ -31,7 +31,7 @@ public CMakeParser() { @Override protected Optional createIssue(final Matcher matcher, final LookaheadStream lookahead, - final IssueBuilder builder) { + final IssueBuilder builder) { String message = ""; if (lookahead.hasNext()) { message = lookahead.next(); From f4ebf6296a450eaa7871668791a07c8acce66858 Mon Sep 17 00:00:00 2001 From: Uwe Brandt Date: Thu, 28 Mar 2019 23:20:29 +0100 Subject: [PATCH 06/11] remove brackets from the category if the category is enclosed in brackets --- src/main/java/edu/hm/hafner/analysis/parser/CMakeParser.java | 4 +++- .../java/edu/hm/hafner/analysis/parser/CMakeParserTest.java | 4 ++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/main/java/edu/hm/hafner/analysis/parser/CMakeParser.java b/src/main/java/edu/hm/hafner/analysis/parser/CMakeParser.java index 6df978b58..c33b6bd78 100644 --- a/src/main/java/edu/hm/hafner/analysis/parser/CMakeParser.java +++ b/src/main/java/edu/hm/hafner/analysis/parser/CMakeParser.java @@ -36,9 +36,11 @@ protected Optional createIssue(final Matcher matcher, final LookaheadStre if (lookahead.hasNext()) { message = lookahead.next(); } + // if the category is contained in brackets, remove those brackets + String category = StringUtils.strip(matcher.group("category"), "()"); return builder.setFileName(matcher.group("file")) .setLineStart(matcher.group("line")) - .setCategory(matcher.group("category")) + .setCategory(category) .setMessage(message) .setSeverity(Severity.WARNING_NORMAL) .buildOptional(); diff --git a/src/test/java/edu/hm/hafner/analysis/parser/CMakeParserTest.java b/src/test/java/edu/hm/hafner/analysis/parser/CMakeParserTest.java index ed58ab0ba..4869ae524 100644 --- a/src/test/java/edu/hm/hafner/analysis/parser/CMakeParserTest.java +++ b/src/test/java/edu/hm/hafner/analysis/parser/CMakeParserTest.java @@ -32,13 +32,13 @@ protected void assertThatIssuesArePresent(final Report report, final SoftAsserti .hasFileName("CMakeLists.txt"); softly.assertThat(report.get(2)) .hasSeverity(Severity.WARNING_NORMAL) - .hasCategory("(option)") + .hasCategory("option") .hasLineStart(10) .hasMessage("I'm the message") .hasFileName("tools/gtest-1.8/googlemock/CMakeLists.txt"); softly.assertThat(report.get(3)) .hasSeverity(Severity.WARNING_NORMAL) - .hasCategory("(message)") + .hasCategory("message") .hasLineStart(423) .hasMessage("Special workaround applied") .hasFileName("project/utils/fancy.cmake"); From eb3ef41aaf645ff31b32e57dd9372603cad2449b Mon Sep 17 00:00:00 2001 From: Uwe Brandt Date: Fri, 29 Mar 2019 16:28:13 +0100 Subject: [PATCH 07/11] avoid 2x assignement to string --- .../edu/hm/hafner/analysis/parser/CMakeParser.java | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/main/java/edu/hm/hafner/analysis/parser/CMakeParser.java b/src/main/java/edu/hm/hafner/analysis/parser/CMakeParser.java index c33b6bd78..983b67bf2 100644 --- a/src/main/java/edu/hm/hafner/analysis/parser/CMakeParser.java +++ b/src/main/java/edu/hm/hafner/analysis/parser/CMakeParser.java @@ -32,18 +32,21 @@ public CMakeParser() { @Override protected Optional createIssue(final Matcher matcher, final LookaheadStream lookahead, final IssueBuilder builder) { - String message = ""; - if (lookahead.hasNext()) { - message = lookahead.next(); - } // if the category is contained in brackets, remove those brackets String category = StringUtils.strip(matcher.group("category"), "()"); return builder.setFileName(matcher.group("file")) .setLineStart(matcher.group("line")) .setCategory(category) - .setMessage(message) + .setMessage(readMessage(lookahead)) .setSeverity(Severity.WARNING_NORMAL) .buildOptional(); } + + private String readMessage(final LookaheadStream lookahead) { + if (lookahead.hasNext()) { + return lookahead.next(); + } + return ""; + } } From 08080cf9c58a5de2f0055119a2aa2ab005e4f0cb Mon Sep 17 00:00:00 2001 From: Uwe Brandt Date: Fri, 29 Mar 2019 21:17:38 +0100 Subject: [PATCH 08/11] cut prefix messages if they exist --- .../edu/hm/hafner/analysis/parser/CMakeParser.java | 10 +++++----- .../edu/hm/hafner/analysis/parser/CMakeParserTest.java | 4 ++-- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/main/java/edu/hm/hafner/analysis/parser/CMakeParser.java b/src/main/java/edu/hm/hafner/analysis/parser/CMakeParser.java index 983b67bf2..03335a79b 100644 --- a/src/main/java/edu/hm/hafner/analysis/parser/CMakeParser.java +++ b/src/main/java/edu/hm/hafner/analysis/parser/CMakeParser.java @@ -20,7 +20,7 @@ public class CMakeParser extends LookaheadParser { private static final long serialVersionUID = 8149238560432255036L; private static final String CMAKE_WARNING_PATTERN = - "CMake\\s+Warning(?:.*?(?\\S+)){0,1}(?::(?\\d+)\\s+(?\\S+)){0,1}\\s*:"; + "^(?.*?)CMake\\s+Warning(?:.*?(?\\S+)){0,1}(?::(?\\d+)\\s+(?\\S+)){0,1}\\s*:"; /** * Creates a new instance of {@link CMakeParser}. @@ -34,19 +34,19 @@ protected Optional createIssue(final Matcher matcher, final LookaheadStre final IssueBuilder builder) { // if the category is contained in brackets, remove those brackets String category = StringUtils.strip(matcher.group("category"), "()"); + int prefixLength = matcher.group("prefix").length(); return builder.setFileName(matcher.group("file")) .setLineStart(matcher.group("line")) .setCategory(category) - .setMessage(readMessage(lookahead)) + .setMessage(readMessage(lookahead, prefixLength)) .setSeverity(Severity.WARNING_NORMAL) .buildOptional(); } - private String readMessage(final LookaheadStream lookahead) { + private String readMessage(final LookaheadStream lookahead, final int prefixLength) { if (lookahead.hasNext()) { - return lookahead.next(); + return lookahead.next().substring(prefixLength).trim(); } return ""; } } - diff --git a/src/test/java/edu/hm/hafner/analysis/parser/CMakeParserTest.java b/src/test/java/edu/hm/hafner/analysis/parser/CMakeParserTest.java index 4869ae524..b1f042bb5 100644 --- a/src/test/java/edu/hm/hafner/analysis/parser/CMakeParserTest.java +++ b/src/test/java/edu/hm/hafner/analysis/parser/CMakeParserTest.java @@ -22,13 +22,13 @@ protected void assertThatIssuesArePresent(final Report report, final SoftAsserti .hasSeverity(Severity.WARNING_NORMAL) .hasCategory("") .hasLineStart(0) - .hasMessage("[step1] Manually-specified variables were not used by the project") + .hasMessage("Manually-specified variables were not used by the project") .hasFileName("-"); softly.assertThat(report.get(1)) .hasSeverity(Severity.WARNING_NORMAL) .hasCategory("") .hasLineStart(0) - .hasMessage("[step2] The build directory is a subdirectory of the source directory.") + .hasMessage("The build directory is a subdirectory of the source directory.") .hasFileName("CMakeLists.txt"); softly.assertThat(report.get(2)) .hasSeverity(Severity.WARNING_NORMAL) From 1051bf87a9aec884512339307e4bb5a6e864603e Mon Sep 17 00:00:00 2001 From: Uwe Brandt Date: Fri, 29 Mar 2019 21:51:27 +0100 Subject: [PATCH 09/11] add Error and Deprecation Warning --- .../edu/hm/hafner/analysis/parser/CMakeParser.java | 4 ++-- .../hm/hafner/analysis/parser/CMakeParserTest.java | 14 +++++++++++++- .../edu/hm/hafner/analysis/parser/cmake.txt | 10 ++++++++-- 3 files changed, 23 insertions(+), 5 deletions(-) diff --git a/src/main/java/edu/hm/hafner/analysis/parser/CMakeParser.java b/src/main/java/edu/hm/hafner/analysis/parser/CMakeParser.java index 03335a79b..d44cd1984 100644 --- a/src/main/java/edu/hm/hafner/analysis/parser/CMakeParser.java +++ b/src/main/java/edu/hm/hafner/analysis/parser/CMakeParser.java @@ -20,7 +20,7 @@ public class CMakeParser extends LookaheadParser { private static final long serialVersionUID = 8149238560432255036L; private static final String CMAKE_WARNING_PATTERN = - "^(?.*?)CMake\\s+Warning(?:.*?(?\\S+)){0,1}(?::(?\\d+)\\s+(?\\S+)){0,1}\\s*:"; + "^(?.*?)CMake\\s+(?Warning|Deprecation Warning|Error)(?:.*?(?\\S+)){0,1}(?::(?\\d+)\\s+(?\\S+)){0,1}\\s*:"; /** * Creates a new instance of {@link CMakeParser}. @@ -39,7 +39,7 @@ protected Optional createIssue(final Matcher matcher, final LookaheadStre .setLineStart(matcher.group("line")) .setCategory(category) .setMessage(readMessage(lookahead, prefixLength)) - .setSeverity(Severity.WARNING_NORMAL) + .setSeverity(Severity.guessFromString(matcher.group("type"))) .buildOptional(); } diff --git a/src/test/java/edu/hm/hafner/analysis/parser/CMakeParserTest.java b/src/test/java/edu/hm/hafner/analysis/parser/CMakeParserTest.java index b1f042bb5..8b1372a34 100644 --- a/src/test/java/edu/hm/hafner/analysis/parser/CMakeParserTest.java +++ b/src/test/java/edu/hm/hafner/analysis/parser/CMakeParserTest.java @@ -17,7 +17,7 @@ class CMakeParserTest extends AbstractParserTest { @Override protected void assertThatIssuesArePresent(final Report report, final SoftAssertions softly) { - softly.assertThat(report).hasSize(4); + softly.assertThat(report).hasSize(6); softly.assertThat(report.get(0)) .hasSeverity(Severity.WARNING_NORMAL) .hasCategory("") @@ -42,6 +42,18 @@ protected void assertThatIssuesArePresent(final Report report, final SoftAsserti .hasLineStart(423) .hasMessage("Special workaround applied") .hasFileName("project/utils/fancy.cmake"); + softly.assertThat(report.get(4)) + .hasSeverity(Severity.ERROR) + .hasCategory("message") + .hasLineStart(2) + .hasMessage("Uh oh !$%@!") + .hasFileName("error.cmake"); + softly.assertThat(report.get(5)) + .hasSeverity(Severity.WARNING_NORMAL) + .hasCategory("message") + .hasLineStart(23) + .hasMessage("function foo is deprecated, use bar instead") + .hasFileName("legacy.cmake"); } @Override diff --git a/src/test/resources/edu/hm/hafner/analysis/parser/cmake.txt b/src/test/resources/edu/hm/hafner/analysis/parser/cmake.txt index 4ab098518..54b770953 100644 --- a/src/test/resources/edu/hm/hafner/analysis/parser/cmake.txt +++ b/src/test/resources/edu/hm/hafner/analysis/parser/cmake.txt @@ -5,7 +5,13 @@ [step2] The build directory is a subdirectory of the source directory. CMake Warning (dev) at tools/gtest-1.8/googlemock/CMakeLists.txt:10 (option): -I'm the message + I'm the message CMake Warning at project/utils/fancy.cmake:423 (message): -Special workaround applied \ No newline at end of file + Special workaround applied + +CMake Error at error.cmake:2 (message): + Uh oh !$%@! + +CMake Deprecation Warning at legacy.cmake:23 (message): + function foo is deprecated, use bar instead \ No newline at end of file From 3f09fb27d51b72ab89dfd63d014025d9d2169524 Mon Sep 17 00:00:00 2001 From: Uwe Brandt Date: Sat, 30 Mar 2019 14:21:27 +0100 Subject: [PATCH 10/11] add a test with a category that's not enclosed in parenthesis - don't know if that even exists in cmake --- .../edu/hm/hafner/analysis/parser/CMakeParserTest.java | 8 +++++++- .../resources/edu/hm/hafner/analysis/parser/cmake.txt | 5 ++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/test/java/edu/hm/hafner/analysis/parser/CMakeParserTest.java b/src/test/java/edu/hm/hafner/analysis/parser/CMakeParserTest.java index 8b1372a34..94d7b14fe 100644 --- a/src/test/java/edu/hm/hafner/analysis/parser/CMakeParserTest.java +++ b/src/test/java/edu/hm/hafner/analysis/parser/CMakeParserTest.java @@ -17,7 +17,7 @@ class CMakeParserTest extends AbstractParserTest { @Override protected void assertThatIssuesArePresent(final Report report, final SoftAssertions softly) { - softly.assertThat(report).hasSize(6); + softly.assertThat(report).hasSize(7); softly.assertThat(report.get(0)) .hasSeverity(Severity.WARNING_NORMAL) .hasCategory("") @@ -54,6 +54,12 @@ protected void assertThatIssuesArePresent(final Report report, final SoftAsserti .hasLineStart(23) .hasMessage("function foo is deprecated, use bar instead") .hasFileName("legacy.cmake"); + softly.assertThat(report.get(6)) + .hasSeverity(Severity.WARNING_NORMAL) + .hasCategory("nonexistingcategory") + .hasLineStart(357) + .hasMessage("strange things can happen") + .hasFileName("unlikely.cmake"); } @Override diff --git a/src/test/resources/edu/hm/hafner/analysis/parser/cmake.txt b/src/test/resources/edu/hm/hafner/analysis/parser/cmake.txt index 54b770953..2238364bd 100644 --- a/src/test/resources/edu/hm/hafner/analysis/parser/cmake.txt +++ b/src/test/resources/edu/hm/hafner/analysis/parser/cmake.txt @@ -14,4 +14,7 @@ CMake Error at error.cmake:2 (message): Uh oh !$%@! CMake Deprecation Warning at legacy.cmake:23 (message): - function foo is deprecated, use bar instead \ No newline at end of file + function foo is deprecated, use bar instead + +CMake Warning at unlikely.cmake:357 nonexistingcategory: + strange things can happen \ No newline at end of file From 817f77efdebdbfb042423b2d2056300cd036986d Mon Sep 17 00:00:00 2001 From: Uwe Brandt Date: Sat, 30 Mar 2019 14:25:34 +0100 Subject: [PATCH 11/11] add a test for warnings without message - don't know if that even exists in cmake --- .../edu/hm/hafner/analysis/parser/CMakeParserTest.java | 8 +++++++- .../resources/edu/hm/hafner/analysis/parser/cmake.txt | 4 +++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/test/java/edu/hm/hafner/analysis/parser/CMakeParserTest.java b/src/test/java/edu/hm/hafner/analysis/parser/CMakeParserTest.java index 94d7b14fe..6e197a7a2 100644 --- a/src/test/java/edu/hm/hafner/analysis/parser/CMakeParserTest.java +++ b/src/test/java/edu/hm/hafner/analysis/parser/CMakeParserTest.java @@ -17,7 +17,7 @@ class CMakeParserTest extends AbstractParserTest { @Override protected void assertThatIssuesArePresent(final Report report, final SoftAssertions softly) { - softly.assertThat(report).hasSize(7); + softly.assertThat(report).hasSize(8); softly.assertThat(report.get(0)) .hasSeverity(Severity.WARNING_NORMAL) .hasCategory("") @@ -60,6 +60,12 @@ protected void assertThatIssuesArePresent(final Report report, final SoftAsserti .hasLineStart(357) .hasMessage("strange things can happen") .hasFileName("unlikely.cmake"); + softly.assertThat(report.get(7)) + .hasSeverity(Severity.WARNING_NORMAL) + .hasCategory("message") + .hasLineStart(362) + .hasMessage("") + .hasFileName("unlikely.cmake"); } @Override diff --git a/src/test/resources/edu/hm/hafner/analysis/parser/cmake.txt b/src/test/resources/edu/hm/hafner/analysis/parser/cmake.txt index 2238364bd..08541e7f2 100644 --- a/src/test/resources/edu/hm/hafner/analysis/parser/cmake.txt +++ b/src/test/resources/edu/hm/hafner/analysis/parser/cmake.txt @@ -17,4 +17,6 @@ CMake Deprecation Warning at legacy.cmake:23 (message): function foo is deprecated, use bar instead CMake Warning at unlikely.cmake:357 nonexistingcategory: - strange things can happen \ No newline at end of file + strange things can happen + +CMake Warning at unlikely.cmake:362 (message): \ No newline at end of file