private String comparingString(final Violation o) { return o.file + "_" + (Integer.MAX_VALUE - o.getStartLine()) + "_" + o.getParser() + "_" + o.getMessage(); } }
private String comparingString(final Violation o) { return o.file + "_" + (Integer.MAX_VALUE - o.getStartLine()) + "_" + o.getParser() + "_" + o.getMessage(); } }
public List<Violation> getViolationsInChangeset( final File file, final String from, final String to) throws Exception { final DiffsPerFile diffs = ViolationsGitRepo.diff(file, from, to); final List<Violation> filtered = new ArrayList<>(); for (final Violation candidate : violations) { final Optional<String> patchStringOpt = diffs.findPatchString(candidate.getFile()); if (patchStringOpt.isPresent()) { final String patchString = patchStringOpt.get(); final Integer violatedLine = candidate.getStartLine(); final Optional<Integer> lineOpt = PatchParser.findLineInDiff(patchString, violatedLine); if (lineOpt.isPresent()) { filtered.add(candidate); } } } return filtered; } }
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 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).getRule()) // .isEqualTo("ZPT"); assertThat(actual.get(0).getStartLine()) // .isEqualTo(4796); assertThat(actual.get(0).getEndLine()) //
@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); } }
assertThat(actual.get(0).getRule()) // .isEqualTo("DUPLICATION"); assertThat(actual.get(0).getStartLine()) // .isEqualTo(11); assertThat(actual.get(0).getEndLine()) //
@Test public void testThatViolationsCanBeParsed() { final String rootFolder = getRootFolder(); final List<Violation> actual = violationsApi() // .withPattern(".*/gendarme/.*\\.xml$") // .inFolder(rootFolder) // .findAll(GENDARME) // .violations(); assertThat(actual) // .hasSize(28); assertThat(actual.get(0).getMessage()) // .startsWith("This me"); assertThat(actual.get(0).getFile()) // .isEqualTo("c:/Dev/src/hudson/Hudson.Domain/Dog.cs"); assertThat(actual.get(0).getSeverity()) // .isEqualTo(INFO); assertThat(actual.get(0).getRule()) // .isEqualTo("MethodCanBeMadeStaticRule"); assertThat(actual.get(0).getStartLine()) // .isEqualTo(10); assertThat(actual.get(0).getEndLine()) // .isEqualTo(10); assertThat(actual.get(5).getMessage()) // .startsWith("A constructor ca"); }
@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 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() { 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 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(".*/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 testThatViolationsCanBeParsed2() { final String rootFolder = getRootFolder(); final List<Violation> actual = violationsApi() // .withPattern(".*/codenarc/SampleCodeNarc.*\\.xml$") // .inFolder(rootFolder) // .findAll(CODENARC) // .violations(); assertThat(actual) // .hasSize(79); final Violation violation0 = actual.get(0); assertThat(violation0.getMessage()) // .isEqualTo( "Violations are triggered when an excessive set of consecutive statements all reference the same variable. This can be made more readable by using a with or identity block."); assertThat(violation0.getFile()) // .isEqualTo("src/test/groovy/org/codenarc/rule/AbstractAstVisitorRuleTest.groovy"); assertThat(violation0.getSeverity()) // .isEqualTo(INFO); assertThat(violation0.getRule()) // .isEqualTo("UnnecessaryObjectReferences"); assertThat(violation0.getStartLine()) // .isEqualTo(184); assertThat(violation0.getEndLine()) // .isEqualTo(184); }
@Test public void testThatViolationsCanBeParsedIfNoRuleset() { final String rootFolder = getRootFolder(); final List<Violation> actual = violationsApi() // .withPattern(".*/pmd/no-ruleset\\.xml$") // .inFolder(rootFolder) // .findAll(PMD) // .violations(); assertThat(actual) // .hasSize(3); final Violation violationZero = actual.get(0); assertThat(violationZero.getFile()) // .isEqualTo( "/home/cm/prod/workspace/applikation-mr-pipeline@3/applikation-web/src/main/java/pkg/applikation/application/Some.java"); assertThat(violationZero.getMessage()) // .isEqualTo("Applikationslagret får inte kommunicera uppåt.") // .doesNotContain("CDATA"); assertThat(violationZero.getStartLine()) // .isEqualTo(1); assertThat(violationZero.getEndLine()) // .isEqualTo(149); assertThat(violationZero.getRule()) // .isEqualTo("ApplicationAccessLimit"); assertThat(violationZero.getSeverity()) // .isEqualTo(ERROR); }
@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 testThatViolationsCanBeParsed() { final String rootFolder = getRootFolder(); final List<Violation> actual = violationsApi() // .withPattern(".*/pmd/main\\.xml$") // .inFolder(rootFolder) // .findAll(PMD) // .violations(); assertThat(actual) // .hasSize(4); final Violation violationZero = actual.get(0); assertThat(violationZero.getFile()) // .isEqualTo("/src/main/java/se/bjurr/violations/lib/example/MyClass.java"); assertThat(violationZero.getMessage()) // .startsWith("Avoid empt") // .doesNotContain("CDATA"); assertThat(violationZero.getStartLine()) // .isEqualTo(9); assertThat(violationZero.getEndLine()) // .isEqualTo(11); assertThat(violationZero.getRule()) // .isEqualTo("EmptyIfStmt"); assertThat(violationZero.getSeverity()) // .isEqualTo(WARN); }
@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); }
@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); } }