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;
}