public ViolationData(final Violation violation) { super(violation); messageEscaped = escapeHTML(violation.getMessage()); final String[] fileParts = violation.getFile().split("\\/"); fileName = fileParts[fileParts.length - 1]; }
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(); } }
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 testThatViolationsCanBeParsedExample1() { String rootFolder = getRootFolder(); List<Violation> actual = violationsApi() // .withPattern(".*/cppcheck/example1\\.xml$") // .inFolder(rootFolder) // .findAll(CPPCHECK) // .violations(); Violation violation0 = actual.get(0); assertThat(violation0.getMessage()) // .isEqualTo("Variable 'it' is reassigned a value before the old one has been used."); Violation violation1 = actual.get(1); assertThat(violation1.getMessage()) // .isEqualTo("Variable 'it' is reassigned a value before the old one has been used."); Violation violation2 = actual.get(2); assertThat(violation2.getMessage()) // .isEqualTo("Condition 'rc' is always true"); Violation violation3 = actual.get(3); assertThat(violation3.getMessage()) // .isEqualTo("Condition 'rc' is always true. Assignment 'rc=true', assigned value is 1"); } }
@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); } }
@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 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 testThatPHPViolationsCanBeParsedIfNoSource() { final List<Violation> actual = violationsApi() // .withPattern(".*/checkstyle/checkstyle-no-source\\.xml$") // .inFolder(rootFolder) // .findAll(CHECKSTYLE) // .withReporter("PHP") // .violations(); assertThat(actual) // .hasSize(1); assertThat(actual.get(0).getMessage()) // .isEqualTo("Must have at least one statement."); assertThat(actual.get(0).getReporter()) // .isEqualTo("PHP"); } }
@Test public void testThatPHPViolationsCanBeParsed() { final String rootFolder = getRootFolder(); final List<Violation> actual = violationsApi() // .withPattern(".*/checkstyle/phpcheckstyle\\.xml$") // .inFolder(rootFolder) // .findAll(CHECKSTYLE) // .withReporter("PHP") // .violations(); assertThat(actual) // .hasSize(6); assertThat(actual.get(0).getMessage()) // .isEqualTo("Missing file doc comment"); assertThat(actual.get(0).getReporter()) // .isEqualTo("PHP"); }
@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(".*/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(".*/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(".*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(".*/kotlingradle/.*\\.txt") // .inFolder(rootFolder) // .findAll(KOTLINGRADLE) // .violations(); assertThat(actual) // .hasSize(3); final Violation violation0 = actual.get(0); assertThat(violation0.getMessage()) // .isEqualTo( "Elvis operator (?:) always returns the left operand of non-nullable type String"); assertThat(violation0.getFile()) // .isEqualTo("/Users/scottkennedy/project/src/main/java/com/example/Test.kt"); assertThat(violation0.getSeverity()) // .isEqualTo(WARN); assertThat(violation0.getRule()) // .isEqualTo(""); assertThat(violation0.getParser()) // .isEqualTo(KOTLINGRADLE); } }
@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 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 testThatPHPMDViolationsCanBeParsed() { final String rootFolder = getRootFolder(); final List<Violation> actual = violationsApi() // .withPattern(".*/pmd/phpmd\\.xml$") // .inFolder(rootFolder) // .findAll(PMD) // .violations(); assertThat(actual) // .hasSize(2); final Violation violationZero = actual.get(0); assertThat(violationZero.getFile()) // .isEqualTo("/home/bjerre/workspace/pull-request-notifier-for-stash/api.php"); assertThat(violationZero.getMessage()) // .startsWith("Avoid unused"); } }