This guide shows how to silence detekt and write a custom report format.

detekt’s reporting mechanism relies on implementations of ConsoleReport’s. The cli module and therefore the Gradle plugin implement a bunch of this reports.

A typical detekt report will look like following:


There are many different parts which might or might not interest you. If one part is not important to you, it can be excluded in the yaml configuration file. A silent configuration would exclude all possible processors and reports:

  active: true
    - 'DetektProgressListener'
    - 'FunctionCountProcessor'
    - 'PropertyCountProcessor'
    - 'ClassCountProcessor'
    - 'PackageCountProcessor'
    - 'KtFileCountProcessor'

  active: true
    - 'ProjectStatisticsReport'
    - 'ComplexityReport'
    - 'NotificationReport'
    - 'FindingsReport'
    - 'BuildFailureReport'

Running with this config won’t produce any console messages:


Just verify that the ./report.txt is not empty ;).

We might find detekt’s FindingsReport too verbose and just want to print one message line per finding. This can be achieved by implementing a custom ConsoleReport.

class SingleLineFindingsReport : ConsoleReport() {

    override fun render(detektion: Detektion): String? =
            .joinToString("\n") { "${} - ${it.message} - ${it.entity.location.file}" }

Combined with our silent configuration only messages are printed when findings are actually found:


See the extension documention on how to let detekt know about your custom report.