Skip to content

Commit

Permalink
Adding Detekt in the project (#216)
Browse files Browse the repository at this point in the history
* Removing ktlint

* Removing compose lint

* Adding initial Detekt config

* Setting up detekt config

* Adding detekt baseline

* Fixing workflows

* Moving to a module based solution

* Adding new line

* Adding new line

* Updating baseline

* Addressing PR suggestions

* Regenerating baseline.xml

* Cleanup

---------

Co-authored-by: AntsyLich <[email protected]>
  • Loading branch information
theolm and AntsyLich authored Jan 28, 2024
1 parent 9c4d2b0 commit cc09230
Show file tree
Hide file tree
Showing 13 changed files with 1,403 additions and 33 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/build_pull_request.yml
Original file line number Diff line number Diff line change
Expand Up @@ -37,4 +37,4 @@ jobs:
- name: Build app and run unit tests
uses: gradle/gradle-command-action@v2
with:
arguments: ktlintCheck assembleStandardRelease testReleaseUnitTest
arguments: detekt assembleStandardRelease testReleaseUnitTest
2 changes: 1 addition & 1 deletion .github/workflows/build_push.yml
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ jobs:
- name: Build app and run unit tests
uses: gradle/gradle-command-action@v2
with:
arguments: ktlintCheck assembleStandardRelease testReleaseUnitTest
arguments: detekt assembleStandardRelease testReleaseUnitTest

# Sign APK and create release for tags

Expand Down
1 change: 0 additions & 1 deletion app/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -163,7 +163,6 @@ dependencies {
implementation(compose.ui.util)
implementation(compose.accompanist.webview)
implementation(compose.accompanist.systemuicontroller)
lintChecks(compose.lintchecks)

implementation(androidx.paging.runtime)
implementation(androidx.paging.compose)
Expand Down
3 changes: 1 addition & 2 deletions build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,7 @@ subprojects {
}

plugins.withType<BasePlugin> {
plugins.apply("tachiyomi.lint")

plugins.apply("detekt")
configure<BaseExtension> {
compileSdkVersion(AndroidConfig.compileSdk)
defaultConfig {
Expand Down
3 changes: 2 additions & 1 deletion buildSrc/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,10 @@ plugins {
}

dependencies {
implementation(files(libs.javaClass.superclass.protectionDomain.codeSource.location))
implementation(androidxLibs.gradle)
implementation(kotlinLibs.gradle)
implementation(libs.ktlint)
implementation(libs.detekt.gradlePlugin)
implementation(gradleApi())
}

Expand Down
47 changes: 47 additions & 0 deletions buildSrc/src/main/kotlin/detekt.gradle.kts
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
import io.gitlab.arturbosch.detekt.Detekt
import io.gitlab.arturbosch.detekt.DetektCreateBaselineTask
import org.gradle.accessors.dm.LibrariesForLibs

plugins {
id("io.gitlab.arturbosch.detekt")
}

val libs = the<LibrariesForLibs>()
dependencies {
detektPlugins(libs.detekt.rules.formatting)
detektPlugins(libs.detekt.rules.compose)
}

private val configFile = files("$rootDir/config/detekt/detekt.yml")
private val baselineFile = file("$rootDir/config/detekt/baseline.xml")
private val kotlinFiles = "**/*.kt"
private val resourceFiles = "**/resources/**"
private val buildFiles = "**/build/**"
private val generatedFiles = "**/generated/**"
private val scriptsFiles = "**/*.kts"

detekt {
buildUponDefaultConfig = true
parallel = true
autoCorrect = false
ignoreFailures = false
config.setFrom(configFile)
baseline = file(baselineFile)
}

tasks.withType<Detekt>().configureEach {
include(kotlinFiles)
exclude(resourceFiles, buildFiles, generatedFiles, scriptsFiles)
reports {
html.required.set(true)
xml.required.set(false)
txt.required.set(false)
}
}

tasks.withType<Detekt>().configureEach {
jvmTarget = JavaVersion.VERSION_17.toString()
}
tasks.withType<DetektCreateBaselineTask>().configureEach {
jvmTarget = JavaVersion.VERSION_17.toString()
}
22 changes: 0 additions & 22 deletions buildSrc/src/main/kotlin/tachiyomi.lint.gradle.kts

This file was deleted.

1,327 changes: 1,327 additions & 0 deletions config/detekt/baseline.xml

Large diffs are not rendered by default.

19 changes: 19 additions & 0 deletions config/detekt/detekt.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
naming:
FunctionNaming:
functionPattern: '[a-z][a-zA-Z0-9]*'
ignoreAnnotated: [ 'Composable' ]
TopLevelPropertyNaming:
constantPattern: '[A-Z][A-Za-z0-9]*'

complexity:
LongParameterList:
functionThreshold: 6
constructorThreshold: 7
ignoreDefaultParameters: true

style:
MagicNumber:
ignorePropertyDeclaration: true
ignoreCompanionObjectPropertyDeclaration: true
UnusedPrivateMember:
ignoreAnnotated: [ 'Preview' ]
2 changes: 0 additions & 2 deletions gradle/compose.versions.toml
Original file line number Diff line number Diff line change
Expand Up @@ -23,5 +23,3 @@ glance = "androidx.glance:glance-appwidget:1.0.0"

accompanist-webview = { module = "com.google.accompanist:accompanist-webview", version.ref = "accompanist" }
accompanist-systemuicontroller = { module = "com.google.accompanist:accompanist-systemuicontroller", version.ref = "accompanist" }

lintchecks = { module = "com.slack.lint.compose:compose-lint-checks", version = "1.2.0" }
6 changes: 5 additions & 1 deletion gradle/libs.versions.toml
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@ shizuku_version = "12.2.0"
sqldelight = "2.0.0"
sqlite = "2.4.0"
voyager = "1.0.0"
detekt = "1.23.1"
detektCompose = "0.3.11"

[libraries]
desugar = "com.android.tools:desugar_jdk_libs:2.0.4"
Expand Down Expand Up @@ -93,7 +95,9 @@ voyager-screenmodel = { module = "cafe.adriel.voyager:voyager-screenmodel", vers
voyager-tab-navigator = { module = "cafe.adriel.voyager:voyager-tab-navigator", version.ref = "voyager" }
voyager-transitions = { module = "cafe.adriel.voyager:voyager-transitions", version.ref = "voyager" }

ktlint = "org.jlleitschuh.gradle:ktlint-gradle:12.0.3"
detekt-gradlePlugin = { module = "io.gitlab.arturbosch.detekt:detekt-gradle-plugin", version.ref = "detekt" }
detekt-rules-formatting = { module = "io.gitlab.arturbosch.detekt:detekt-formatting", version.ref = "detekt" }
detekt-rules-compose = { module = "io.nlopez.compose.rules:detekt", version.ref = "detektCompose" }

[bundles]
okhttp = ["okhttp-core", "okhttp-logging", "okhttp-brotli", "okhttp-dnsoverhttps"]
Expand Down
1 change: 0 additions & 1 deletion presentation-core/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,6 @@ dependencies {
debugImplementation(compose.ui.tooling)
implementation(compose.ui.tooling.preview)
implementation(compose.ui.util)
lintChecks(compose.lintchecks)

implementation(kotlinx.immutables)
}
Expand Down
1 change: 0 additions & 1 deletion presentation-widget/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@ dependencies {
api(projects.i18n)

implementation(compose.glance)
lintChecks(compose.lintchecks)

implementation(kotlinx.immutables)

Expand Down

0 comments on commit cc09230

Please sign in to comment.