From 72b3decf4cb9da4ee18af5146068f8156008d3d6 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Fri, 5 Dec 2025 09:45:23 +0100 Subject: [PATCH] Detekt: enable rule `exceptions.SwallowedException` and fix existing issue. --- .../lockscreen/impl/pin/DefaultPinCodeManager.kt | 2 +- .../messages/impl/timeline/debug/EventDebugInfoView.kt | 2 +- .../libraries/androidutils/browser/ChromeCustomTab.kt | 2 +- .../android/libraries/androidutils/hash/Hash.kt | 2 +- .../libraries/androidutils/system/SystemUtils.kt | 10 +++++----- .../io/element/android/libraries/core/hash/Hash.kt | 2 +- .../io/element/android/libraries/core/uri/UrlUtils.kt | 2 +- .../impl/FullScreenIntentPermissionsPresenter.kt | 2 +- .../android/libraries/matrix/api/roomlist/RoomList.kt | 2 +- .../libraries/matrix/impl/room/RoomSyncSubscriber.kt | 2 +- .../matrix/impl/roomlist/RoomListExtensions.kt | 2 +- .../libraries/matrix/impl/widget/RustWidgetDriver.kt | 2 +- .../push/impl/troubleshoot/PushLoopbackTest.kt | 2 +- .../libraries/pushproviders/firebase/FirebaseStore.kt | 2 +- .../io/element/android/tests/testutils/LongTask.kt | 2 +- tools/detekt/detekt.yml | 2 +- 16 files changed, 20 insertions(+), 20 deletions(-) diff --git a/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/pin/DefaultPinCodeManager.kt b/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/pin/DefaultPinCodeManager.kt index 1ebf00dd10..091432044a 100644 --- a/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/pin/DefaultPinCodeManager.kt +++ b/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/pin/DefaultPinCodeManager.kt @@ -71,7 +71,7 @@ class DefaultPinCodeManager( lockScreenStore.onWrongPin() } } - } catch (failure: Throwable) { + } catch (_: Throwable) { false } } diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/debug/EventDebugInfoView.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/debug/EventDebugInfoView.kt index 8a19b88b26..3b0448ddb3 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/debug/EventDebugInfoView.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/debug/EventDebugInfoView.kt @@ -112,7 +112,7 @@ fun EventDebugInfoView( private fun prettyJSON(maybeJSON: String): String { return try { JSONObject(maybeJSON).toString(2) - } catch (e: JSONException) { + } catch (_: JSONException) { // Prefer not pretty-printing over crashing if the data is not actually JSON maybeJSON } diff --git a/libraries/androidutils/src/main/kotlin/io/element/android/libraries/androidutils/browser/ChromeCustomTab.kt b/libraries/androidutils/src/main/kotlin/io/element/android/libraries/androidutils/browser/ChromeCustomTab.kt index 198518466b..6650f70ecb 100644 --- a/libraries/androidutils/src/main/kotlin/io/element/android/libraries/androidutils/browser/ChromeCustomTab.kt +++ b/libraries/androidutils/src/main/kotlin/io/element/android/libraries/androidutils/browser/ChromeCustomTab.kt @@ -60,7 +60,7 @@ fun Activity.openUrlInChromeCustomTab( }) } .launchUrl(this, url.toUri()) - } catch (activityNotFoundException: ActivityNotFoundException) { + } catch (_: ActivityNotFoundException) { openUrlInExternalApp(url) } } diff --git a/libraries/androidutils/src/main/kotlin/io/element/android/libraries/androidutils/hash/Hash.kt b/libraries/androidutils/src/main/kotlin/io/element/android/libraries/androidutils/hash/Hash.kt index 211b60a602..b699054ff0 100644 --- a/libraries/androidutils/src/main/kotlin/io/element/android/libraries/androidutils/hash/Hash.kt +++ b/libraries/androidutils/src/main/kotlin/io/element/android/libraries/androidutils/hash/Hash.kt @@ -20,7 +20,7 @@ fun String.hash() = try { digest.digest() .joinToString("") { String.format(Locale.ROOT, "%02X", it) } .lowercase(Locale.ROOT) -} catch (exc: Exception) { +} catch (_: Exception) { // Should not happen, but just in case hashCode().toString() } diff --git a/libraries/androidutils/src/main/kotlin/io/element/android/libraries/androidutils/system/SystemUtils.kt b/libraries/androidutils/src/main/kotlin/io/element/android/libraries/androidutils/system/SystemUtils.kt index 354b68a32b..861aca032d 100644 --- a/libraries/androidutils/src/main/kotlin/io/element/android/libraries/androidutils/system/SystemUtils.kt +++ b/libraries/androidutils/src/main/kotlin/io/element/android/libraries/androidutils/system/SystemUtils.kt @@ -32,7 +32,7 @@ fun Context.getApplicationLabel(packageName: String): String { return try { val ai = packageManager.getApplicationInfoCompat(packageName, 0) packageManager.getApplicationLabel(ai).toString() - } catch (e: PackageManager.NameNotFoundException) { + } catch (_: PackageManager.NameNotFoundException) { packageName } } @@ -96,7 +96,7 @@ fun Context.startNotificationSettingsIntent( } else { startActivity(intent) } - } catch (activityNotFoundException: ActivityNotFoundException) { + } catch (_: ActivityNotFoundException) { toast(noActivityFoundMessage) } } @@ -112,7 +112,7 @@ fun Context.openAppSettingsPage( data = Uri.fromParts("package", packageName, null) } ) - } catch (activityNotFoundException: ActivityNotFoundException) { + } catch (_: ActivityNotFoundException) { toast(noActivityFoundMessage) } } @@ -126,7 +126,7 @@ fun Context.startInstallFromSourceIntent( .setData("package:$packageName".toUri()) try { activityResultLauncher.launch(intent) - } catch (activityNotFoundException: ActivityNotFoundException) { + } catch (_: ActivityNotFoundException) { toast(noActivityFoundMessage) } } @@ -157,7 +157,7 @@ fun Context.startSharePlainTextIntent( } else { startActivity(intent) } - } catch (activityNotFoundException: ActivityNotFoundException) { + } catch (_: ActivityNotFoundException) { toast(noActivityFoundMessage) } } diff --git a/libraries/core/src/main/kotlin/io/element/android/libraries/core/hash/Hash.kt b/libraries/core/src/main/kotlin/io/element/android/libraries/core/hash/Hash.kt index 944889bdcb..4a9af95bd1 100644 --- a/libraries/core/src/main/kotlin/io/element/android/libraries/core/hash/Hash.kt +++ b/libraries/core/src/main/kotlin/io/element/android/libraries/core/hash/Hash.kt @@ -21,7 +21,7 @@ fun String.md5() = try { digest.digest() .joinToString("") { String.format(locale, "%02X", it) } .lowercase(locale) -} catch (exc: Exception) { +} catch (_: Exception) { // Should not happen, but just in case hashCode().toString() } diff --git a/libraries/core/src/main/kotlin/io/element/android/libraries/core/uri/UrlUtils.kt b/libraries/core/src/main/kotlin/io/element/android/libraries/core/uri/UrlUtils.kt index a086a6fba5..666ee1d7ab 100644 --- a/libraries/core/src/main/kotlin/io/element/android/libraries/core/uri/UrlUtils.kt +++ b/libraries/core/src/main/kotlin/io/element/android/libraries/core/uri/UrlUtils.kt @@ -14,7 +14,7 @@ fun String.isValidUrl(): Boolean { return try { URI(this).toURL() true - } catch (t: Throwable) { + } catch (_: Throwable) { false } } diff --git a/libraries/fullscreenintent/impl/src/main/kotlin/io/element/android/libraries/fullscreenintent/impl/FullScreenIntentPermissionsPresenter.kt b/libraries/fullscreenintent/impl/src/main/kotlin/io/element/android/libraries/fullscreenintent/impl/FullScreenIntentPermissionsPresenter.kt index ed406e75ff..d4a3e75d1a 100644 --- a/libraries/fullscreenintent/impl/src/main/kotlin/io/element/android/libraries/fullscreenintent/impl/FullScreenIntentPermissionsPresenter.kt +++ b/libraries/fullscreenintent/impl/src/main/kotlin/io/element/android/libraries/fullscreenintent/impl/FullScreenIntentPermissionsPresenter.kt @@ -88,7 +88,7 @@ class FullScreenIntentPermissionsPresenter( "package:${buildMeta.applicationId}".toUri() ) externalIntentLauncher.launch(intent) - } catch (e: ActivityNotFoundException) { + } catch (_: ActivityNotFoundException) { val intent = Intent(Settings.ACTION_APP_NOTIFICATION_SETTINGS) .putExtra(Settings.EXTRA_APP_PACKAGE, buildMeta.applicationId) externalIntentLauncher.launch(intent) diff --git a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/roomlist/RoomList.kt b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/roomlist/RoomList.kt index d03a9677e3..a0d092596a 100644 --- a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/roomlist/RoomList.kt +++ b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/roomlist/RoomList.kt @@ -65,7 +65,7 @@ suspend fun RoomList.awaitLoaded(timeout: Duration = Duration.INFINITE) { it is RoomList.LoadingState.Loaded } } - } catch (timeoutException: TimeoutCancellationException) { + } catch (_: TimeoutCancellationException) { Timber.d("awaitAllRoomsAreLoaded: no response after $timeout") } } diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/RoomSyncSubscriber.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/RoomSyncSubscriber.kt index 6a6b45b7a7..724e3f62f0 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/RoomSyncSubscriber.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/RoomSyncSubscriber.kt @@ -34,7 +34,7 @@ class RoomSyncSubscriber( } subscribedRoomIds.add(roomId) } catch (exception: Exception) { - Timber.e("Failed to subscribe to room $roomId") + Timber.e(exception, "Failed to subscribe to room $roomId") } } } diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/roomlist/RoomListExtensions.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/roomlist/RoomListExtensions.kt index 84e759040d..ae241e9c02 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/roomlist/RoomListExtensions.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/roomlist/RoomListExtensions.kt @@ -48,7 +48,7 @@ fun RoomListInterface.loadingStateFlow(): Flow = try { send(result.state) } catch (exception: Exception) { - Timber.d("loadingStateFlow() initialState failed.") + Timber.d(exception, "loadingStateFlow() initialState failed.") } result.stateStream }.catch { diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/widget/RustWidgetDriver.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/widget/RustWidgetDriver.kt index 1d1824d240..b908082ab6 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/widget/RustWidgetDriver.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/widget/RustWidgetDriver.kt @@ -62,7 +62,7 @@ class RustWidgetDriver( override suspend fun send(message: String) { try { driverAndHandle.handle.send(message) - } catch (e: IllegalStateException) { + } catch (_: IllegalStateException) { // The handle is closed, ignore } } diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/troubleshoot/PushLoopbackTest.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/troubleshoot/PushLoopbackTest.kt index 64b8f98f5b..91ac1ca0ee 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/troubleshoot/PushLoopbackTest.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/troubleshoot/PushLoopbackTest.kt @@ -56,7 +56,7 @@ class PushLoopbackTest( } val testPushResult = try { pushService.testPush(sessionId) - } catch (pusherRejected: PushGatewayFailure.PusherRejected) { + } catch (_: PushGatewayFailure.PusherRejected) { val hasQuickFix = pushService.getCurrentPushProvider(sessionId)?.canRotateToken() == true delegate.updateState( description = stringProvider.getString(R.string.troubleshoot_notifications_test_push_loop_back_failure_1), diff --git a/libraries/pushproviders/firebase/src/main/kotlin/io/element/android/libraries/pushproviders/firebase/FirebaseStore.kt b/libraries/pushproviders/firebase/src/main/kotlin/io/element/android/libraries/pushproviders/firebase/FirebaseStore.kt index 2d3f9dce39..1f6a4709cc 100644 --- a/libraries/pushproviders/firebase/src/main/kotlin/io/element/android/libraries/pushproviders/firebase/FirebaseStore.kt +++ b/libraries/pushproviders/firebase/src/main/kotlin/io/element/android/libraries/pushproviders/firebase/FirebaseStore.kt @@ -40,7 +40,7 @@ class SharedPreferencesFirebaseStore( if (k == PREFS_KEY_FCM_TOKEN) { try { flow.value = getFcmToken() - } catch (e: Exception) { + } catch (_: Exception) { flow.value = null } } diff --git a/tests/testutils/src/main/kotlin/io/element/android/tests/testutils/LongTask.kt b/tests/testutils/src/main/kotlin/io/element/android/tests/testutils/LongTask.kt index 5e3367fcc4..bbaa1cf741 100644 --- a/tests/testutils/src/main/kotlin/io/element/android/tests/testutils/LongTask.kt +++ b/tests/testutils/src/main/kotlin/io/element/android/tests/testutils/LongTask.kt @@ -34,7 +34,7 @@ suspend fun awaitWithLatch(timeout: Duration = 300.milliseconds, block: (Complet withTimeout(timeout) { latch.also(block).await() } - } catch (exception: TimeoutCancellationException) { + } catch (_: TimeoutCancellationException) { latch.complete(Unit) } } diff --git a/tools/detekt/detekt.yml b/tools/detekt/detekt.yml index 578e02ee33..552b46755e 100644 --- a/tools/detekt/detekt.yml +++ b/tools/detekt/detekt.yml @@ -150,7 +150,7 @@ exceptions: TooGenericExceptionCaught: active: false SwallowedException: - active: false + active: true ThrowingExceptionsWithoutMessageOrCause: active: true TooGenericExceptionThrown: