-
Notifications
You must be signed in to change notification settings - Fork 39
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
69e26e5
commit 91a9b89
Showing
12 changed files
with
295 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
58 changes: 58 additions & 0 deletions
58
src/main/java/se/bjurr/violations/lib/parsers/IARParser.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,58 @@ | ||
package se.bjurr.violations.lib.parsers; | ||
|
||
import static java.lang.Integer.parseInt; | ||
import static se.bjurr.violations.lib.model.SEVERITY.ERROR; | ||
import static se.bjurr.violations.lib.model.SEVERITY.INFO; | ||
import static se.bjurr.violations.lib.model.SEVERITY.WARN; | ||
import static se.bjurr.violations.lib.model.Violation.violationBuilder; | ||
import static se.bjurr.violations.lib.reports.Parser.IAR; | ||
import static se.bjurr.violations.lib.util.Utils.isNullOrEmpty; | ||
import static se.bjurr.violations.lib.util.ViolationParserUtils.getLines; | ||
|
||
import java.util.ArrayList; | ||
import java.util.List; | ||
import se.bjurr.violations.lib.model.SEVERITY; | ||
import se.bjurr.violations.lib.model.Violation; | ||
|
||
public class IARParser implements ViolationsParser { | ||
|
||
@Override | ||
public List<Violation> parseReportOutput(final String reportContent) throws Exception { | ||
final List<Violation> violations = new ArrayList<>(); | ||
final List<List<String>> partsPerLine = | ||
getLines(reportContent, "\"([^\"]+)\",(\\d+)([^\\[]*)\\[([^\\]]*)\\]:(.*)"); | ||
for (final List<String> parts : partsPerLine) { | ||
final String fileName = parts.get(1).trim(); | ||
final Integer lineNumber = parseInt(parts.get(2)); | ||
final Integer columnNumber = 0; | ||
final String severity = parts.get(3).toLowerCase().trim(); | ||
final String rule = parts.get(4).trim(); | ||
final String message = parts.get(5).trim(); | ||
violations.add( // | ||
violationBuilder() // | ||
.setParser(IAR) // | ||
.setStartLine(lineNumber) // | ||
.setColumn(columnNumber) // | ||
.setFile(fileName) // | ||
.setSeverity(toSeverity(severity)) // | ||
.setRule(rule) // | ||
.setMessage(message) // | ||
.build() // | ||
); | ||
} | ||
return violations; | ||
} | ||
|
||
public SEVERITY toSeverity(final String severity) { | ||
if (isNullOrEmpty(severity) || severity.contains("info")) { | ||
return INFO; | ||
} | ||
if (severity.contains("error")) { | ||
return ERROR; | ||
} | ||
if (severity.contains("warning")) { | ||
return WARN; | ||
} | ||
return INFO; | ||
} | ||
} |
58 changes: 58 additions & 0 deletions
58
src/main/java/se/bjurr/violations/lib/parsers/MSCPPParser.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,58 @@ | ||
package se.bjurr.violations.lib.parsers; | ||
|
||
import static java.lang.Integer.parseInt; | ||
import static se.bjurr.violations.lib.model.SEVERITY.ERROR; | ||
import static se.bjurr.violations.lib.model.SEVERITY.INFO; | ||
import static se.bjurr.violations.lib.model.SEVERITY.WARN; | ||
import static se.bjurr.violations.lib.model.Violation.violationBuilder; | ||
import static se.bjurr.violations.lib.reports.Parser.MSCPP; | ||
import static se.bjurr.violations.lib.util.Utils.isNullOrEmpty; | ||
import static se.bjurr.violations.lib.util.ViolationParserUtils.getLines; | ||
|
||
import java.util.ArrayList; | ||
import java.util.List; | ||
import se.bjurr.violations.lib.model.SEVERITY; | ||
import se.bjurr.violations.lib.model.Violation; | ||
|
||
public class MSCPPParser implements ViolationsParser { | ||
|
||
@Override | ||
public List<Violation> parseReportOutput(final String reportContent) throws Exception { | ||
final List<Violation> violations = new ArrayList<>(); | ||
final List<List<String>> partsPerLine = | ||
getLines(reportContent, "(.*)\\((\\d+)\\):\\s*([a-zA-Z]+)([^:]*):(.*)"); | ||
for (final List<String> parts : partsPerLine) { | ||
final String fileName = parts.get(1).trim(); | ||
final Integer lineNumber = parseInt(parts.get(2)); | ||
final Integer columnNumber = 0; | ||
final String severity = parts.get(3).toLowerCase().trim(); | ||
final String rule = parts.get(4).trim(); | ||
final String message = parts.get(5).trim(); | ||
violations.add( // | ||
violationBuilder() // | ||
.setParser(MSCPP) // | ||
.setStartLine(lineNumber) // | ||
.setColumn(columnNumber) // | ||
.setFile(fileName) // | ||
.setSeverity(toSeverity(severity)) // | ||
.setRule(rule) // | ||
.setMessage(message) // | ||
.build() // | ||
); | ||
} | ||
return violations; | ||
} | ||
|
||
public SEVERITY toSeverity(final String severity) { | ||
if (isNullOrEmpty(severity) || severity.contains("info")) { | ||
return INFO; | ||
} | ||
if (severity.contains("error")) { | ||
return ERROR; | ||
} | ||
if (severity.contains("warning")) { | ||
return WARN; | ||
} | ||
return INFO; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,62 @@ | ||
package se.bjurr.violations.lib; | ||
|
||
import static org.assertj.core.api.Assertions.assertThat; | ||
import static se.bjurr.violations.lib.TestUtils.getRootFolder; | ||
import static se.bjurr.violations.lib.ViolationsApi.violationsApi; | ||
import static se.bjurr.violations.lib.reports.Parser.IAR; | ||
|
||
import java.util.List; | ||
import org.junit.Test; | ||
import se.bjurr.violations.lib.model.SEVERITY; | ||
import se.bjurr.violations.lib.model.Violation; | ||
|
||
public class IARTest { | ||
|
||
@Test | ||
public void testThatViolationsCanBeParsed() { | ||
final String rootFolder = getRootFolder(); | ||
|
||
final List<Violation> actual = | ||
violationsApi() // | ||
.withPattern(".*/iar/example\\.txt$") // | ||
.inFolder(rootFolder) // | ||
.findAll(IAR) // | ||
.violations(); | ||
|
||
assertThat(actual) // | ||
.hasSize(7); | ||
|
||
final Violation violation0 = actual.get(0); | ||
assertThat(violation0.getFile()) // | ||
.isEqualTo( | ||
"c:/jenkins/workspace/24-Test-Jenkins-WinTen-Extension/external/specific/cpp/iar_cxxabi.cpp"); | ||
assertThat(violation0.getMessage()) // | ||
.isEqualTo("expression must be a pointer to a complete object type"); | ||
assertThat(violation0.getStartLine()) // | ||
.isEqualTo(432); | ||
assertThat(violation0.getSeverity()) // | ||
.isEqualTo(SEVERITY.WARN); | ||
assertThat(violation0.getRule()) // | ||
.isEqualTo("Pe852"); | ||
|
||
final Violation violation3 = actual.get(3); | ||
assertThat(violation3.getFile()) // | ||
.isEqualTo("C:/Repositories/source/dal/InterMcu/InterMcuTransport.cpp"); | ||
assertThat(violation3.getMessage()) // | ||
.isEqualTo("expected a \")\""); | ||
assertThat(violation3.getSeverity()) // | ||
.isEqualTo(SEVERITY.ERROR); | ||
assertThat(violation3.getRule()) // | ||
.isEqualTo("Pe018"); | ||
|
||
final Violation violation6 = actual.get(6); | ||
assertThat(violation6.getFile()) // | ||
.isEqualTo("source/dal/InterMcu/InterMcuTransport.cpp"); | ||
assertThat(violation6.getMessage()) // | ||
.isEqualTo("expected a \")\""); | ||
assertThat(violation3.getSeverity()) // | ||
.isEqualTo(SEVERITY.ERROR); | ||
assertThat(violation3.getRule()) // | ||
.isEqualTo("Pe018"); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,66 @@ | ||
package se.bjurr.violations.lib; | ||
|
||
import static org.assertj.core.api.Assertions.assertThat; | ||
import static se.bjurr.violations.lib.TestUtils.getRootFolder; | ||
import static se.bjurr.violations.lib.ViolationsApi.violationsApi; | ||
import static se.bjurr.violations.lib.reports.Parser.MSCPP; | ||
|
||
import java.util.List; | ||
import org.junit.Test; | ||
import se.bjurr.violations.lib.model.SEVERITY; | ||
import se.bjurr.violations.lib.model.Violation; | ||
|
||
public class MSCPPTest { | ||
|
||
@Test | ||
public void testThatViolationsCanBeParsed() { | ||
final String rootFolder = getRootFolder(); | ||
|
||
final List<Violation> actual = | ||
violationsApi() // | ||
.withPattern(".*/mscpp/example\\.txt$") // | ||
.inFolder(rootFolder) // | ||
.findAll(MSCPP) // | ||
.violations(); | ||
|
||
assertThat(actual) // | ||
.hasSize(5); | ||
|
||
final Violation violation0 = actual.get(0); | ||
assertThat(violation0.getFile()) // | ||
.isEqualTo("../../source/gui/controls/DebugPrint.cpp"); | ||
assertThat(violation0.getMessage()) // | ||
.isEqualTo("\"Typumwandlung\": Zeigerverkrzung von \"void *\" zu \"long\""); | ||
assertThat(violation0.getStartLine()) // | ||
.isEqualTo(30); | ||
assertThat(violation0.getSeverity()) // | ||
.isEqualTo(SEVERITY.WARN); | ||
assertThat(violation0.getRule()) // | ||
.isEqualTo("C4311"); | ||
|
||
final Violation violation1 = actual.get(1); | ||
assertThat(violation1.getFile()) // | ||
.isEqualTo("../dummies/osal/own_os/threading/Mutex.cpp"); | ||
assertThat(violation1.getMessage()) // | ||
.isEqualTo("\"foobar\": nichtdeklarierter Bezeichner"); | ||
assertThat(violation1.getStartLine()) // | ||
.isEqualTo(14); | ||
assertThat(violation1.getSeverity()) // | ||
.isEqualTo(SEVERITY.ERROR); | ||
assertThat(violation1.getRule()) // | ||
.isEqualTo("C2065"); | ||
|
||
final Violation violation4 = actual.get(4); | ||
assertThat(violation4.getFile()) // | ||
.isEqualTo("C:/Repositories/P2/source/gui/controls/Keyboard/GridKeyboard.h"); | ||
assertThat(violation4.getMessage()) // | ||
.isEqualTo( | ||
"Bei der Kompilierung von Klasse Vorlage der pfm::GridKeyboard<3,4>::GridKeyboard(PEGUINT,PEGUINT)-Memberfunktion"); | ||
assertThat(violation4.getStartLine()) // | ||
.isEqualTo(38); | ||
assertThat(violation4.getSeverity()) // | ||
.isEqualTo(SEVERITY.INFO); | ||
assertThat(violation4.getRule()) // | ||
.isEqualTo(""); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
"c:\jenkins\workspace\24-Test-Jenkins-WinTen-Extension\external\specific\cpp\iar_cxxabi.cpp",432 Warning[Pe852]: expression must be a pointer to a complete object type | ||
|
||
"C:\Repositories\external\specific\wiced\WICED\security\BESL\host\WICED\wiced_p2p.c",81 Warning[Pe549]: variable "result" is used before its value is set | ||
"C:\Repositories\external\specific\wiced\WICED\platform\MCU\RTOS_STM32F4xx\platform_dct_external.c",412 Warning[Pe223]: function "memcpy" declared implicitly | ||
"C:\Repositories\source\dal\InterMcu\InterMcuTransport.cpp",633 Error[Pe018]: expected a ")" | ||
|
||
"external/specific/wiced/WICED/security/BESL/host/WICED/wiced_p2p.c",81 Warning[Pe549]: variable "result" is used before its value is set | ||
"external/specific/wiced/WICED/platform/MCU/RTOS_STM32F4xx/platform_dct_external.c",412 Warning[Pe223]: function "memcpy" declared implicitly | ||
"source/dal/InterMcu/InterMcuTransport.cpp",633 Error[Pe018]: expected a ")" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
../../source/gui/controls/DebugPrint.cpp(30): warning C4311: "Typumwandlung": Zeigerverkrzung von "void *" zu "long" | ||
|
||
../dummies/osal/own_os/threading/Mutex.cpp(14): error C2065: "foobar": nichtdeklarierter Bezeichner | ||
../dummies/osal/own_os/threading/Mutex.cpp(15): error C2143: Syntaxfehler: Es fehlt ";" vor "}" | ||
../../source/gui/controls/Keyboard/AlphabetKeyboard.cpp(157): warning C4267: "=": Konvertierung von "size_t" nach "PEGSHORT", Datenverlust m”glich | ||
C:\Repositories\P2\source\gui/controls/Keyboard/GridKeyboard.h(38): note: Bei der Kompilierung von Klasse Vorlage der pfm::GridKeyboard<3,4>::GridKeyboard(PEGUINT,PEGUINT)-Memberfunktion |