# detekt










<LinkCard
  title="detekt"
  description="A static analysis tool for Kotlin. Rules are enabled or disabled in a YAML configuration file."
  href="https://detekt.dev/"
/>

detekt lets you configure rule enable/disable settings and thresholds through a YAML configuration file.

We recommend declaring the configuration file and the baseline in your architecture definition too, so katachi knows about them.

```kt collapse
// ProjectArchitecture.kt
@file:OptIn(ExperimentalKatachiApi::class)

import me.tbsten.katachi.ExperimentalKatachiApi
import me.tbsten.katachi.dsl.architecture

val projectArchitecture = architecture {
    "Tools".group {
        detekt()
    }
}

// roles/Detekt.kt
@file:OptIn(ExperimentalKatachiApi::class)

import me.tbsten.katachi.ExperimentalKatachiApi
import me.tbsten.katachi.dsl.DeclarationContainerScope

private const val detektConfigDir = "config/detekt"

fun DeclarationContainerScope.detekt() =
    "Detekt".group {
        "Config" {
            title = "detekt config file"
            summary = "YAML that enables or disables detekt rules and sets thresholds"
            layout {
                detektConfigDir / "*.yml".file()
            }
        }

        "Baseline" {
            title = "detekt baseline"
            summary = "baseline.xml that tolerates existing findings (may be absent)"
            layout {
                detektConfigDir / "baseline.xml".file().optional()
            }
        }
    }
```

<SnippetIsStartingPoint />