@Override public List<Violation> parseReportOutput(final String string) throws Exception { List<Violation> violations = new ArrayList<>(); List<List<String>> partsPerLine = getLines(string, "(w|e):([^:]*)[^\\d]+?(\\d+?)[^\\d]+?(\\d+?)[^:]+?:(.*)"); for (List<String> parts : partsPerLine) { String severity = parts.get(1).trim(); String filename = parts.get(2).trim(); Integer line = parseInt(parts.get(3)); Integer column = parseInt(parts.get(4)); String message = parts.get(5).trim(); violations.add( // violationBuilder() // .setParser(KOTLINGRADLE) // .setStartLine(line) // .setColumn(column) // .setFile(filename) // .setSeverity(toSeverity(severity)) // .setMessage(message) // .build() // ); } return violations; }
@Override public List<Violation> parseReportOutput(final String string) throws Exception { List<Violation> violations = new ArrayList<>(); List<List<String>> partsPerLine = getLines( string, "\\[(ERROR|WARNING)\\]([^:]*)[^\\d]+?(\\d+?)[^\\d]+?(\\d+?)[^\\)]+?\\)(.*)"); for (List<String> parts : partsPerLine) { String severity = parts.get(1).trim(); String filename = parts.get(2).trim(); Integer line = parseInt(parts.get(3)); Integer column = parseInt(parts.get(4)); String message = parts.get(5).trim(); violations.add( // violationBuilder() // .setParser(KOTLINMAVEN) // .setStartLine(line) // .setColumn(column) // .setFile(filename) // .setSeverity(toSeverity(severity)) // .setMessage(message) // .build() // ); } return violations; }
@Override public List<Violation> parseReportOutput(final String string) throws Exception { List<Violation> violations = new ArrayList<>(); List<List<String>> partsPerLine = getLines(string, "(w|e):([^:]*)[^\\d]+?(\\d+?)[^\\d]+?(\\d+?)[^:]+?:(.*)"); for (List<String> parts : partsPerLine) { String severity = parts.get(1).trim(); String filename = parts.get(2).trim(); Integer line = parseInt(parts.get(3)); Integer column = parseInt(parts.get(4)); String message = parts.get(5).trim(); violations.add( // violationBuilder() // .setParser(KOTLINGRADLE) // .setStartLine(line) // .setColumn(column) // .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(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; }
@Override public List<Violation> parseReportOutput(String string) throws Exception { List<Violation> violations = new ArrayList<>(); List<String> files = getChunks(string, "<file", "</file>"); for (String fileChunk : files) { String filename = getAttribute(fileChunk, "name"); List<String> issues = getChunks(fileChunk, "<issue", "/>"); for (String issueChunk : issues) { Integer line = findIntegerAttribute(issueChunk, "line").orElse(1); Optional<Integer> charAttrib = findIntegerAttribute(issueChunk, "char"); String severity = getAttribute(issueChunk, "severity"); String message = getAttribute(issueChunk, "reason"); String evidence = findAttribute(issueChunk, "evidence").orElse("").trim(); violations.add( // violationBuilder() // .setParser(CSSLINT) // .setStartLine(line) // .setColumn(charAttrib.orElse(null)) // .setFile(filename) // .setSeverity(toSeverity(severity)) // .setMessage(message + ": " + evidence) // .build() // ); } } return violations; }
@Override public List<Violation> parseReportOutput(String string) throws Exception { List<Violation> violations = new ArrayList<>(); for (List<String> parts : getLines(string, "[ ]+Error in: (.*) (.*) , at line (\\d+).*")) { if (parts.size() < 3) { continue; } Integer lineInFile = Integer.parseInt(parts.get(3)); String message = parts.get(2); String fileName = parts.get(1); Violation violation = violationBuilder() // .setParser(ZPTLINT) // .setFile(fileName) // .setMessage(message) // .setRule("ZPT") // .setSeverity(ERROR) // .setStartLine(lineInFile) // .build(); violations.add(violation); } return violations; } }
@Override public List<Violation> parseReportOutput(String string) throws Exception { List<Violation> violations = new ArrayList<>(); List<List<String>> partsPerLine = getLines(string, "([^:]*):(\\d+)?:?(\\d)?:? \\[?(\\D+)(\\d*)\\]? (.*)"); for (List<String> parts : partsPerLine) { String filename = parts.get(1); Integer line = parseInt(parts.get(2)); Integer column = null; if (!isNullOrEmpty(parts.get(3))) { column = parseInt(parts.get(3)); } String severity = parts.get(4); String rule = parts.get(5); String message = parts.get(6); violations.add( // violationBuilder() // .setParser(FLAKE8) // .setStartLine(line) // .setColumn(column) // .setFile(filename) // .setRule(severity + rule) // .setSeverity(toSeverity(severity.substring(0, 1))) // .setMessage(message) // .build() // ); } return violations; }
@Override public List<Violation> parseReportOutput(String string) throws Exception { List<Violation> violations = new ArrayList<>(); List<String> files = getChunks(string, "<file", "</file>"); for (String fileChunk : files) { String filename = getAttribute(fileChunk, "name"); List<String> issues = getChunks(fileChunk, "<issue", "/>"); for (String issueChunk : issues) { Integer line = getIntegerAttribute(issueChunk, "line"); Optional<Integer> charAttrib = findIntegerAttribute(issueChunk, "char"); String severity = getAttribute(issueChunk, "severity"); String message = getAttribute(issueChunk, "reason"); String evidence = getAttribute(issueChunk, "evidence").trim(); violations.add( // violationBuilder() // .setParser(LINT) // .setStartLine(line) // .setColumn(charAttrib.orElse(null)) // .setFile(filename) // .setSeverity(toSeverity(severity)) // .setMessage(message + ": " + evidence) // .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 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<>(); for (List<String> parts : getLines(string, "[ ]+Error in: (.*) (.*) , at line (\\d+).*")) { if (parts.size() < 3) { continue; } Integer lineInFile = Integer.parseInt(parts.get(3)); String message = parts.get(2); String fileName = parts.get(1); Violation violation = violationBuilder() // .setParser(ZPTLINT) // .setFile(fileName) // .setMessage(message) // .setRule("ZPT") // .setSeverity(ERROR) // .setStartLine(lineInFile) // .build(); violations.add(violation); } return violations; } }
@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; }
@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; }
@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; }
@Test public void testFilteringERROR() { List<Violation> unfiltered = newArrayList( // violationBuilder() // .setFile("file") // .setStartLine(2) // .setMessage("message") // .setParser(CHECKSTYLE) // .setSeverity(ERROR) // .build() // ); assertThat(Filtering.withAtLEastSeverity(unfiltered, ERROR)) // .hasSize(1); assertThat(Filtering.withAtLEastSeverity(unfiltered, WARN)) // .hasSize(1); assertThat(Filtering.withAtLEastSeverity(unfiltered, INFO)) // .hasSize(1); } }
@Test public void testFilteringINFO() { List<Violation> unfiltered = newArrayList( // violationBuilder() // .setFile("file") // .setStartLine(2) // .setMessage("message") // .setParser(CHECKSTYLE) // .setSeverity(INFO) // .build() // ); assertThat(Filtering.withAtLEastSeverity(unfiltered, ERROR)) // .hasSize(0); assertThat(Filtering.withAtLEastSeverity(unfiltered, WARN)) // .hasSize(0); assertThat(Filtering.withAtLEastSeverity(unfiltered, INFO)) // .hasSize(1); }
@Test public void testFilteringWARN() { List<Violation> unfiltered = newArrayList( // violationBuilder() // .setFile("file") // .setStartLine(2) // .setMessage("message") // .setParser(CHECKSTYLE) // .setSeverity(WARN) // .build() // ); assertThat(Filtering.withAtLEastSeverity(unfiltered, ERROR)) // .hasSize(0); assertThat(Filtering.withAtLEastSeverity(unfiltered, WARN)) // .hasSize(1); assertThat(Filtering.withAtLEastSeverity(unfiltered, INFO)) // .hasSize(1); }
@Test public void testThatFilePathsAreAlwaysFronSlashes() { final Violation violation = violationBuilder() // .setParser(CHECKSTYLE) // .setFile("c:\\path\\to\\file.xml") // .setMessage("message") // .setSeverity(ERROR) // .setStartLine(1) // .build(); assertThat(violation.getFile()) // .isEqualTo("c:/path/to/file.xml"); }
@Test public void testThatCopyConstructorWorks() { final ViolationBuilder originalBuilder = new PodamFactoryImpl().manufacturePojo(ViolationBuilder.class); final Violation original = originalBuilder.build(); final Violation copied = new Violation(original); assertThat(copied) // .isEqualTo(original); } }