AtlasArc

Hotspot Risk

Detekt · AtlasArc 1.0.1+736db9b9 · 2026-07-31T22:45:00Z

A risk-ranking report for complexity, coupling, visibility, and coverage hotspots.

Refactoring Risk Briefing

This chapter ranks package-level risk signals before the diagrams: coupling pressure, distance from the main sequence, visibility, cycle participation.

Packages ranked67
High distance16
High coupling9
Cycle packages23
CoverageNot loaded

Top Risk Drivers

Primary driverDistanceFan-inFan-out
Packagedetekt-api.main:dev.detekt.api
Cycle participation0.69441
Packagedetekt-api.main:dev.detekt.api.internal
Visibility0.55181
Packagedetekt-metrics.main:dev.detekt.metrics
Cycle participation0.7562
Packagedetekt-core.main:dev.detekt.core
Visibility0.4069
Packagedetekt-tooling.main:dev.detekt.tooling.api
Visibility0.37112
Packagedetekt-tooling.main:dev.detekt.tooling.api.spec
Visibility0.17153
Packagedetekt-tooling.main:dev.detekt.tooling.internal
Visibility0.3243
Packagedetekt-compiler-plugin.main:io.github.detekt.compiler.plugin
Visibility0.3312
Rendered as Subsystems · Boundary Risk Open

Where does boundary pressure concentrate across the visible architecture?

Configuration
Focus
project root
Curated view
Boundary Risk
Filter
All visible packages
Encoding
Bubble
Package-folder subsystem rollup
X axis
Fan-out
Y axis
Fan-in
Size
Classes
Colour
Instability
  • How to read this graph: each bubble is a visible architecture-boundary rollup. Right means more outgoing boundary dependencies; up means more incoming boundary dependencies; size is total class count.
  • Colour follows instability, so red means outgoing-heavy rather than automatically wrong. Use the figure to find boundary surfaces worth inspecting in Topology or Matrix.
  • Dashed rings mark expanded aggregate boundaries whose visible descendants are also present. Terminal packages or source folders remain valid boundaries and use their own metrics.
Fan-in
0 10 20 30 0 10 20 30 40 50 60 detekt-rules-styl… dev detekt rules style detekt-rules-ktli… dev detekt rules ktlintwrapper wrappers potentialbugs detekt-core.main dev detekt core detekt-gradle-plu… dev detekt gradle detekt-tooling.ma… dev detekt tooling detekt-generator.… dev detekt generator
Fan-out
Rendered as Subsystems · Visibility Surface Open

Which subsystems expose a large public surface?

Configuration
Focus
project root
Curated view
Visibility Surface
Filter
All visible packages
Encoding
Bubble
Package-folder subsystem rollup
X axis
Relative visibility
Y axis
Abstractness
Size
Classes
Colour
Abstractness
  • How to read this graph: each bubble is a visible architecture-boundary rollup. Right means more visible API surface; up and colour both follow abstractness; size is total class count.
  • This view highlights boundary shape, not direct defect risk. A top/right bubble may be a deliberate public contract area.
  • Dashed rings mark expanded aggregate boundaries whose visible descendants are also present. Terminal packages or source folders remain valid boundaries and use their own metrics.
Abstractness (A)
0.00 0.20 0.40 0.60 0.80 1.00 0.00 0.20 0.40 0.60 0.80 1.00 detekt-rules-styl… dev detekt rules style detekt-rules-ktli… dev detekt rules ktlintwrapper wrappers potentialbugs detekt-core.main dev detekt core detekt-gradle-plu… dev detekt gradle detekt-tooling.ma… dev detekt tooling detekt-generator.… dev detekt generator
Rel. Visibility (RV)
Rendered as Subsystems · Internal Tangles Open

Which subsystem areas contain internal cycle pressure?

Configuration
Focus
project root
Curated view
Internal Tangles
Filter
All visible packages
Encoding
Bubble
Package-folder subsystem rollup
X axis
cycleCount
Y axis
largestCycle
Size
packageCount
Colour
Cycle status
  • How to read this graph: each bubble is a visible architecture-boundary rollup. Right means more fully contained package-cycle groups; up means the largest contained package cycle is larger; size is package count.
  • Only package cycles fully inside the boundary count here. Terminal-package class/file tangles remain separate Package Internals evidence in Topology. Use the cycle tables, Topology, or Matrix for concrete dependency edges and cross-boundary cycle context.
  • Dashed rings mark expanded aggregate boundaries whose visible descendants are also present. Terminal packages or source folders remain valid boundaries and use their own metrics.
Largest cycle
0 1 1 2 2 0 1 2 3 4 5 detekt-generator.… dev detekt generator build-logic.main gradle kotlin dsl accessors detekt-rules-styl… dev detekt rules style reporting collection printer plugin processors detekt-psi-utils.… dev detekt psi detekt-rules-comm… dev detekt rules comments
Cycle groups
Rendered as Hotspots · Coupling Open

Which leaf packages stand out by coupling pressure?

Configuration
Items
Leaf packages
Focus
project root
Scope
Recursive
Preset
Coupling
Encoding
Bubble
One leaf package
X axis
Fan-out
Y axis
Fan-in
Size
Lines of code
Colour
Instability
  • Labels are shown for the largest report bubbles; inspect the package metrics table for the full ranked list.
Fan-in
0 2 4 6 8 10 12 14 0 10 20 30 40 style potentialbugs wrappers complexity naming coroutines exceptions api collection comments
Fan-out
Rendered as Hotspots · Visibility Open

Which leaf packages are visible to many callers and far from the main sequence?

Configuration
Items
Leaf packages
Focus
project root
Scope
Recursive
Preset
Visibility
Encoding
Bubble
One leaf package
X axis
Relative visibility
Y axis
Fan-in
Size
Classes
Colour
Distance from main sequence
  • Labels are shown for the largest report bubbles; inspect the package metrics table for the full ranked list.
Fan-in
0.00 0.20 0.40 0.60 0.80 1.00 0 10 20 30 40 style wrappers potentialbugs complexity naming api invoke collection exceptions dsl spec processors comments emptyblocks cli
Rel. Visibility (RV)
Rendered as Hotspots · Abstractness / Instability Open

Which leaf packages sit far from the main sequence?

Configuration
Items
Leaf packages
Focus
project root
Scope
Recursive
Preset
Zone Map
Encoding
Bubble
One leaf package
X axis
Instability
Y axis
Abstractness
Size
Distance from main sequence
Colour
Distance from main sequence
  • Labels are shown for the largest report bubbles; inspect the package metrics table for the full ranked list.
Abstractness (A)
0.00 0.20 0.40 0.60 0.80 1.00 0.00 0.20 0.40 0.60 0.80 1.00 parser exception util parser internal utils psi utils out metrics api extensions utils util internal movelambdaout core internal reporting api collection dsl plugin printer plugin wrappers junit internal
Instability (I)

Package Metrics

This table ranks packages by structural signals. Use it to inspect packages that combine high fan-in, high fan-out, cycle membership or size.

Fan-inFan-outInstabilityAbstractnessDistanceCycleLOC
Packagedetekt-core.main:dev.detekt.core.parser
200.000.001.00117
Packagedetekt-generator.main:dev.detekt.generator.collection.exception
100.000.001.0011
Packagedetekt-metrics.main:dev.detekt.metrics.processors.util
100.000.001.0075
Packagedetekt-parser.main:dev.detekt.parser
200.000.001.0028
Packagedetekt-psi-utils.main:dev.detekt.psi.internal
100.000.001.00256
Packagedetekt-rules-coroutines.main:dev.detekt.rules.coroutines.utils
100.000.001.0038
Packagedetekt-psi-utils.main:dev.detekt.psi
1410.070.040.90525
Packagedetekt-utils.main:dev.detekt.utils
1000.000.170.83205
Packagedetekt-generator.main:dev.detekt.generator.out
100.000.250.7522
Packagedetekt-metrics.main:dev.detekt.metrics
620.250.000.75Nested411
Packagedetekt-api.main:dev.detekt.api
4410.020.290.69Nested858
Packagedetekt-gradle-plugin.main:dev.detekt.gradle.extensions
500.000.330.67150
Packagedetekt-test-utils.main:dev.detekt.test.utils
210.330.000.67249
Packagedetekt-core.main:dev.detekt.core.util
430.430.000.5750
Packagedetekt-api.main:dev.detekt.api.internal
1810.050.400.55Nested124
Packagedetekt-rules-style.main:dev.detekt.rules.style.movelambdaout
110.500.000.50138
Packagedetekt-core.main:dev.detekt.core
690.600.000.40Nested366
Packagedetekt-gradle-plugin.main:dev.detekt.gradle.plugin.internal
230.600.000.40Architectural300
Packagedetekt-core.main:dev.detekt.core.reporting
350.630.000.38124
Packagedetekt-tooling.main:dev.detekt.tooling.api
1120.150.470.37Architectural122
Packagedetekt-generator.main:dev.detekt.generator.collection
340.570.080.35805
Packagedetekt-tooling.main:dev.detekt.tooling.dsl
440.500.150.35Architectural239
Packagedetekt-compiler-plugin.main:io.github.detekt.compiler.plugin
120.670.000.33Nested221
Packagedetekt-generator.main:dev.detekt.generator.printer
220.500.170.33156
Packagedetekt-gradle-plugin.main:dev.detekt.gradle.plugin
240.670.000.33Architectural399
Packagedetekt-rules-ktlint-wrapper.main:dev.detekt.rules.ktlintwrapper.wrappers
120.670.000.33Nested2075
Packagedetekt-test-junit.main:dev.detekt.test.junit
011.000.330.3383
Packagedetekt-tooling.main:dev.detekt.tooling.internal
430.430.250.32Architectural29
Packagedetekt-gradle-plugin.main:dev.detekt.gradle
330.500.800.30Architectural482
Packagedetekt-core.main:dev.detekt.core.rules
250.710.000.2957
Packagedetekt-gradle-plugin.main:dev.detekt.gradle.internal
340.570.170.26Architectural132
Packagedetekt-core.main:dev.detekt.core.config
240.670.080.25Nested302
Packagedetekt-rules-style.main:dev.detekt.rules.style.optional
130.750.000.25237
Packagedetekt-metrics.main:dev.detekt.metrics.processors
130.750.030.22Nested223
Packagedetekt-gradle-plugin.main:dev.detekt.gradle.invoke
120.670.140.19Architectural236
Packagedetekt-tooling.main:dev.detekt.tooling.api.spec
1530.170.670.17Architectural249
Packagedetekt-compiler-plugin.main:io.github.detekt.compiler.plugin.internal
150.830.000.17Nested107
Packagedetekt-rules-ktlint-wrapper.main:dev.detekt.rules.ktlintwrapper
130.750.090.16Nested575
Packagedetekt-core.main:dev.detekt.core.reporting.console
031.000.130.13161
Packagedetekt-cli.main:dev.detekt.cli
180.890.000.11Nested579
Packagedetekt-core.main:dev.detekt.core.settings
240.670.270.06222
Packagedetekt-rules-empty-blocks.main:dev.detekt.rules.emptyblocks
041.000.060.06416
Packagedetekt-generator.main:dev.detekt.generator.printer.defaultconfig
130.750.220.03198
Packagedetekt-cli.main:dev.detekt.cli.runners
160.860.170.02Nested114
Packagedetekt-core.main:dev.detekt.core.baseline
021.000.000.00315
Packagedetekt-core.main:dev.detekt.core.config.validation
2100.830.170.00Nested399
Packagedetekt-core.main:dev.detekt.core.suppressors
140.800.200.00Nested142
Packagedetekt-core.main:dev.detekt.core.tooling
0151.000.000.00263
Packagedetekt-generator.main:dev.detekt.generator
051.000.000.00236
Packagedetekt-report-checkstyle.main:dev.detekt.report.xml
011.000.000.00425
Packagedetekt-report-html.main:dev.detekt.report.html
041.000.000.00259
Packagedetekt-report-markdown.main:dev.detekt.report.markdown
041.000.000.00153
Packagedetekt-report-sarif.main:dev.detekt.report.sarif
011.000.000.00106
Packagedetekt-rules-comments.main:dev.detekt.rules.comments
041.000.000.00772
Packagedetekt-rules-complexity.main:dev.detekt.rules.complexity
041.000.000.001367
Packagedetekt-rules-coroutines.main:dev.detekt.rules.coroutines
041.000.000.001153
Packagedetekt-rules-exceptions.main:dev.detekt.rules.exceptions
031.000.000.001090
Packagedetekt-rules-libraries.main:dev.detekt.rules.libraries
011.000.000.00214
Packagedetekt-rules-naming.main:dev.detekt.rules.naming
041.000.000.001283
Packagedetekt-rules-performance.main:dev.detekt.rules.performance
021.000.000.00606
Packagedetekt-rules-potential-bugs.main:dev.detekt.rules.potentialbugs
031.000.000.003212
Packagedetekt-rules-ruleauthors.main:dev.detekt.rules.ruleauthors
011.000.000.0087
Packagedetekt-rules-style.main:dev.detekt.rules.style
051.000.000.009934
Packagedetekt-test-assertj.main:dev.detekt.test.assertj
011.000.000.00138
Packagedetekt-test.main:dev.detekt.test
021.000.000.00151
Packagedetekt-gradle-plugin.main:dev.detekt.gradle.report
000.50164
Packagedetekt-test-utils.main:dev.detekt.test.utils.internal
000.00372