@Override public List<Violation> parseReportOutput(String string) throws Exception { List<Violation> violations = new ArrayList<>(); List<String> lines = getLines(string); Pattern misraPattern = Pattern.compile("\\[MISRA.*\\]"); for (String line : lines) { Matcher misraMatcher = misraPattern.matcher(line); if (misraMatcher.find()) { parseMisraViolation(line, violations); } else { parseGeneralViolation(line, violations); } } return violations; }
private void parseGeneralViolation(String line, List<Violation> violations) { List<String> parts = getParts( line, "^([^\\(]+)\\(", "^([\\d]+)\\): ", "^(Error|Warning|Info|Note) ", "^([\\d]+): ", "^(.*)$"); if (parts.isEmpty()) { return; } String filename = parts.get(0); Integer lineNumber = parseInt(parts.get(1)); SEVERITY severity = toSeverity(parts.get(2)); String rule = parts.get(3); String message = parts.get(4); violations.add( // violationBuilder() // .setParser(PCLINT) // .setStartLine(lineNumber) // .setFile(filename) // .setRule(rule) // .setSeverity(severity) // .setMessage(message) // .build() // ); }
private void parseMisraViolation(String line, List<Violation> violations) { List<String> parts = getParts( line, "^([^\\(]+)\\(", "^([\\d]+)\\): ", "^(?:Error|Warning|Info|Note) [\\d]+: ([^\\[]*)", "^\\[(.*),", "(mandatory|required|advisory)\\]", "^(.*)$"); if (parts.isEmpty()) { return; } String filename = parts.get(0); Integer lineNumber = parseInt(parts.get(1)); String severityString = parts.get(4); SEVERITY severity = toMisraSeverity(severityString); String rule = parts.get(3) + ", " + severityString; String message = parts.get(2) + " " + parts.get(5); violations.add( // violationBuilder() // .setParser(PCLINT) // .setStartLine(lineNumber) // .setFile(filename) // .setRule(rule) // .setSeverity(severity) // .setMessage(message) // .build() // ); }
private void parseGeneralViolation(String line, List<Violation> violations) { List<String> parts = getParts( line, "^([^\\(]+)\\(", "^([\\d]+)\\): ", "^(Error|Warning|Info|Note) ", "^([\\d]+): ", "^(.*)$"); if (parts.isEmpty()) { return; } String filename = parts.get(0); Integer lineNumber = parseInt(parts.get(1)); SEVERITY severity = toSeverity(parts.get(2)); String rule = parts.get(3); String message = parts.get(4); violations.add( // violationBuilder() // .setParser(PCLINT) // .setStartLine(lineNumber) // .setFile(filename) // .setRule(rule) // .setSeverity(severity) // .setMessage(message) // .build() // ); }
private void parseMisraViolation(String line, List<Violation> violations) { List<String> parts = getParts( line, "^([^\\(]+)\\(", "^([\\d]+)\\): ", "^(?:Error|Warning|Info|Note) [\\d]+: ([^\\[]*)", "^\\[(.*),", "(mandatory|required|advisory)\\]", "^(.*)$"); if (parts.isEmpty()) { return; } String filename = parts.get(0); Integer lineNumber = parseInt(parts.get(1)); String severityString = parts.get(4); SEVERITY severity = toMisraSeverity(severityString); String rule = parts.get(3) + ", " + severityString; String message = parts.get(2) + " " + parts.get(5); violations.add( // violationBuilder() // .setParser(PCLINT) // .setStartLine(lineNumber) // .setFile(filename) // .setRule(rule) // .setSeverity(severity) // .setMessage(message) // .build() // ); }
@Override public List<Violation> parseReportOutput(String string) throws Exception { List<Violation> violations = new ArrayList<>(); List<String> lines = getLines(string); Pattern misraPattern = Pattern.compile("\\[MISRA.*\\]"); for (String line : lines) { Matcher misraMatcher = misraPattern.matcher(line); if (misraMatcher.find()) { parseMisraViolation(line, violations); } else { parseGeneralViolation(line, violations); } } return violations; }