Skip to content

Commit d568d8a

Browse files
committed
improve formatting of console report
group rule summaries by source class
1 parent 81481f5 commit d568d8a

File tree

4 files changed

+33
-29
lines changed

4 files changed

+33
-29
lines changed

nebula-archrules-gradle-plugin/gradle.lockfile

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,10 @@
44
cglib:cglib-nodep:3.2.2=testRuntimeClasspath
55
com.fasterxml.jackson.core:jackson-annotations:2.20=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
66
com.jayway.jsonpath:json-path:2.9.0=testCompileClasspath,testRuntimeClasspath
7-
com.netflix.nebula:archrules-deprecation:0.1.3=archRules
8-
com.netflix.nebula:archrules-joda:0.1.3=archRules
9-
com.netflix.nebula:archrules-testing-frameworks:0.1.3=archRules
10-
com.netflix.nebula:nebula-archrules-core:0.1.5=archRules
7+
com.netflix.nebula:archrules-deprecation:0.3.0=archRules
8+
com.netflix.nebula:archrules-joda:0.3.0=archRules
9+
com.netflix.nebula:archrules-testing-frameworks:0.3.0=archRules
10+
com.netflix.nebula:nebula-archrules-core:0.2.3=archRules
1111
com.netflix.nebula:nebula-test:11.9.0=testCompileClasspath,testRuntimeClasspath
1212
com.tngtech.archunit:archunit:1.4.1=archRules,compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
1313
net.bytebuddy:byte-buddy:1.17.7=testCompileClasspath,testRuntimeClasspath
@@ -39,7 +39,7 @@ org.jetbrains.kotlin:kotlin-stdlib:2.2.0=compileClasspath,kotlinBuildToolsApiCla
3939
org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.8.0=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath
4040
org.jetbrains:annotations:13.0=compileClasspath,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest,testCompileClasspath,testRuntimeClasspath
4141
org.json:json:20250517=testCompileClasspath,testRuntimeClasspath
42-
org.jspecify:jspecify:1.0.0=testCompileClasspath,testRuntimeClasspath
42+
org.jspecify:jspecify:1.0.0=archRules,testCompileClasspath,testRuntimeClasspath
4343
org.junit.jupiter:junit-jupiter-api:5.14.1=testCompileClasspath,testRuntimeClasspath
4444
org.junit.jupiter:junit-jupiter-engine:5.14.1=testRuntimeClasspath
4545
org.junit.jupiter:junit-jupiter-params:5.14.1=testCompileClasspath,testRuntimeClasspath

nebula-archrules-gradle-plugin/src/main/java/com/netflix/nebula/archrules/gradle/PrintConsoleReportTask.java

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,19 +28,16 @@ abstract public class PrintConsoleReportTask extends DefaultTask {
2828
@TaskAction
2929
public void printReport() {
3030
final var consoleOutput = getServices().get(StyledTextOutputFactory.class).create("archrules");
31-
consoleOutput.style(StyledTextOutput.Style.Header).println("ArchRule summary:").println();
3231
List<RuleResult> list = getDataFiles().get().stream()
3332
.flatMap(it -> ViolationsUtil.readDetails(it).stream())
3433
.toList();
3534
final var byRule = ViolationsUtil.consolidatedFailures(list);
3635
ViolationsUtil.printSummary(byRule, consoleOutput);
37-
consoleOutput.println();
3836
if (list.stream().anyMatch(it -> it.status() != RuleResultStatus.FAIL && it.rule().priority() == Priority.LOW) && !getLogger().isInfoEnabled()) {
3937
consoleOutput.style(StyledTextOutput.Style.Header)
4038
.text("Note: ")
4139
.style(StyledTextOutput.Style.Normal)
42-
.println("In order to see details of LOW priority rules, run build with --info")
43-
.println();
40+
.println("In order to see details of LOW priority rules, run build with --info");
4441
}
4542
ViolationsUtil.printReport(byRule, consoleOutput, getLogger().isInfoEnabled());
4643
}

nebula-archrules-gradle-plugin/src/main/kotlin/com/netflix/nebula/archrules/gradle/ViolationsUtil.kt

Lines changed: 26 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -56,27 +56,34 @@ class ViolationsUtil {
5656

5757
@JvmStatic
5858
fun printSummary(resultMap: Map<Rule, List<RuleResult>>, output: StyledTextOutput) {
59+
val indent = 4
5960
val maxRuleNameLength = resultMap.keys.maxOfOrNull { it.ruleName().length } ?: 1
60-
resultMap.forEach { (rule, results) ->
61-
val failures = results.filter { it.status() != RuleResultStatus.PASS }
62-
if (failures.isEmpty()) {
63-
output.style(StyledTextOutput.Style.Success)
64-
.text(rule.ruleName().padEnd(maxRuleNameLength + 1))
65-
.text(" ")
66-
.text(rule.priority().asString().padEnd(10))
67-
.println(" (No failures)")
68-
} else {
69-
val style = when (rule.priority()) {
70-
Priority.LOW -> StyledTextOutput.Style.Normal
71-
Priority.MEDIUM -> StyledTextOutput.Style.Info
72-
Priority.HIGH -> StyledTextOutput.Style.Failure
61+
resultMap.entries.groupBy { entry -> entry.key.ruleClass() }
62+
.forEach { (ruleClass, classMap) ->
63+
output.style(StyledTextOutput.Style.Header).println(ruleClass)
64+
classMap.forEach { (rule, results) ->
65+
val failures = results.filter { it.status() != RuleResultStatus.PASS }
66+
if (failures.isEmpty()) {
67+
output.style(StyledTextOutput.Style.Success)
68+
.text(" ".repeat(indent))
69+
.text(rule.ruleName().padEnd(maxRuleNameLength + 1))
70+
.text(" ")
71+
.text(rule.priority().asString().padEnd(10))
72+
.println(" (No failures)")
73+
} else {
74+
val style = when (rule.priority()) {
75+
Priority.LOW -> StyledTextOutput.Style.Normal
76+
Priority.MEDIUM -> StyledTextOutput.Style.Info
77+
Priority.HIGH -> StyledTextOutput.Style.Failure
78+
}
79+
output.style(style)
80+
.text(" ".repeat(indent))
81+
.text(rule.ruleName().padEnd(maxRuleNameLength + 1))
82+
.text(" ")
83+
.text(rule.priority().asString().padEnd(10))
84+
.println(" (" + failures.size + " failures)")
85+
}
7386
}
74-
output.style(style)
75-
.text(rule.ruleName().padEnd(maxRuleNameLength + 1))
76-
.text(" ")
77-
.text(rule.priority().asString().padEnd(10))
78-
.println(" (" + failures.size + " failures)")
79-
}
8087
}
8188
}
8289

nebula-archrules-gradle-plugin/src/test/kotlin/com/netflix/nebula/archrules/gradle/ArchrulesRunnerPluginTest.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,7 @@ class ArchrulesRunnerPluginTest {
120120
.exists()
121121

122122
assertThat(result.output)
123-
.contains("ArchRule summary:")
123+
.contains("com.netflix.nebula.archrules.deprecation.DeprecationRule")
124124
.contains("deprecated LOW (1 failures)")
125125
}
126126

0 commit comments

Comments
 (0)