From 769c0dbb6a906f68b50833a28d64afeda1fb9359 Mon Sep 17 00:00:00 2001 From: Naveen Singh <36371707+naveensingh@users.noreply.github.com> Date: Thu, 3 Jul 2025 21:16:27 +0530 Subject: [PATCH] chore: ignore extra translations and update detekt rules * chore: ignore extra translations in lint Extra translations are removed automatically by Weblate * chore: update detekt rules More compose-friendly * chore: update lint baselines --- app/build.gradle.kts | 4 +++ app/detekt-baseline.xml | 8 ------ app/lint-baseline.xml | 27 ++++++------------ detekt.yml | 58 +++++++++++++++++++++++++++++++++++++++ gradle/libs.versions.toml | 3 ++ lint.xml | 1 + 6 files changed, 74 insertions(+), 27 deletions(-) create mode 100644 detekt.yml diff --git a/app/build.gradle.kts b/app/build.gradle.kts index ae08ec30..c35cf4cc 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -128,6 +128,9 @@ android { detekt { baseline = file("detekt-baseline.xml") + config.setFrom("$rootDir/detekt.yml") + buildUponDefaultConfig = true + allRules = false } dependencies { @@ -139,4 +142,5 @@ dependencies { implementation(libs.gestureviews) implementation(libs.autofittextview) implementation(libs.zip4j) + detektPlugins(libs.compose.detekt) } diff --git a/app/detekt-baseline.xml b/app/detekt-baseline.xml index 96e88185..21d2112b 100644 --- a/app/detekt-baseline.xml +++ b/app/detekt-baseline.xml @@ -22,10 +22,6 @@ EmptyFunctionBlock:MimeTypesActivity.kt$MimeTypesActivity${} EmptyFunctionBlock:StorageFragment.kt$StorageFragment${} LargeClass:ItemsAdapter.kt$ItemsAdapter : MyRecyclerViewAdapterOnPopupTextUpdate - LongMethod:DecompressActivity.kt$DecompressActivity$private fun fillAllListItems(uri: Uri, callback: () -> Unit) - LongMethod:ItemsAdapter.kt$ItemsAdapter$@SuppressLint("NewApi") private fun compressPaths(sourcePaths: List<String>, targetPath: String, password: String? = null): Boolean - LongMethod:MimeTypesActivity.kt$MimeTypesActivity$private fun getProperFileDirItems(callback: (ArrayList<FileDirItem>) -> Unit) - LongParameterList:ItemsAdapter.kt$ItemsAdapter$( activity: SimpleActivity, var listItems: MutableList<ListItem>, private val listener: ItemOperationsListener?, recyclerView: MyRecyclerView, private val isPickMultipleIntent: Boolean, private val swipeRefreshLayout: SwipeRefreshLayout?, canHaveIndividualViewType: Boolean = true, itemClick: (Any) -> Unit, ) LoopWithTooManyJumpStatements:DecompressActivity.kt$DecompressActivity$while LoopWithTooManyJumpStatements:StorageFragment.kt$StorageFragment$do MagicNumber:Config.kt$Config$1.2f @@ -39,15 +35,11 @@ MagicNumber:ItemsAdapter.kt$ItemsAdapter$180 MagicNumber:ItemsAdapter.kt$ItemsAdapter$4 MagicNumber:ItemsFragment.kt$ItemsFragment$3 - MagicNumber:Long.kt$1000.0 - MagicNumber:MimeTypesActivity.kt$MimeTypesActivity$1000 MagicNumber:ReadTextActivity.kt$ReadTextActivity$250 MagicNumber:ReadTextActivity.kt$ReadTextActivity$50 - MagicNumber:RecentsFragment.kt$RecentsFragment$1000 MagicNumber:RecentsFragment.kt$RecentsFragment$3 MagicNumber:RecentsFragment.kt$RecentsFragment$50 MagicNumber:RootHelpers.kt$RootHelpers.<no name provided>$5 - MagicNumber:StorageFragment.kt$StorageFragment$1000 MagicNumber:StorageFragment.kt$StorageFragment$100000 MagicNumber:StorageFragment.kt$StorageFragment$2000 MagicNumber:StorageFragment.kt$StorageFragment$3 diff --git a/app/lint-baseline.xml b/app/lint-baseline.xml index 63084669..2b2184b5 100644 --- a/app/lint-baseline.xml +++ b/app/lint-baseline.xml @@ -30,21 +30,10 @@ errorLine2=" ~~~~"> - - - - + id="AndroidGradlePluginVersion" + message="A newer version of com.android.application than 8.10.1 is available: 8.11.0" + errorLine1="gradlePlugins-agp = "8.10.1"" + errorLine2=" ~~~~~~~~"> + line="19" + column="21"/> diff --git a/detekt.yml b/detekt.yml new file mode 100644 index 00000000..6472c5a3 --- /dev/null +++ b/detekt.yml @@ -0,0 +1,58 @@ +build: + maxIssues: 0 + weights: + complexity: 2 + LongParameterList: 2 + style: 1 + +processors: + active: true + exclude: + - "FunctionCountProcessor" + - "PropertyCountProcessor" + +config: + validation: true + +complexity: + LongParameterList: + active: true + functionThreshold: 10 + constructorThreshold: 8 + ignoreDefaultParameters: true + ignoreAnnotated: + - "Composable" + LongMethod: + active: true + threshold: 120 + ignoreAnnotated: + - "Composable" + - "Preview" + +style: + MagicNumber: + active: true + ignoreAnnotated: ["Composable"] + ignoreEnums: true + ignoreNumbers: ["-1", "0", "1", "2", "42", "1000"] + MaxLineLength: + active: true + maxLineLength: 120 + excludePackageStatements: true + excludeImportStatements: true + +naming: + FunctionNaming: + active: true + ignoreAnnotated: ["Composable", "Preview"] + functionPattern: "[a-z][A-Za-z0-9]*" + +Compose: # io.nlopez.compose.rules + ComposableParametersOrdering: + active: true + ModifierDefaultValue: + active: true + MissingModifierDefaultValue: + active: true + PublicComposablePreview: + active: true diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 4ee956d9..3da71df7 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -3,6 +3,7 @@ kotlin = "2.2.0" #Detekt detekt = "1.23.8" +detektCompose = "0.4.22" #AndroidX androidx-swiperefreshlayout = "1.1.0" androidx-documentfile = "1.1.0" @@ -26,6 +27,8 @@ app-build-kotlinJVMTarget = "17" #AndroidX androidx-swiperefreshlayout = { module = "androidx.swiperefreshlayout:swiperefreshlayout", version.ref = "androidx-swiperefreshlayout" } androidx-documentfile = { module = "androidx.documentfile:documentfile", version.ref = "androidx-documentfile" } +#Compose +compose-detekt = { module = "io.nlopez.compose.rules:detekt", version.ref = "detektCompose" } #Fossify fossify-commons = { module = "org.fossify:commons", version.ref = "commons" } #Other diff --git a/lint.xml b/lint.xml index 05685cd8..4b4a7825 100644 --- a/lint.xml +++ b/lint.xml @@ -31,4 +31,5 @@ +