From 251248f21a0de3089d31286291d479e03ffc543e Mon Sep 17 00:00:00 2001 From: Naveen Singh <36371707+naveensingh@users.noreply.github.com> Date: Thu, 3 Jul 2025 21:17:43 +0530 Subject: [PATCH] chore: ignore extra translations in lint (#451) * 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 | 28 ------------------- app/lint-baseline.xml | 18 ++++++------ detekt.yml | 58 +++++++++++++++++++++++++++++++++++++++ gradle/libs.versions.toml | 3 ++ lint.xml | 1 + 6 files changed, 75 insertions(+), 37 deletions(-) create mode 100644 detekt.yml diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 27b27894..ad4c95b5 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -132,6 +132,9 @@ android { detekt { baseline = file("detekt-baseline.xml") + config.setFrom("$rootDir/detekt.yml") + buildUponDefaultConfig = true + allRules = false } dependencies { @@ -147,4 +150,5 @@ dependencies { implementation(libs.kotlinx.serialization.json) implementation(libs.bundles.room) ksp(libs.androidx.room.compiler) + detektPlugins(libs.compose.detekt) } diff --git a/app/detekt-baseline.xml b/app/detekt-baseline.xml index 1b77bb60..515a9b6d 100644 --- a/app/detekt-baseline.xml +++ b/app/detekt-baseline.xml @@ -27,36 +27,15 @@ ForbiddenComment:SmsStatusDeliveredReceiver.kt$SmsStatusDeliveredReceiver$// TODO: Need to check whether SC still trying to deliver the SMS to destination and will send the report again? FunctionParameterNaming:Config.kt$Config$SIMId: Int LargeClass:ThreadActivity.kt$ThreadActivity : SimpleActivity - LongMethod:Context.kt$@SuppressLint("NewApi") fun Context.getMmsAttachment(id: Long, getImageResolutions: Boolean): MessageAttachment - LongMethod:Context.kt$fun Context.getConversations( threadId: Long? = null, privateContacts: ArrayList<SimpleContact> = ArrayList(), ): ArrayList<Conversation> - LongMethod:Context.kt$fun Context.getMMS( threadId: Long? = null, getImageResolutions: Boolean = false, sortOrder: String? = null, dateFrom: Int = -1, ): ArrayList<Message> - LongMethod:Context.kt$fun Context.getMessages( threadId: Long, getImageResolutions: Boolean, dateFrom: Int = -1, includeScheduledMessages: Boolean = true, limit: Int = MESSAGES_LIMIT, ): ArrayList<Message> - LongMethod:MainActivity.kt$MainActivity$private fun getNewConversations(cachedConversations: ArrayList<Conversation>) - LongMethod:MainActivity.kt$MainActivity$private fun showSearchResults( messages: List<Message>, conversations: List<Conversation>, searchedText: String, ) - LongMethod:MessagesReader.kt$MessagesReader$@SuppressLint("NewApi") private fun getParts(mmsId: Long): List<MmsPart> - LongMethod:MessagesReader.kt$MessagesReader$private fun getMmsMessages( threadIds: List<Long>, includeTextOnlyAttachment: Boolean = false ): List<MmsBackup> LongMethod:NotificationHelper.kt$NotificationHelper$@SuppressLint("NewApi") fun showMessageNotification( messageId: Long, address: String, body: String, threadId: Long, bitmap: Bitmap?, sender: String?, alertOnlyOnce: Boolean = false ) - LongMethod:ThreadActivity.kt$ThreadActivity$private fun setupAttachmentPickerView() - LongMethod:ThreadActivity.kt$ThreadActivity$private fun setupButtons() - LongMethod:ThreadActivity.kt$ThreadActivity$private fun setupThread() - LongParameterList:AttachmentPreviews.kt$( activity: Activity, uri: Uri, attachment: Boolean = false, onClick: (() -> Unit)? = null, onLongClick: (() -> Unit)? = null, onVCardLoaded: (() -> Unit)? = null, ) - LongParameterList:AttachmentPreviews.kt$( uri: Uri, title: String, mimeType: String, onClick: (() -> Unit)? = null, onLongClick: (() -> Unit)? = null, onRemoveButtonClicked: (() -> Unit)? = null ) - LongParameterList:Context.kt$( address: String, subject: String, body: String, date: Long, read: Int, threadId: Long, type: Int, subscriptionId: Int, ) - LongParameterList:Context.kt$( uri: Uri, projection: Array<String>, selection: String? = null, selectionArgs: Array<String>? = null, sortOrder: String? = null, callback: (cursor: Cursor) -> Unit, ) - LongParameterList:MessagingUtils.kt$MessagingUtils$( subId: Int, dest: String, text: String, timestamp: Long, threadId: Long, status: Int = Sms.STATUS_NONE, type: Int = Sms.MESSAGE_TYPE_OUTBOX, messageId: Long? = null ) - LongParameterList:NotificationHelper.kt$NotificationHelper$( messageId: Long, address: String, body: String, threadId: Long, bitmap: Bitmap?, sender: String?, alertOnlyOnce: Boolean = false ) LongParameterList:SmsReceiver.kt$SmsReceiver$( context: Context, address: String, subject: String, body: String, date: Long, read: Int, threadId: Long, type: Int, subscriptionId: Int, status: Int ) - LongParameterList:SmsSender.kt$SmsSender$( subId: Int, dest: String, messages: ArrayList<String>, serviceCenter: String?, requireDeliveryReport: Boolean, messageUri: Uri ) - LongParameterList:SmsSender.kt$SmsSender$( subId: Int, destination: String, body: String, serviceCenter: String?, requireDeliveryReport: Boolean, messageUri: Uri ) MagicNumber:Activity.kt$1000000 MagicNumber:BaseConversationsAdapter.kt$BaseConversationsAdapter$0.7f MagicNumber:BaseConversationsAdapter.kt$BaseConversationsAdapter$0.8f MagicNumber:BaseConversationsAdapter.kt$BaseConversationsAdapter$0.9f MagicNumber:BaseConversationsAdapter.kt$BaseConversationsAdapter$1.2f - MagicNumber:BaseConversationsAdapter.kt$BaseConversationsAdapter$1000L MagicNumber:ContactsAdapter.kt$ContactsAdapter$1.2f MagicNumber:Context.kt$10 - MagicNumber:Context.kt$1000 MagicNumber:Context.kt$500L MagicNumber:ImageCompressor.kt$ImageCompressor$0.6f MagicNumber:ImageCompressor.kt$ImageCompressor$100 @@ -68,11 +47,8 @@ MagicNumber:ImageCompressor.kt$ImageCompressor$6 MagicNumber:ImageCompressor.kt$ImageCompressor$8 MagicNumber:ImageCompressor.kt$ImageCompressor$90f - MagicNumber:MainActivity.kt$MainActivity$1000L MagicNumber:MainActivity.kt$MainActivity$30 - MagicNumber:Message.kt$Message$1000L MagicNumber:Message.kt$Message.Companion$31 - MagicNumber:MessageDetailsDialog.kt$MessageDetailsDialog$1000L MagicNumber:MessagesDatabase.kt$MessagesDatabase.Companion.<no name provided>$3 MagicNumber:MessagesDatabase.kt$MessagesDatabase.Companion.<no name provided>$4 MagicNumber:MessagesDatabase.kt$MessagesDatabase.Companion.<no name provided>$5 @@ -93,7 +69,6 @@ MagicNumber:SettingsActivity.kt$SettingsActivity$6 MagicNumber:SettingsActivity.kt$SettingsActivity$7 MagicNumber:ShortcutHelper.kt$ShortcutHelper$99 - MagicNumber:SmsReceiver.kt$SmsReceiver$1000 MagicNumber:SmsStatusDeliveredReceiver.kt$SmsStatusDeliveredReceiver$0x03 MagicNumber:SmsStatusDeliveredReceiver.kt$SmsStatusDeliveredReceiver$0x3f MagicNumber:SmsStatusDeliveredReceiver.kt$SmsStatusDeliveredReceiver$16 @@ -101,8 +76,6 @@ MagicNumber:SmsStatusDeliveredReceiver.kt$SmsStatusDeliveredReceiver$3 MagicNumber:ThreadActivity.kt$ThreadActivity$0.4f MagicNumber:ThreadActivity.kt$ThreadActivity$0.9f - MagicNumber:ThreadActivity.kt$ThreadActivity$1000 - MagicNumber:ThreadActivity.kt$ThreadActivity$1000L MagicNumber:ThreadActivity.kt$ThreadActivity$14 MagicNumber:ThreadActivity.kt$ThreadActivity$15 MagicNumber:ThreadActivity.kt$ThreadActivity$150 @@ -113,7 +86,6 @@ MagicNumber:ThreadActivity.kt$ThreadActivity$300 MagicNumber:ThreadActivity.kt$ThreadActivity$500L MagicNumber:ThreadAdapter.kt$ThreadAdapter$0.8f - MagicNumber:ThreadAdapter.kt$ThreadAdapter$1000L MagicNumber:ThreadAdapter.kt$ThreadAdapter$4 MagicNumber:VCardViewerAdapter.kt$VCardViewerAdapter.VCardContactViewHolder$1.1f MagicNumber:VCardViewerAdapter.kt$VCardViewerAdapter.VCardPropertyViewHolder$1.1f diff --git a/app/lint-baseline.xml b/app/lint-baseline.xml index 95302874..1ce83a80 100644 --- a/app/lint-baseline.xml +++ b/app/lint-baseline.xml @@ -18,8 +18,8 @@ errorLine1="app-build-targetSDK = "34"" errorLine2=" ~~~~"> @@ -40,7 +40,7 @@ errorLine1="distributionUrl=https\://services.gradle.org/distributions/gradle-8.11.1-bin.zip" errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> @@ -51,8 +51,8 @@ errorLine1="gradlePlugins-agp = "8.10.1"" errorLine2=" ~~~~~~~~"> @@ -62,8 +62,8 @@ errorLine1="androidx-lifecycleprocess = "2.8.7"" errorLine2=" ~~~~~~~"> @@ -73,8 +73,8 @@ errorLine1="app-build-compileSDKVersion = "34"" errorLine2=" ~~~~"> 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 6e08e8cd..3bfe3604 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -6,6 +6,7 @@ kotlinxSerializationJson = "1.8.1" ksp = "2.1.21-2.0.2" #Detekt detekt = "1.23.8" +detektCompose = "0.4.22" #AndroidX androidx-constraintlayout = "2.2.1" androidx-swiperefreshlayout = "1.1.0" @@ -38,6 +39,8 @@ androidx-swiperefreshlayout = { module = "androidx.swiperefreshlayout:swiperefre androidx-room-runtime = { module = "androidx.room:room-runtime", version.ref = "room" } androidx-room-ktx = { module = "androidx.room:room-ktx", version.ref = "room" } androidx-room-compiler = { module = "androidx.room:room-compiler", version.ref = "room" } +#Compose +compose-detekt = { module = "io.nlopez.compose.rules:detekt", version.ref = "detektCompose" } #Fossify fossify-commons = { module = "org.fossify:commons", version.ref = "commons" } indicator-fast-scroll = { module = "org.fossify:IndicatorFastScroll", version.ref = "indicator-fast-scroll" } diff --git a/lint.xml b/lint.xml index 05685cd8..4b4a7825 100644 --- a/lint.xml +++ b/lint.xml @@ -31,4 +31,5 @@ +