@Override public int compare(Violation o1, Violation o2) { return Integer.compare(o1.getSeverity().ordinal(), o2.getSeverity().ordinal()); } });
public static List<Violation> withAtLEastSeverity( List<Violation> unfiltered, final SEVERITY severity) { List<Violation> filtered = new ArrayList<>(); for (Violation candidate : unfiltered) { if (isSeverer(candidate.getSeverity(), severity)) { filtered.add(candidate); } } return filtered; }
public static List<Violation> withAtLEastSeverity( List<Violation> unfiltered, final SEVERITY severity) { List<Violation> filtered = new ArrayList<>(); for (Violation candidate : unfiltered) { if (isSeverer(candidate.getSeverity(), severity)) { filtered.add(candidate); } } return filtered; }
@Override public int compare(Violation o1, Violation o2) { return Integer.compare(o1.getSeverity().ordinal(), o2.getSeverity().ordinal()); } });
private Map<SEVERITY, Set<Violation>> getViolationsPerSeverity(final Set<Violation> violations) { final Map<SEVERITY, Set<Violation>> violationsPerSeverity = new TreeMap<>(); for (final SEVERITY severity : SEVERITY.values()) { violationsPerSeverity.put(severity, new TreeSet<Violation>()); } for (final Violation violation : violations) { final Set<Violation> perReporter = getOrCreate(violationsPerSeverity, violation.getSeverity()); perReporter.add(violation); } return violationsPerSeverity; }
private StringBuilder toDetailed( final Iterable<Violation> violations, final String summarySubject) { final StringBuilder sb = new StringBuilder(); final List<String[]> rows = new ArrayList<>(); for (final Violation violation : violations) { final String message = addNewlines(violation.getMessage(), maxMessageColumnWidth); final String line = addNewlines(violation.getStartLine().toString(), maxLineColumnWidth); final String severity = addNewlines(violation.getSeverity().name(), maxSeverityColumnWidth); final String rule = addNewlines(violation.getRule(), maxRuleColumnWidth); final String reporter = addNewlines(violation.getReporter(), maxReporterColumnWidth); final String[] row = {reporter, rule, severity, line, message}; rows.add(row); } final String[] headers = {"Reporter", "Rule", "Severity", "Line", "Message"}; final String[][] data = rows.toArray(new String[][] {}); sb.append(FlipTable.of(headers, data)); sb.append("\n"); sb.append(toCompact(violations, summarySubject)); sb.append("\n"); return sb; }
@Test public void testThatSeverityAndRulenumberFromMisraTakesPrecedence() { final String rootFolder = getRootFolder(); final List<Violation> actual = violationsApi() // .withPattern(".*/pclint/.*\\.txt$") // .inFolder(rootFolder) // .findAll(PCLINT) // .violations(); Violation violation = actual.get(1); assertThat(violation.getRule()).isEqualTo("MISRA 2012 Rule 10.4, mandatory"); assertThat(violation.getSeverity()).isEqualTo(ERROR); violation = actual.get(2); assertThat(violation.getRule()).isEqualTo("MISRA 2012 Rule 1.3, required"); assertThat(violation.getSeverity()).isEqualTo(WARN); violation = actual.get(7); assertThat(violation.getRule()).isEqualTo("MISRA 2012 Rule 10.1, advisory"); assertThat(violation.getSeverity()).isEqualTo(INFO); assertThat(violation.getMessage()) .isEqualTo("Bad type (Error <a href=\"/userContent/LintMsgRef.html#48\">48</a>)"); } }
@Test public void testThatRubycopViolationsCanBeParsed() { final String rootFolder = getRootFolder(); final List<Violation> actual = violationsApi() // .withPattern(".*/clang/rubycop\\.txt$") // .inFolder(rootFolder) // .findAll(CLANG) // .violations(); assertThat(actual) // .hasSize(4); final Violation violation0 = actual.get(0); assertThat(violation0.getMessage()) // .isEqualTo("Use snake_case for method names."); assertThat(violation0.getFile()) // .isEqualTo("test.rb"); assertThat(violation0.getSeverity()) // .isEqualTo(ERROR); assertThat(violation0.getRule()) // .isEqualTo(""); assertThat(violation0.getStartLine()) // .isEqualTo(1); assertThat(actual.get(3).getSeverity()) // .isEqualTo(WARN); } }
@Test public void testThatViolationsCanBeParsed() { String rootFolder = getRootFolder(); List<Violation> actual = violationsApi() // .withPattern(".*/pitest/.*\\.xml$") // .inFolder(rootFolder) // .findAll(PITEST) // .violations(); assertThat(actual) // .hasSize(25); assertThat(actual.get(0).getFile()) // .isEqualTo("se/bjurr/violations/lib/example/CopyOfMyClass.java"); assertThat(actual.get(0).getMessage()) // .isEqualTo( "NO_COVERAGE, org.pitest.mutationtest.engine.gregor.mutators.ReturnValsMutator, (Ljava/lang/Object;)Z"); assertThat(actual.get(0).getStartLine()) // .isEqualTo(17); assertThat(actual.get(0).getEndLine()) // .isEqualTo(17); assertThat(actual.get(0).getSeverity()) // .isEqualTo(WARN); } }
@Test public void testThatGoVetViolationsCanBeParsed() { final String rootFolder = getRootFolder(); final List<Violation> actual = violationsApi() // .withPattern(".*/golint/govet\\.txt$") // .inFolder(rootFolder) // .findAll(GOLINT) // .violations(); assertThat(actual) // .hasSize(1); assertThat(actual.get(0).getMessage()) // .isEqualTo("this is a message"); assertThat(actual.get(0).getFile()) // .isEqualTo("my_file.go"); assertThat(actual.get(0).getSeverity()) // .isEqualTo(INFO); assertThat(actual.get(0).getStartLine()) // .isEqualTo(46); } }
assertThat(actual.get(0).getFile()) // .isEqualTo("c:/java/foo1.java"); assertThat(actual.get(0).getSeverity()) // .isEqualTo(INFO); assertThat(actual.get(0).getRule()) //
@Test public void testThatViolationsCanBeParsed() { final String rootFolder = getRootFolder(); final List<Violation> actual = violationsApi() // .withPattern(".*/pylint/.*\\.txt$") // .inFolder(rootFolder) // .findAll(PYLINT) // .violations(); assertThat(actual) // .hasSize(136); Violation violation = actual.get(0); assertThat(violation.getFile()) // .isEqualTo("marshmallow/schema.py"); assertThat(violation.getStartLine()) // .isEqualTo(190); assertThat(violation.getMessage()) // .isEqualTo("Wrong continued indentation (add 1 space)."); assertThat(violation.getSeverity()) // .isEqualTo(INFO); assertThat(violation.getRule()) // .isEqualTo("C0330(bad-continuation)"); } }
@Test public void testThatViolationsCanBeParsed() { final String rootFolder = getRootFolder(); final List<Violation> actual = violationsApi() // .withPattern(".*/doxygen/output.*\\.txt$") // .inFolder(rootFolder) // .findAll(CLANG) // .violations(); assertThat(actual) // .hasSize(3); final Violation violation0 = actual.get(0); assertThat(violation0.getMessage()) // .isEqualTo( "argument 'index' of command @param is not found in the argument list of arm_min_q7(q7_t *pSrc, uint32_t blockSize, q7_t *pResult, uint32_t *pIndex)"); assertThat(violation0.getFile()) // .isEqualTo("./pump/external/specific/arm/cmsis_dsp/StatisticsFunctions/arm_min_q7.c"); assertThat(violation0.getSeverity()) // .isEqualTo(WARN); assertThat(violation0.getRule()) // .isEqualTo(""); assertThat(violation0.getStartLine()) // .isEqualTo(48); } }
@Test public void testThatViolationsCanBeParsed() { final String rootFolder = getRootFolder(); final List<Violation> actual = violationsApi() // .withPattern(".*/kotlinmaven/.*\\.txt") // .inFolder(rootFolder) // .findAll(KOTLINMAVEN) // .violations(); assertThat(actual) // .hasSize(29); final Violation violation0 = actual.get(0); assertThat(violation0.getMessage()) // .isEqualTo("Unchecked cast: AssetDao<*> to DaoOperations.Read<T, UUID>"); assertThat(violation0.getFile()) // .isEqualTo( "/home/bjerre/workspace/kerub/src/main/kotlin/com/github/kerubistan/kerub/data/hub/AnyAssetDaoImpl.kt"); assertThat(violation0.getSeverity()) // .isEqualTo(WARN); assertThat(violation0.getRule()) // .isEqualTo(""); assertThat(violation0.getParser()) // .isEqualTo(KOTLINMAVEN); } }
@Test public void testThatViolationsCanBeParsed() { String rootFolder = getRootFolder(); List<Violation> actual = violationsApi() // .withPattern(".*/jshint/.*\\.xml$") // .inFolder(rootFolder) // .findAll(JSHINT) // .violations(); assertThat(actual) // .hasSize(6); assertThat(actual.get(0).getFile()) // .isEqualTo("../../../web/js-file.js"); assertThat(actual.get(0).getMessage()) // .startsWith("Use") // .doesNotContain("CDATA"); assertThat(actual.get(0).getStartLine()) // .isEqualTo(4); assertThat(actual.get(0).getEndLine()) // .isEqualTo(4); assertThat(actual.get(0).getSeverity()) // .isEqualTo(WARN); } }
@Test public void testThatViolationsCanBeParsed2() { final String rootFolder = getRootFolder(); final List<Violation> actual = violationsApi() // .withPattern(".*cpplint-result\\.xml$") // .inFolder(rootFolder) // .findAll(CPPLINT) // .violations(); assertThat(actual) // .hasSize(1); final Violation violation = actual.get(0); assertThat(violation.getMessage()) // .isEqualTo("Using C-style cast. Use reinterpret_cast<uint8_t *>(...) instead"); assertThat(violation.getFile()) // .isEqualTo("pump/src/hal/stm32f4xx/devices/spi/spi_unit0_com.c"); assertThat(violation.getSeverity()) // .isEqualTo(WARN); assertThat(violation.getRule()) // .isEqualTo("readability/casting"); assertThat(violation.getStartLine()) // .isEqualTo(737); assertThat(violation.getEndLine()) // .isEqualTo(737); } }
@Test public void testThatViolationsCanBeParsed() { final String rootFolder = getRootFolder(); final List<Violation> actual = violationsApi() // .withPattern(".*/arm-gcc/output.*\\.txt$") // .inFolder(rootFolder) // .findAll(CLANG) // .violations(); assertThat(actual) // .hasSize(4); final Violation violation0 = actual.get(0); assertThat(violation0.getMessage()) // .isEqualTo("comparison between signed and unsigned integer expressions [-Wsign-compare]"); assertThat(violation0.getFile()) // .isEqualTo("../../external/specific/arm/cmsis/arm_math.h"); assertThat(violation0.getSeverity()) // .isEqualTo(WARN); assertThat(violation0.getRule()) // .isEqualTo(""); assertThat(violation0.getStartLine()) // .isEqualTo(5774); } }
@Test public void testThatViolationsCanBeParsedMaven() { final String rootFolder = getRootFolder(); final List<Violation> actual = violationsApi() // .withPattern(".*/googleErrorProne/googleErrorProneMaven\\.log$") // .inFolder(rootFolder) // .findAll(GOOGLEERRORPRONE) // .violations(); assertThat(actual) // .hasSize(1); final Violation violation0 = actual.get(0); assertThat(violation0.getMessage()) // .endsWith("row new Exception();'?"); assertThat(violation0.getFile()) // .isEqualTo("../examples/maven/error_prone_should_flag/src/main/java/Main.java"); assertThat(violation0.getSeverity()) // .isEqualTo(ERROR); assertThat(violation0.getRule()) // .isEqualTo("DeadException"); assertThat(violation0.getStartLine()) // .isEqualTo(20); }
@Test public void testThatViolationsCanBeParsedGradleNullAway() { final String rootFolder = getRootFolder(); final List<Violation> actual = violationsApi() // .withPattern(".*/googleErrorProne/nullAway\\.log$") // .inFolder(rootFolder) // .findAll(GOOGLEERRORPRONE) // .violations(); assertThat(actual) // .hasSize(2); final Violation violation0 = actual.get(0); assertThat(violation0.getMessage()) // .endsWith("nullaway )"); assertThat(violation0.getFile()) // .isEqualTo( "home/travis/build/leinardi/FloatingActionButtonSpeedDial/library/src/main/java/com/leinardi/android/speeddial/SpeedDialActionItem.java"); assertThat(violation0.getSeverity()) // .isEqualTo(ERROR); assertThat(violation0.getRule()) // .isEqualTo("NullAway"); assertThat(violation0.getStartLine()) // .isEqualTo(162); } }
@Test public void testThatViolationsCanBeParsedCsvDelta() { final String rootFolder = getRootFolder(); final List<Violation> actual = violationsApi() // .withPattern(".*/pmd/csv-delta\\.xml$") // .inFolder(rootFolder) // .findAll(PMD) // .violations(); assertThat(actual) // .hasSize(5); final Violation violationZero = actual.get(0); assertThat(violationZero.getFile()) // .isEqualTo("src/CustomTableClass.java"); assertThat(violationZero.getMessage()) // .startsWith("Description") // .doesNotContain("CDATA"); assertThat(violationZero.getStartLine()) // .isEqualTo(1); assertThat(violationZero.getEndLine()) // .isEqualTo(1); assertThat(violationZero.getRule()) // .isEqualTo("RULE1"); assertThat(violationZero.getSeverity()) // .isEqualTo(WARN); }