README.md
Meet detekt, a static code analysis tool for the Kotlin programming language. Visit the project website for installation guides, rule descriptions, configuration options and more.
@Suppress annotations.curl -sSLO https://github.com/detekt/detekt/releases/download/v[version]/detekt-cli-[version]-all.jar
java -jar detekt-cli-[version]-all.jar --help
You can find other ways to install detekt here
plugins {
id("io.gitlab.arturbosch.detekt") version "[version]"
}
repositories {
mavenCentral()
}
detekt {
buildUponDefaultConfig = true // preconfigure defaults
allRules = false // activate all available (even unstable) rules.
config.setFrom("$projectDir/config/detekt.yml") // point to your custom config defining rules to run, overwriting default behavior
baseline = file("$projectDir/config/baseline.xml") // a way of suppressing issues before introducing detekt
}
tasks.withType<Detekt>().configureEach {
reports {
html.required.set(true) // observe findings in your browser with structure and code snippets
checkstyle.required.set(true) // checkstyle(xml) like format mainly for integrations like Jenkins
sarif.required.set(true) // standardized SARIF format (https://sarifweb.azurewebsites.net/) to support integrations with GitHub Code Scanning
markdown.required.set(true) // simple Markdown format
}
}
// Groovy DSL
tasks.withType(Detekt).configureEach {
jvmTarget = "1.8"
}
tasks.withType(DetektCreateBaselineTask).configureEach {
jvmTarget = "1.8"
}
// or
// Kotlin DSL
tasks.withType<Detekt>().configureEach {
jvmTarget = "1.8"
}
tasks.withType<DetektCreateBaselineTask>().configureEach {
jvmTarget = "1.8"
}
See maven central for releases and sonatype for snapshots.
If you want to use a SNAPSHOT version, you can find more info on this documentation page.
Gradle 6.8.3+ is the minimum requirement. However, the recommended versions together with the other tools recommended versions are:
| Detekt Version | Gradle | Kotlin | AGP | Java Target Level | JDK Max Version |
|---|---|---|---|---|---|
2.0.0-alpha.2 | 9.3.0 | 2.3.0 | 9.0.0 | 1.8 | 25 |
2.0.0-alpha.1 | 9.1.0 | 2.2.20 | 8.13.0 | 1.8 | 25 |
2.0.0-alpha.0 | 8.13.0 | 2.2.10 | 8.13.0 | 1.8 | 21 |
1.23.8 | 8.12.1 | 2.0.21 | 8.8.1 | 1.8 | 21 |
The list of recommended versions for previous detekt version is listed here.
Java 17 or higher is required to build detekt.
detekt itself provides a wrapper over ktlint as the ktlint rule set
which can be easily added to the Gradle configuration:
dependencies {
detektPlugins("io.gitlab.arturbosch.detekt:detekt-rules-ktlint-wrapper:[version]")
}
Similarly, there are extra rule sets available for detekt from detekt:
dependencies {
detektPlugins("io.gitlab.arturbosch.detekt:detekt-rules-libraries:[version]")
detektPlugins("io.gitlab.arturbosch.detekt:detekt-rules-ruleauthors:[version]")
}
For more info visit the Detekt Marketplace.
Likewise custom extensions can be added to detekt.
See CONTRIBUTING
Thanks to all the people who contributed to detekt!
As mentioned in...
Integrations:
Custom rules and reports from 3rd parties can be found on our Detekt Marketplace.