From 4ce4558996888e1e5277cd8fb1a0c360e01fb1a0 Mon Sep 17 00:00:00 2001 From: Segun Famisa Date: Wed, 23 Sep 2026 12:16:23 +0200 Subject: [PATCH] Bug 2074093 - Update detekt's LongParameterList rule to allow up to 9 constructor parameters Note - the behaviour of this rule changed in the next version. For version 1.23.8 we had to set the `constructorThreshold` to 10, to allow 9 parameters. In version 1.23.8, the threshold specifies the number from which a violation is reported, and in newer versions, the threshold specifies the number *after* which, a violation is reported. We should adjust the rule whenever we bump detekt's version. See https://github.com/detekt/detekt/issues/3679 for more info --- gradle/libs.versions.toml | 2 ++ .../browser/menu/item/BrowserMenuImageTextCheckboxButton.kt | 1 - .../mozilla/components/concept/engine/prompt/PromptRequest.kt | 1 - .../components/feature/listentopage/ListenMiddleware.kt | 1 - .../components/feature/syncedtabs/SyncedTabsFeature.kt | 1 - .../feature/webnotifications/WebNotificationFeature.kt | 1 - mobile/android/android-components/config/detekt.yml | 4 +++- .../samples/browser/integration/ContextMenuIntegration.kt | 2 +- .../org/mozilla/fenix/browser/OpenInAppOnboardingObserver.kt | 1 - .../java/org/mozilla/fenix/components/IntentProcessors.kt | 1 - .../org/mozilla/fenix/components/ipprotection/IPProtection.kt | 1 - .../components/menu/middleware/MenuNavigationMiddleware.kt | 1 - .../mozilla/fenix/components/toolbar/ToolbarsIntegration.kt | 1 - .../toolbar/gestures/ToolbarHorizontalGesturesHandler.kt | 2 +- .../collections/migration/CollectionsToTabGroupsMigration.kt | 1 - .../fenix/home/recentsyncedtabs/RecentSyncedTabFeature.kt | 1 - .../home/recentvisits/controller/RecentVisitsController.kt | 1 - .../java/org/mozilla/fenix/home/ui/HomeSwipeIntegration.kt | 1 - .../java/org/mozilla/fenix/library/history/HistoryView.kt | 1 - .../fenix/library/recentlyclosed/RecentlyClosedController.kt | 2 +- .../mozilla/fenix/search/BrowserToolbarSearchMiddleware.kt | 1 - .../mozilla/fenix/search/awesomebar/AwesomeBarComposable.kt | 1 - .../java/org/mozilla/fenix/settings/SyncPreferenceView.kt | 1 - .../fenix/settings/datachoices/DataChoicesMiddleware.kt | 1 - .../org/mozilla/fenix/settings/logins/ui/LoginsMiddleware.kt | 1 - .../java/org/mozilla/fenix/settings/studies/StudiesView.kt | 1 - .../fenix/settings/trustpanel/store/TrustPanelStore.kt | 1 - .../fenix/summarization/SummarizationStoreViewModel.kt | 1 - .../tabstray/browser/compose/interactable/InteractableGrid.kt | 1 - .../tabstray/browser/compose/interactable/InteractableList.kt | 1 - .../fenix/tabstray/browser/compose/legacy/ReorderableList.kt | 1 - .../fenix/tabstray/redux/middleware/TabStorageMiddleware.kt | 2 +- .../fenix/tabstray/syncedtabs/SyncedTabsIntegration.kt | 1 - .../java/org/mozilla/fenix/wallpapers/WallpapersUseCases.kt | 2 -- mobile/android/fenix/config/detekt.yml | 4 +++- .../focus/browser/integration/FullScreenIntegration.kt | 1 - mobile/android/focus-android/quality/detekt.yml | 4 +++- 37 files changed, 15 insertions(+), 37 deletions(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index db7d6a1f5ac0e..78327040f7c02 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -80,6 +80,8 @@ tomlj = "1.1.1" # Linters androidx-lint = "1.0.0" +# Fix LongParameterList thresholds to preserve behavior when we update from 1.23.8 +# see - https://github.com/detekt/detekt/issues/3679 detekt = "1.23.8" google-java-format = "1.28.0" ktfmt = "0.64" diff --git a/mobile/android/android-components/components/browser/menu/src/main/java/mozilla/components/browser/menu/item/BrowserMenuImageTextCheckboxButton.kt b/mobile/android/android-components/components/browser/menu/src/main/java/mozilla/components/browser/menu/item/BrowserMenuImageTextCheckboxButton.kt index a89d5da90b00c..06b8df6641bc3 100644 --- a/mobile/android/android-components/components/browser/menu/src/main/java/mozilla/components/browser/menu/item/BrowserMenuImageTextCheckboxButton.kt +++ b/mobile/android/android-components/components/browser/menu/src/main/java/mozilla/components/browser/menu/item/BrowserMenuImageTextCheckboxButton.kt @@ -35,7 +35,6 @@ import mozilla.components.support.ktx.android.util.dpToPx * @param isInPrimaryState Lambda to return true/false to indicate checkbox primary or secondary state. * @param onCheckedChangedListener Callback to be invoked when checkbox is clicked. */ -@Suppress("LongParameterList") class BrowserMenuImageTextCheckboxButton( @DrawableRes imageResource: Int, private val label: String, diff --git a/mobile/android/android-components/components/concept/engine/src/main/java/mozilla/components/concept/engine/prompt/PromptRequest.kt b/mobile/android/android-components/components/concept/engine/src/main/java/mozilla/components/concept/engine/prompt/PromptRequest.kt index 0a578d34e3427..39f384e16ae89 100644 --- a/mobile/android/android-components/components/concept/engine/src/main/java/mozilla/components/concept/engine/prompt/PromptRequest.kt +++ b/mobile/android/android-components/components/concept/engine/src/main/java/mozilla/components/concept/engine/prompt/PromptRequest.kt @@ -290,7 +290,6 @@ sealed class PromptRequest( * @property onClear callback that is called when the user requests the picker to be clear up. * @property onDismiss A callback executed when dismissed. */ - @Suppress("LongParameterList") class TimeSelection( val title: String, val initialDate: java.util.Date, diff --git a/mobile/android/android-components/components/feature/listentopage/src/main/java/mozilla/components/feature/listentopage/ListenMiddleware.kt b/mobile/android/android-components/components/feature/listentopage/src/main/java/mozilla/components/feature/listentopage/ListenMiddleware.kt index 0f60620348795..f7ef3e98e3c1a 100644 --- a/mobile/android/android-components/components/feature/listentopage/src/main/java/mozilla/components/feature/listentopage/ListenMiddleware.kt +++ b/mobile/android/android-components/components/feature/listentopage/src/main/java/mozilla/components/feature/listentopage/ListenMiddleware.kt @@ -62,7 +62,6 @@ import mozilla.components.support.ktx.kotlin.stripCommonSubdomains * @property ioDispatcher The dispatcher for the work that must not run on the thread the store dispatched on. * @property chunker Splits article text into the chunks. */ -@Suppress("LongParameterList") class ListenMiddleware( private val browserStore: BrowserStore, private val contentProvider: ContentProvider, diff --git a/mobile/android/android-components/components/feature/syncedtabs/src/main/java/mozilla/components/feature/syncedtabs/SyncedTabsFeature.kt b/mobile/android/android-components/components/feature/syncedtabs/src/main/java/mozilla/components/feature/syncedtabs/SyncedTabsFeature.kt index 664d612b7782a..80201fedd2752 100644 --- a/mobile/android/android-components/components/feature/syncedtabs/src/main/java/mozilla/components/feature/syncedtabs/SyncedTabsFeature.kt +++ b/mobile/android/android-components/components/feature/syncedtabs/src/main/java/mozilla/components/feature/syncedtabs/SyncedTabsFeature.kt @@ -36,7 +36,6 @@ import mozilla.components.support.base.feature.LifecycleAwareFeature * @param presenter See [SyncedTabsPresenter]. * @param interactor See [SyncedTabsInteractor]. */ -@Suppress("LongParameterList") class SyncedTabsFeature( context: Context, storage: SyncedTabsStorage, diff --git a/mobile/android/android-components/components/feature/webnotifications/src/main/java/mozilla/components/feature/webnotifications/WebNotificationFeature.kt b/mobile/android/android-components/components/feature/webnotifications/src/main/java/mozilla/components/feature/webnotifications/WebNotificationFeature.kt index cd9be9a9a1d48..fc0a749934ac0 100644 --- a/mobile/android/android-components/components/feature/webnotifications/src/main/java/mozilla/components/feature/webnotifications/WebNotificationFeature.kt +++ b/mobile/android/android-components/components/feature/webnotifications/src/main/java/mozilla/components/feature/webnotifications/WebNotificationFeature.kt @@ -49,7 +49,6 @@ internal const val NOTIFICATION_ID = 1 * @param activityClass The Activity that the notification will launch if user taps on it * @param coroutineContext An instance of [CoroutineContext] used for executing async site permission checks. */ -@Suppress("LongParameterList") class WebNotificationFeature( private val context: Context, private val engine: Engine, diff --git a/mobile/android/android-components/config/detekt.yml b/mobile/android/android-components/config/detekt.yml index a24d49b3d61bd..62b44634a329c 100644 --- a/mobile/android/android-components/config/detekt.yml +++ b/mobile/android/android-components/config/detekt.yml @@ -137,7 +137,9 @@ complexity: LongParameterList: active: true functionThreshold: 8 # (Default: 6) Increased in https://bugzilla.mozilla.org/show_bug.cgi?id=1872996 - constructorThreshold: 7 + # threshold of 10 means up to 9 parameters are allowed + # this behavior changed in detekt > 1.23.8 see - https://github.com/detekt/detekt/issues/3679 + constructorThreshold: 10 # Increased in https://bugzilla.mozilla.org/show_bug.cgi?id=2074093 ignoreDefaultParameters: true # Enabled in https://github.com/mozilla-mobile/android-components/issues/10835 ignoreDataClasses: true ignoreAnnotatedParameter: [] diff --git a/mobile/android/android-components/samples/browser/src/main/java/org/mozilla/samples/browser/integration/ContextMenuIntegration.kt b/mobile/android/android-components/samples/browser/src/main/java/org/mozilla/samples/browser/integration/ContextMenuIntegration.kt index dd5faf97fdc7c..e0b144c56f2e3 100644 --- a/mobile/android/android-components/samples/browser/src/main/java/org/mozilla/samples/browser/integration/ContextMenuIntegration.kt +++ b/mobile/android/android-components/samples/browser/src/main/java/org/mozilla/samples/browser/integration/ContextMenuIntegration.kt @@ -26,7 +26,7 @@ import mozilla.components.support.base.feature.LifecycleAwareFeature import mozilla.components.ui.widgets.DefaultSnackbarDelegate import org.mozilla.samples.browser.databinding.FragmentBrowserBinding -@Suppress("LongParameterList", "UndocumentedPublicClass") +@Suppress("UndocumentedPublicClass") class ContextMenuIntegration( context: Context, fragmentManager: FragmentManager, diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/browser/OpenInAppOnboardingObserver.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/browser/OpenInAppOnboardingObserver.kt index 7e15f775fe2e6..eae21c59c391f 100644 --- a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/browser/OpenInAppOnboardingObserver.kt +++ b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/browser/OpenInAppOnboardingObserver.kt @@ -28,7 +28,6 @@ import org.mozilla.fenix.ext.nav import org.mozilla.fenix.utils.Settings /** Displays an [InfoBanner] when a user visits a website that can be opened in an installed native app. */ -@Suppress("LongParameterList") class OpenInAppOnboardingObserver( private val context: Context, private val store: BrowserStore, diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/components/IntentProcessors.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/components/IntentProcessors.kt index a38a028db40eb..4e864da315672 100644 --- a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/components/IntentProcessors.kt +++ b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/components/IntentProcessors.kt @@ -29,7 +29,6 @@ import org.mozilla.fenix.perf.lazyMonitored import org.mozilla.fenix.shortcut.PasswordManagerIntentProcessor /** Component group for miscellaneous components. */ -@Suppress("LongParameterList") class IntentProcessors( private val context: Context, private val store: BrowserStore, diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/components/ipprotection/IPProtection.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/components/ipprotection/IPProtection.kt index a2f3b58abf0c4..27af02489c54e 100644 --- a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/components/ipprotection/IPProtection.kt +++ b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/components/ipprotection/IPProtection.kt @@ -34,7 +34,6 @@ data class IPProtectionAuthSources( ) /** Provides access to IP Protection related components. */ -@Suppress("LongParameterList") class IPProtection( val engine: Engine, val browserStore: BrowserStore, diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/components/menu/middleware/MenuNavigationMiddleware.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/components/menu/middleware/MenuNavigationMiddleware.kt index 3ffd018b33629..d81f81bc00ee2 100644 --- a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/components/menu/middleware/MenuNavigationMiddleware.kt +++ b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/components/menu/middleware/MenuNavigationMiddleware.kt @@ -63,7 +63,6 @@ import org.mozilla.fenix.webcompat.WebCompatReporterMoreInfoSender * @param webCompatReporterMoreInfoSender [WebCompatReporterMoreInfoSender] used to send WebCompat info to * webcompat.com. */ -@Suppress("LongParameterList") class MenuNavigationMiddleware( private val browserStore: BrowserStore, private val navController: NavController, diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/components/toolbar/ToolbarsIntegration.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/components/toolbar/ToolbarsIntegration.kt index a943e481510d0..4f9c63ef3a3a9 100644 --- a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/components/toolbar/ToolbarsIntegration.kt +++ b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/components/toolbar/ToolbarsIntegration.kt @@ -33,7 +33,6 @@ import org.mozilla.fenix.utils.Settings * @param topToolbarHeight The height of the top toolbar. * @param onToolbarsReset Callback to be invoked when the toolbars need to be reset. */ -@Suppress("LongParameterList") class ToolbarsIntegration( private val fullScreenFeature: () -> FullScreenFeature?, private val webAppHideToolbarFeature: () -> WebAppHideToolbarFeature?, diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/components/toolbar/gestures/ToolbarHorizontalGesturesHandler.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/components/toolbar/gestures/ToolbarHorizontalGesturesHandler.kt index fa9c217ba8319..ee3f5a7c1976f 100644 --- a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/components/toolbar/gestures/ToolbarHorizontalGesturesHandler.kt +++ b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/components/toolbar/gestures/ToolbarHorizontalGesturesHandler.kt @@ -42,7 +42,7 @@ import org.mozilla.fenix.ext.components import org.mozilla.fenix.ext.maxActiveTime /** Handles intercepting touch events on the toolbar for swipe gestures and executes the necessary animations. */ -@Suppress("LargeClass", "TooManyFunctions", "LongParameterList") +@Suppress("LargeClass", "TooManyFunctions") class ToolbarHorizontalGesturesHandler( private val activity: Activity, private val contentLayout: View, diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/home/collections/migration/CollectionsToTabGroupsMigration.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/home/collections/migration/CollectionsToTabGroupsMigration.kt index a7b8e86064078..d905939f79dae 100644 --- a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/home/collections/migration/CollectionsToTabGroupsMigration.kt +++ b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/home/collections/migration/CollectionsToTabGroupsMigration.kt @@ -45,7 +45,6 @@ private const val BREADCRUMB_CATEGORY = "CollectionsToTabGroupsMigration" * @param ioDispatcher The [CoroutineDispatcher] used for reading the collections' session snapshots from disk and * persisting the migration progress. */ -@Suppress("LongParameterList") class CollectionsToTabGroupsMigration( private val tabCollectionStorage: TabCollectionStorage, private val restoreUseCase: TabsUseCases.RestoreUseCase, diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/home/recentsyncedtabs/RecentSyncedTabFeature.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/home/recentsyncedtabs/RecentSyncedTabFeature.kt index c6da3e91d5029..4ed58047fa12a 100644 --- a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/home/recentsyncedtabs/RecentSyncedTabFeature.kt +++ b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/home/recentsyncedtabs/RecentSyncedTabFeature.kt @@ -46,7 +46,6 @@ import org.mozilla.fenix.components.appstate.AppAction * @param ioDispatcher The dispatcher to be used for background IO work. * @param currentTimeMillis provider for the current time in milliseconds, injectable for testing. */ -@Suppress("LongParameterList") class RecentSyncedTabFeature( private val context: Context, private val appStore: AppStore, diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/home/recentvisits/controller/RecentVisitsController.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/home/recentvisits/controller/RecentVisitsController.kt index 0d1d2d80ddf9c..f89906c959f13 100644 --- a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/home/recentvisits/controller/RecentVisitsController.kt +++ b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/home/recentvisits/controller/RecentVisitsController.kt @@ -59,7 +59,6 @@ interface RecentVisitsController { } /** The default implementation of [RecentVisitsController]. */ -@Suppress("LongParameterList") class DefaultRecentVisitsController( private val store: BrowserStore, private val appStore: AppStore, diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/home/ui/HomeSwipeIntegration.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/home/ui/HomeSwipeIntegration.kt index cbf208332990c..b594bc3efc42a 100644 --- a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/home/ui/HomeSwipeIntegration.kt +++ b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/home/ui/HomeSwipeIntegration.kt @@ -37,7 +37,6 @@ import org.mozilla.fenix.components.toolbar.gestures.ToolbarHorizontalGesturesHa * out yet. * @param tabPreview The [TabPreview] used to display the adjacent tab while swiping. */ -@Suppress("LongParameterList") class HomeSwipeIntegration( private val activity: Activity, private val store: BrowserStore, diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/library/history/HistoryView.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/library/history/HistoryView.kt index 9d80c29004bf7..6d2fe7b231d93 100644 --- a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/library/history/HistoryView.kt +++ b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/library/history/HistoryView.kt @@ -26,7 +26,6 @@ import org.mozilla.fenix.library.LibraryPageView import org.mozilla.fenix.theme.ThemeManager /** View that contains and configures the History List */ -@Suppress("LongParameterList") class HistoryView( container: ViewGroup, val store: HistoryFragmentStore, diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/library/recentlyclosed/RecentlyClosedController.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/library/recentlyclosed/RecentlyClosedController.kt index abb0defab4eff..8987507d1c9b5 100644 --- a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/library/recentlyclosed/RecentlyClosedController.kt +++ b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/library/recentlyclosed/RecentlyClosedController.kt @@ -49,7 +49,7 @@ interface RecentlyClosedController { fun handleBackPressed(): Boolean } -@Suppress("TooManyFunctions", "LongParameterList") +@Suppress("TooManyFunctions") class DefaultRecentlyClosedController( private val appStore: AppStore, private val navController: NavController, diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/search/BrowserToolbarSearchMiddleware.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/search/BrowserToolbarSearchMiddleware.kt index f6320dbf55aff..1a19f03082a5b 100644 --- a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/search/BrowserToolbarSearchMiddleware.kt +++ b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/search/BrowserToolbarSearchMiddleware.kt @@ -153,7 +153,6 @@ internal sealed class EditPageEndActionsInteractions : BrowserToolbarEvent { * @param scope [CoroutineScope] used for running long running operations in background. * @param autocompleteDispatcher [CoroutineContext] used for querying autocomplete suggestions. */ -@Suppress("LongParameterList") class BrowserToolbarSearchMiddleware( private val uiContext: Context, private val appStore: AppStore, diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/search/awesomebar/AwesomeBarComposable.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/search/awesomebar/AwesomeBarComposable.kt index 3e7cf01249c6b..9ade439f3e5c0 100644 --- a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/search/awesomebar/AwesomeBarComposable.kt +++ b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/search/awesomebar/AwesomeBarComposable.kt @@ -102,7 +102,6 @@ private fun Modifier.awesomeBarContentWidth(useAddressBarFocusMode: Boolean) = * @param searchAccessPoint Where search was started from. * @param isEdgeToEdgeBackgroundEnabled Whether the Edge2Edge background is enabled. */ -@Suppress("LongParameterList") class AwesomeBarComposable( private val activity: HomeActivity, private val fragment: Fragment, diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/SyncPreferenceView.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/SyncPreferenceView.kt index fa6334207569c..659929e2f361b 100644 --- a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/SyncPreferenceView.kt +++ b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/SyncPreferenceView.kt @@ -31,7 +31,6 @@ import mozilla.components.service.fxa.manager.SyncEnginesStorage * @param onReconnectClicked A callback executed when the [syncPreference] is clicked with a preference status of * "Reconnect". */ -@Suppress("LongParameterList") class SyncPreferenceView( private val syncPreference: SyncPreference, private val lifecycleOwner: LifecycleOwner, diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/datachoices/DataChoicesMiddleware.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/datachoices/DataChoicesMiddleware.kt index 8b2b7e36797fb..38ec545d1d7ad 100644 --- a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/datachoices/DataChoicesMiddleware.kt +++ b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/datachoices/DataChoicesMiddleware.kt @@ -23,7 +23,6 @@ import org.mozilla.fenix.ext.nav import org.mozilla.fenix.settings.SupportUtils import org.mozilla.fenix.utils.Settings -@Suppress("LongParameterList") internal class DataChoicesMiddleware( private val settings: Settings, private val nimbusSdk: NimbusApi, diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/logins/ui/LoginsMiddleware.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/logins/ui/LoginsMiddleware.kt index 615c57f312922..a223bab753f97 100644 --- a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/logins/ui/LoginsMiddleware.kt +++ b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/logins/ui/LoginsMiddleware.kt @@ -32,7 +32,6 @@ import org.mozilla.fenix.settings.SupportUtils * @param ioDispatcher Coroutine dispatcher for IO operations. * @param clipboardManager For copying logins URLs. */ -@Suppress("LongParameterList") internal class LoginsMiddleware( private val loginsStorage: LoginsStorage, private val getNavController: () -> NavController, diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/studies/StudiesView.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/studies/StudiesView.kt index 448666d669809..c41e54e32f309 100644 --- a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/studies/StudiesView.kt +++ b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/studies/StudiesView.kt @@ -33,7 +33,6 @@ import org.mozilla.fenix.settings.SupportUtils import org.mozilla.fenix.settings.SupportUtils.SumoTopic.OPT_OUT_STUDIES import org.mozilla.fenix.utils.Settings -@Suppress("LongParameterList") class StudiesView( private val scope: CoroutineScope, private val context: Context, diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/trustpanel/store/TrustPanelStore.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/trustpanel/store/TrustPanelStore.kt index bc3fdb874e430..64fa477c19818 100644 --- a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/trustpanel/store/TrustPanelStore.kt +++ b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/trustpanel/store/TrustPanelStore.kt @@ -25,7 +25,6 @@ class TrustPanelStore( reducer = ::reducer, middleware = middleware, ) { - @Suppress("LongParameterList") constructor( isTrackingProtectionEnabled: Boolean, websiteInfoState: WebsiteInfoState, diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/summarization/SummarizationStoreViewModel.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/summarization/SummarizationStoreViewModel.kt index 72c8315a00621..7e1646e14e5d6 100644 --- a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/summarization/SummarizationStoreViewModel.kt +++ b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/summarization/SummarizationStoreViewModel.kt @@ -45,7 +45,6 @@ import mozilla.components.feature.summarize.summarizationReducer * embedded settings screen. * @param errorReporter reports caught exceptions to the crash reporting service. */ -@Suppress("LongParameterList") class SummarizationStoreViewModel( currentTab: SessionState?, initializedFromShake: Boolean, diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/tabstray/browser/compose/interactable/InteractableGrid.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/tabstray/browser/compose/interactable/InteractableGrid.kt index 1e2d3ddeb1b95..6010883ea5985 100644 --- a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/tabstray/browser/compose/interactable/InteractableGrid.kt +++ b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/tabstray/browser/compose/interactable/InteractableGrid.kt @@ -175,7 +175,6 @@ interface GridInteractionState { * @param ignoredItems List of keys for non-draggable items. * @param liveReorderEnabled Whether item reorders should happen 'live' during a drag. */ -@Suppress("LongParameterList") class GridInteractionStateImpl internal constructor( private val gridState: LazyGridState, diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/tabstray/browser/compose/interactable/InteractableList.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/tabstray/browser/compose/interactable/InteractableList.kt index 745016e1cca70..2e92c8f6f94da 100644 --- a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/tabstray/browser/compose/interactable/InteractableList.kt +++ b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/tabstray/browser/compose/interactable/InteractableList.kt @@ -155,7 +155,6 @@ interface ListInteractionState { * @param liveReorderEnabled Whether reordering should happen 'live' while a drag is active. * @param onLongPress Optional callback to be invoked when long pressing an item. */ -@Suppress("LongParameterList") class ListInteractionStateImpl internal constructor( private val listState: LazyListState, diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/tabstray/browser/compose/legacy/ReorderableList.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/tabstray/browser/compose/legacy/ReorderableList.kt index 4a23c981222fc..665caf863ebd3 100644 --- a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/tabstray/browser/compose/legacy/ReorderableList.kt +++ b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/tabstray/browser/compose/legacy/ReorderableList.kt @@ -82,7 +82,6 @@ fun createListReorderState( * @param onLongPress Optional callback to be invoked when long pressing an item. * @param onExitLongPress Optional callback to be invoked when the item is dragged after long press. */ -@Suppress("LongParameterList") class ListReorderState internal constructor( private val listState: LazyListState, diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/tabstray/redux/middleware/TabStorageMiddleware.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/tabstray/redux/middleware/TabStorageMiddleware.kt index 7e0e79c04624f..0dbdff557776a 100644 --- a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/tabstray/redux/middleware/TabStorageMiddleware.kt +++ b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/tabstray/redux/middleware/TabStorageMiddleware.kt @@ -89,7 +89,7 @@ internal data class MutableTabGroup( * @param scope The [CoroutineScope] for running the tab data transformation off of the main thread. * @param mainScope The [CoroutineScope] used for returning to the main thread. */ -@Suppress("LargeClass", "LongParameterList") +@Suppress("LargeClass") class TabStorageMiddleware( private val inactiveTabsEnabled: Boolean, private val tabGroupsEnabled: Boolean, diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/tabstray/syncedtabs/SyncedTabsIntegration.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/tabstray/syncedtabs/SyncedTabsIntegration.kt index be25fb7211a5c..bf5ffc392b6f4 100644 --- a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/tabstray/syncedtabs/SyncedTabsIntegration.kt +++ b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/tabstray/syncedtabs/SyncedTabsIntegration.kt @@ -33,7 +33,6 @@ import org.mozilla.fenix.tabstray.redux.store.TabsTrayStore * @param accountManager An instance of [FxaAccountManager] used for synced tabs authentication. * @param lifecycleOwner View lifecycle owner used to determine when to cancel UI jobs. */ -@Suppress("LongParameterList") class SyncedTabsIntegration( private val store: TabsTrayStore, private val context: Context, diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/wallpapers/WallpapersUseCases.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/wallpapers/WallpapersUseCases.kt index 9227cfb45f849..05d84c3d2f1fa 100644 --- a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/wallpapers/WallpapersUseCases.kt +++ b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/wallpapers/WallpapersUseCases.kt @@ -30,7 +30,6 @@ import org.mozilla.fenix.utils.Settings * @param currentLocale The locale currently being used on the device. * @param getDisplaySize Returns the current size of the display, in pixels, that a full screen wallpaper has to cover. */ -@Suppress("LongParameterList") class WallpapersUseCases( settings: Settings, filesDir: File, @@ -108,7 +107,6 @@ class WallpapersUseCases( suspend operator fun invoke() } - @Suppress("LongParameterList") @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE) internal class DefaultInitializeWallpaperUseCase( private val appStore: AppStore, diff --git a/mobile/android/fenix/config/detekt.yml b/mobile/android/fenix/config/detekt.yml index 89a3859e8ecf6..f9fcb5e752616 100644 --- a/mobile/android/fenix/config/detekt.yml +++ b/mobile/android/fenix/config/detekt.yml @@ -140,7 +140,9 @@ complexity: LongParameterList: active: true functionThreshold: 8 # (Default: 6) Increased in https://bugzilla.mozilla.org/show_bug.cgi?id=1872996 - constructorThreshold: 7 + # threshold of 10 means up to 9 parameters are allowed + # this behavior changed in detekt > 1.23.8 see - https://github.com/detekt/detekt/issues/3679 + constructorThreshold: 10 # Increased in https://bugzilla.mozilla.org/show_bug.cgi?id=2074093 ignoreDefaultParameters: true # Enabled in https://github.com/mozilla-mobile/android-components/issues/10835 ignoreDataClasses: true ignoreAnnotatedParameter: [] diff --git a/mobile/android/focus-android/app/src/main/java/org/mozilla/focus/browser/integration/FullScreenIntegration.kt b/mobile/android/focus-android/app/src/main/java/org/mozilla/focus/browser/integration/FullScreenIntegration.kt index ca6c1b293d94b..44fde423fe4c7 100644 --- a/mobile/android/focus-android/app/src/main/java/org/mozilla/focus/browser/integration/FullScreenIntegration.kt +++ b/mobile/android/focus-android/app/src/main/java/org/mozilla/focus/browser/integration/FullScreenIntegration.kt @@ -27,7 +27,6 @@ import org.mozilla.focus.ext.hide import org.mozilla.focus.ext.showAsFixed /** Integration for the full-screen feature, managing immersive mode and toolbar visibility. */ -@Suppress("LongParameterList") class FullScreenIntegration( val activity: Activity, val store: BrowserStore, diff --git a/mobile/android/focus-android/quality/detekt.yml b/mobile/android/focus-android/quality/detekt.yml index 789c20abe68ac..799fe3780fbef 100644 --- a/mobile/android/focus-android/quality/detekt.yml +++ b/mobile/android/focus-android/quality/detekt.yml @@ -141,7 +141,9 @@ complexity: LongParameterList: active: true functionThreshold: 8 # (Default: 6) Increased in https://bugzilla.mozilla.org/show_bug.cgi?id=1872996 - constructorThreshold: 7 + # threshold of 10 means up to 9 parameters are allowed + # this behavior changed in detekt > 1.23.8 see - https://github.com/detekt/detekt/issues/3679 + constructorThreshold: 10 # Increased in https://bugzilla.mozilla.org/show_bug.cgi?id=2074093 ignoreDefaultParameters: true # Enabled in https://github.com/mozilla-mobile/android-components/issues/10835 ignoreDataClasses: true ignoreAnnotatedParameter: []