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 @@
+