Detekt & ktlint on Android: Static Analysis & CI Integration
Detekt and ktlint catch code quality issues automatically. Integrate them into CI/CD to enforce standards across your team.
Setting Up Detekt
Add to build.gradle:
plugins {
id "io.gitlab.arturbosch.detekt" version "1.23.0"
}
detekt {
config = files("detekt-config.yml")
reports {
html.enabled = true
xml.enabled = true
}
}
Detekt Configuration
Create detekt-config.yml:
complexity:
ComplexInterface:
threshold: 10
LongMethod:
threshold: 30
naming:
MemberNameEqualsClassNameExcluded:
active: true
style:
MagicNumber:
ignoreNumbers: ["-1", "0", "1", "2"]
ktlint Setup
plugins {
id "org.jlleitschuh.gradle.ktlint" version "11.5.1"
}
ktlint {
version = "0.48.0"
android = true
ignoreFailures = false
}
CI/CD Integration with GitHub Actions
name: Code Quality
on: [push, pull_request]
jobs:
quality:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-java@v3
with:
java-version: '17'
- run: ./gradlew detekt ktlintCheck
- uses: actions/upload-artifact@v3
if: failure()
with:
name: detekt-reports
path: build/reports/detekt/
Custom Detekt Rules
class CustomDetectRule(config: Config) : Rule(config) {
override val issue = Issue(
id = "CustomRule",
description = "Custom code pattern",
severity = Severity.WARNING,
debt = Debt.FIVE_MINS
)
override fun visitKtFile(file: KtFile) {
// Custom logic
}
}
Static analysis catches issues before code review. Combine with pre-commit hooks for maximum effectiveness.
8 Android app templates available on Gumroad
Top comments (0)