DEV Community

myougaTheAxo
myougaTheAxo

Posted on

Detekt & ktlint on Android: Static Analysis & CI Integration

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
    }
}
Enter fullscreen mode Exit fullscreen mode

Detekt Configuration

Create detekt-config.yml:

complexity:
  ComplexInterface:
    threshold: 10
  LongMethod:
    threshold: 30

naming:
  MemberNameEqualsClassNameExcluded:
    active: true

style:
  MagicNumber:
    ignoreNumbers: ["-1", "0", "1", "2"]
Enter fullscreen mode Exit fullscreen mode

ktlint Setup

plugins {
    id "org.jlleitschuh.gradle.ktlint" version "11.5.1"
}

ktlint {
    version = "0.48.0"
    android = true
    ignoreFailures = false
}
Enter fullscreen mode Exit fullscreen mode

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/
Enter fullscreen mode Exit fullscreen mode

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
    }
}
Enter fullscreen mode Exit fullscreen mode

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)