private static void setupFindBugsMessages() { try { final String findbugsMessagesXml = CharStreams.toString( new InputStreamReader( JvctbPerformer.class.getResourceAsStream("findbugs-messages.xml"), UTF_8)); setFindbugsMessagesXml(findbugsMessagesXml); } catch (final IOException e) { propagate(e); } } }
@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; }
@Override public List<Violation> parseReportOutput(String string) throws Exception { final List<Violation> violations = new ArrayList<>(); final Map<String, String> messagesPerType = getMessagesPerType(); try (InputStream input = new ByteArrayInputStream(string.getBytes("UTF-8"))) { final XMLInputFactory factory = XMLInputFactory.newInstance(); final XMLStreamReader xmlr = factory.createXMLStreamReader(input); while (xmlr.hasNext()) { final int eventType = xmlr.next(); if (eventType == XMLStreamConstants.START_ELEMENT) { if (xmlr.getLocalName().equalsIgnoreCase("BugInstance")) { parseBugInstance(xmlr, violations, messagesPerType); } } } } return violations; }
public List<Violation> findViolations(final List<File> includedFiles) { final List<Violation> violations = new ArrayList<>(); for (final File file : includedFiles) { try { final String string = Utils.toString(new FileInputStream(file)); violations.addAll(violationsParser.parseReportOutput(string)); } catch (final Throwable e) { LOG.log(SEVERE, "Error when parsing " + file.getAbsolutePath() + " as " + this.name(), e); } } return violations; }
@Override public List<Violation> parseReportOutput(String string) throws Exception { final List<Violation> violations = new ArrayList<>(); try (InputStream input = new ByteArrayInputStream(string.getBytes("UTF-8"))) { final XMLInputFactory factory = XMLInputFactory.newInstance(); final XMLStreamReader xmlr = factory.createXMLStreamReader(input); while (xmlr.hasNext()) { final int eventType = xmlr.next(); if (eventType == START_ELEMENT) { if (xmlr.getLocalName().equalsIgnoreCase("problem")) { violations.add(parseBug(xmlr)); } } } } 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() // ); }
@Override public List<Violation> parseReportOutput(String reportContent) throws Exception { final List<Violation> violations = new ArrayList<>(); final List<List<String>> partsPerLine = getLines(reportContent, "^\\[(warn|error)\\] (.*):(\\d+): (.*)$"); for (final List<String> parts : partsPerLine) { final String severity = parts.get(1); final String fileName = parts.get(2); final Integer lineNumber = parseInt(parts.get(3)); final String message = parts.get(4); violations.add( // violationBuilder() // .setParser(SBTSCALAC) // .setStartLine(lineNumber) // .setFile(fileName) // .setSeverity(toSeverity(severity)) // .setMessage(message) // .build() // ); } return violations; }
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(final String string) throws Exception { final List<Violation> violations = new ArrayList<>(); final List<List<String>> partsPerLine = getLines(string, "([^:]*):(\\d+): \\[(\\D)(\\d*)\\(([^\\]]*)\\), ([^\\]]*)] (.*)"); for (final List<String> parts : partsPerLine) { final String filename = parts.get(1); final Integer line = parseInt(parts.get(2)); final String severity = parts.get(3); final String ruleCode = parts.get(4); final String rule = parts.get(5); final String method = parts.get(6); final String message = parts.get(7); violations.add( // violationBuilder() // .setParser(PYLINT) // .setStartLine(line) // .setFile(filename) // .setRule(severity + ruleCode + "(" + rule + ")") // .setSeverity(toSeverity(severity)) // .setMessage(message) // .setSpecific("method", method) // .build() // ); } return violations; }
@Override public List<Violation> parseReportOutput(String reportContent) throws Exception { List<Violation> violations = new ArrayList<>(); List<List<String>> partsPerLine = getLines(reportContent, "^(.*):(\\d+): (.*): (.*)$"); for (List<String> parts : partsPerLine) { String fileName = parts.get(1); Integer lineNumber = 0; if (!parts.get(2).isEmpty()) { lineNumber = parseInt(parts.get(2)); } String severity = parts.get(3); String message = parts.get(4); violations.add( // violationBuilder() // .setParser(MYPY) // .setStartLine(lineNumber) // .setFile(fileName) // .setSeverity(toSeverity(severity)) // .setMessage(message) // .build() // ); } return violations; }
@Override public List<Violation> parseReportOutput(String string) throws Exception { List<Violation> violations = new ArrayList<>(); List<String> lines = getLines(string); for (String line : lines) { List<String> parts = getParts(line, "\\[([^\\]]*)\\]$", "\\[([^\\]]*)\\]$", "^([^:]*):", "^([^:]*):", "(.*)"); if (parts.isEmpty()) { continue; // Happens for the line "Done processing cpp/test.cpp" } Integer severity = parseInt(parts.get(0)); String rule = parts.get(1); String filename = parts.get(2); Integer lineNumber = parseInt(parts.get(3)); String message = parts.get(4); violations.add( // violationBuilder() // .setParser(CPPLINT) // .setStartLine(lineNumber) // .setFile(filename) // .setRule(rule) // .setSeverity(toSeverity(severity)) // .setMessage(message) // .build() // ); } return violations; }
@Override public List<Violation> parseReportOutput(String string) throws Exception { final List<Violation> violations = new ArrayList<>(); final List<String> files = getChunks(string, "<file", "</file>"); for (final String fileChunk : files) { final String filename = getAttribute(fileChunk, "name"); final List<String> errors = getChunks(fileChunk, "<error", "/>"); for (final String errorChunk : errors) { final Integer line = getIntegerAttribute(errorChunk, "line"); final Optional<Integer> column = findIntegerAttribute(errorChunk, "column"); final String severity = getAttribute(errorChunk, "severity"); final String message = getAttribute(errorChunk, "message"); final String rule = findAttribute(errorChunk, "source").orElse(null); violations.add( // violationBuilder() // .setParser(CHECKSTYLE) // .setStartLine(line) // .setColumn(column.orElse(null)) // .setFile(filename) // .setSeverity(toSeverity(severity)) // .setMessage(message) // .setRule(rule) // .build() // ); } } return violations; }
@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; }
@Override public List<Violation> parseReportOutput(String string) throws Exception { final List<Violation> violations = new ArrayList<>(); final Map<String, String> messagesPerType = getMessagesPerType(); try (InputStream input = new ByteArrayInputStream(string.getBytes("UTF-8"))) { final XMLInputFactory factory = XMLInputFactory.newInstance(); final XMLStreamReader xmlr = factory.createXMLStreamReader(input); while (xmlr.hasNext()) { final int eventType = xmlr.next(); if (eventType == XMLStreamConstants.START_ELEMENT) { if (xmlr.getLocalName().equalsIgnoreCase("BugInstance")) { parseBugInstance(xmlr, violations, messagesPerType); } } } } return violations; }
public List<Violation> findViolations(final List<File> includedFiles) { final List<Violation> violations = new ArrayList<>(); for (final File file : includedFiles) { try { final String string = Utils.toString(new FileInputStream(file)); violations.addAll(violationsParser.parseReportOutput(string)); } catch (final Throwable e) { LOG.log(SEVERE, "Error when parsing " + file.getAbsolutePath() + " as " + this.name(), e); } } return violations; }
@Override public List<Violation> parseReportOutput(String string) throws Exception { final List<Violation> violations = new ArrayList<>(); try (InputStream input = new ByteArrayInputStream(string.getBytes("UTF-8"))) { final XMLInputFactory factory = XMLInputFactory.newInstance(); final XMLStreamReader xmlr = factory.createXMLStreamReader(input); while (xmlr.hasNext()) { final int eventType = xmlr.next(); if (eventType == START_ELEMENT) { if (xmlr.getLocalName().equalsIgnoreCase("problem")) { violations.add(parseBug(xmlr)); } } } } 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() // ); }
@Override public List<Violation> parseReportOutput(String reportContent) throws Exception { final List<Violation> violations = new ArrayList<>(); final List<List<String>> partsPerLine = getLines(reportContent, "^\\[(warn|error)\\] (.*):(\\d+): (.*)$"); for (final List<String> parts : partsPerLine) { final String severity = parts.get(1); final String fileName = parts.get(2); final Integer lineNumber = parseInt(parts.get(3)); final String message = parts.get(4); violations.add( // violationBuilder() // .setParser(SBTSCALAC) // .setStartLine(lineNumber) // .setFile(fileName) // .setSeverity(toSeverity(severity)) // .setMessage(message) // .build() // ); } return violations; }
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(final String string) throws Exception { final List<Violation> violations = new ArrayList<>(); final List<List<String>> partsPerLine = getLines(string, "([^:]*):(\\d+): \\[(\\D)(\\d*)\\(([^\\]]*)\\), ([^\\]]*)] (.*)"); for (final List<String> parts : partsPerLine) { final String filename = parts.get(1); final Integer line = parseInt(parts.get(2)); final String severity = parts.get(3); final String ruleCode = parts.get(4); final String rule = parts.get(5); final String method = parts.get(6); final String message = parts.get(7); violations.add( // violationBuilder() // .setParser(PYLINT) // .setStartLine(line) // .setFile(filename) // .setRule(severity + ruleCode + "(" + rule + ")") // .setSeverity(toSeverity(severity)) // .setMessage(message) // .setSpecific("method", method) // .build() // ); } return violations; }