From b316ef4d87e9b396e0d28d66f738c89249158108 Mon Sep 17 00:00:00 2001 From: Tangem Date: Fri, 12 Dec 2025 14:22:30 +0200 Subject: [PATCH] Updated on 2026-08-14 --- .../analytics/models/detekt-baseline-main.xml | 17 ++++++++ core/pagination/detekt-baseline-main.xml | 22 ++++++++++ core/utils/detekt-baseline-main.xml | 14 +++++++ detekt_baseline_report.txt | 40 +++++++++++++++---- domain/account/detekt-baseline-main.xml | 12 ++++++ .../balance-hiding/detekt-baseline-main.xml | 9 +++++ domain/core/detekt-baseline-main.xml | 11 +++++ .../express/models/detekt-baseline-main.xml | 7 ++++ .../feedback/models/detekt-baseline-main.xml | 7 ++++ .../markets/models/detekt-baseline-main.xml | 7 ++++ domain/models/detekt-baseline-main.xml | 27 +++++++++++++ domain/networks/detekt-baseline-main.xml | 8 ++++ domain/nft/models/detekt-baseline-main.xml | 9 +++++ domain/onboarding/detekt-baseline-main.xml | 7 ++++ domain/onramp/detekt-baseline-main.xml | 12 ++++++ domain/onramp/models/detekt-baseline-main.xml | 10 +++++ .../domain/onramp/GetOnrampOffersUseCase.kt | 6 +-- domain/promo/detekt-baseline-main.xml | 7 ++++ domain/quotes/detekt-baseline-main.xml | 7 ++++ .../staking/models/detekt-baseline-main.xml | 19 +++++++++ domain/tokens/models/detekt-baseline-main.xml | 13 ++++++ .../models/detekt-baseline-main.xml | 7 ++++ .../txhistory/models/detekt-baseline-main.xml | 8 ++++ domain/visa/models/detekt-baseline-main.xml | 14 +++++++ .../models/detekt-baseline-main.xml | 12 ++++++ .../models/detekt-baseline-main.xml | 5 +++ .../wallets/models/detekt-baseline-main.xml | 7 ++++ .../models/detekt-baseline-main.xml | 7 ++++ fastlane/Fastfile | 2 +- .../configurations/DetektConfigurations.kt | 25 ++++++++++-- tangem-android-tools | 2 +- test/mock/detekt-baseline-main.xml | 7 ++++ update_detekt_baseline.sh | 12 +++--- 33 files changed, 358 insertions(+), 21 deletions(-) create mode 100644 core/analytics/models/detekt-baseline-main.xml create mode 100644 core/pagination/detekt-baseline-main.xml create mode 100644 core/utils/detekt-baseline-main.xml create mode 100644 domain/account/detekt-baseline-main.xml create mode 100644 domain/balance-hiding/detekt-baseline-main.xml create mode 100644 domain/core/detekt-baseline-main.xml create mode 100644 domain/express/models/detekt-baseline-main.xml create mode 100644 domain/feedback/models/detekt-baseline-main.xml create mode 100644 domain/markets/models/detekt-baseline-main.xml create mode 100644 domain/models/detekt-baseline-main.xml create mode 100644 domain/networks/detekt-baseline-main.xml create mode 100644 domain/nft/models/detekt-baseline-main.xml create mode 100644 domain/onboarding/detekt-baseline-main.xml create mode 100644 domain/onramp/detekt-baseline-main.xml create mode 100644 domain/onramp/models/detekt-baseline-main.xml create mode 100644 domain/promo/detekt-baseline-main.xml create mode 100644 domain/quotes/detekt-baseline-main.xml create mode 100644 domain/staking/models/detekt-baseline-main.xml create mode 100644 domain/tokens/models/detekt-baseline-main.xml create mode 100644 domain/transaction/models/detekt-baseline-main.xml create mode 100644 domain/txhistory/models/detekt-baseline-main.xml create mode 100644 domain/visa/models/detekt-baseline-main.xml create mode 100644 domain/wallet-connect/models/detekt-baseline-main.xml create mode 100644 domain/wallet-manager/models/detekt-baseline-main.xml create mode 100644 domain/wallets/models/detekt-baseline-main.xml create mode 100644 domain/yield-supply/models/detekt-baseline-main.xml create mode 100644 test/mock/detekt-baseline-main.xml diff --git a/core/analytics/models/detekt-baseline-main.xml b/core/analytics/models/detekt-baseline-main.xml new file mode 100644 index 0000000000..c8cb8b3d13 --- /dev/null +++ b/core/analytics/models/detekt-baseline-main.xml @@ -0,0 +1,17 @@ + + + + + MultilineLambdaItParameter:TechAnalyticsEvent.kt$TechAnalyticsEvent.KeyboardIdentifier${ put("Package", it) put("GPUrl", "https://play.google.com/store/apps/details?id=$packageName") } + UseEmptyCounterpart:AnalyticsEvent.kt$AnalyticsEvent$mapOf() + UseEmptyCounterpart:Basic.kt$Basic$mapOf() + UseEmptyCounterpart:ExceptionAnalyticsEvent.kt$ExceptionAnalyticsEvent$mapOf() + UseEmptyCounterpart:MainScreenAnalyticsEvent.kt$MainScreenAnalyticsEvent$mapOf() + UseEmptyCounterpart:OnboardingAnalyticsEvent.kt$OnboardingAnalyticsEvent$mapOf() + UseEmptyCounterpart:OnboardingAnalyticsEvent.kt$OnboardingAnalyticsEvent.CreateWallet$mapOf() + UseEmptyCounterpart:OnboardingAnalyticsEvent.kt$OnboardingAnalyticsEvent.Error$mapOf() + UseEmptyCounterpart:OnboardingAnalyticsEvent.kt$OnboardingAnalyticsEvent.Onboarding$mapOf() + UseEmptyCounterpart:OnboardingAnalyticsEvent.kt$OnboardingAnalyticsEvent.SeedPhrase$mapOf() + UseEmptyCounterpart:TechAnalyticsEvent.kt$TechAnalyticsEvent$mapOf() + + diff --git a/core/pagination/detekt-baseline-main.xml b/core/pagination/detekt-baseline-main.xml new file mode 100644 index 0000000000..5257c3fbcb --- /dev/null +++ b/core/pagination/detekt-baseline-main.xml @@ -0,0 +1,22 @@ + + + + + BooleanPropertyNaming:BatchAction.kt$BatchAction.UpdateBatches$val async: Boolean = false + BooleanPropertyNaming:BatchFetchResult.kt$BatchFetchResult.Success$val empty: Boolean + BooleanPropertyNaming:BatchFetchResult.kt$BatchFetchResult.Success$val last: Boolean + BooleanPropertyNaming:BatchListSource.kt$DefaultBatchListSource$val started = job.start() + MultilineLambdaItParameter:BatchListSource.kt$DefaultBatchListSource${ currentCoroutineContext().ensureActive() BatchFetchResult.Error(it) } + MultilineLambdaItParameter:BatchListSource.kt$DefaultBatchListSource${ if (predicate(it.first)) { it.second.cancel() null } else { it } } + MultilineLambdaItParameter:CursorBatchFetcher.kt$CursorBatchFetcher${ currentCoroutineContext().ensureActive() return BatchFetchResult.Error(it) } + MultilineLambdaItParameter:LimitOffsetBatchFetcher.kt$LimitOffsetBatchFetcher${ currentCoroutineContext().ensureActive() BatchFetchResult.Error(it) } + NamedArguments:BatchListSource.kt$DefaultBatchListSource(fetchDispatcher, context, generateNewKey, batchFetcher, null) + NamedArguments:BatchListSource.kt$DefaultBatchListSource(fetchDispatcher, context, generateNewKey, batchFetcher, updateFetcher) + NestedScopeFunctions:BatchListSource.kt$DefaultBatchListSource$also { currentCoroutineContext().ensureActive() } + SuspendFunSwallowedCancellation:BatchListSource.kt$DefaultBatchListSource$runCatching + SuspendFunSwallowedCancellation:CursorBatchFetcher.kt$CursorBatchFetcher$runCatching + SuspendFunSwallowedCancellation:LimitOffsetBatchFetcher.kt$LimitOffsetBatchFetcher$runCatching + UseEmptyCounterpart:BatchListSource.kt$DefaultBatchListSource$listOf() + UseOrEmpty:BatchListSource.kt$DefaultBatchListSource$batch?.let { listOf(it) } ?: emptyList() + + diff --git a/core/utils/detekt-baseline-main.xml b/core/utils/detekt-baseline-main.xml new file mode 100644 index 0000000000..82dd627f26 --- /dev/null +++ b/core/utils/detekt-baseline-main.xml @@ -0,0 +1,14 @@ + + + + + BooleanPropertyNaming:Retryer.kt$Retryer$val result = try { block(iteration) } catch (e: CancellationException) { throw e } catch (e: Error) { throw e } catch (_: Exception) { false } + MultilineLambdaItParameter:Converter.kt$Converter${ try { convert(it) } catch (throwable: Throwable) { onError?.invoke(throwable) null } } + MultilineLambdaItParameter:PeriodicTask.kt$PeriodicTask${ if (!isActive.get()) { return@onFailure } onError.invoke(it) } + MultilineLambdaItParameter:PeriodicTask.kt$PeriodicTask${ if (!isActive.get()) { return@onSuccess } onSuccess.invoke(it) } + NullableBooleanCheck:JobHolder.kt$JobHolder$job?.isActive ?: false + PropertyUsedBeforeDeclaration:JobHolder.kt$JobHolder$job + SuspendFunSwallowedCancellation:CoroutineExt.kt$runCatching + VarCouldBeVal:PeriodicTask.kt$PeriodicTask$private var isActive: AtomicBoolean = AtomicBoolean(false) + + diff --git a/detekt_baseline_report.txt b/detekt_baseline_report.txt index 2822eda3e2..a45e2bff61 100644 --- a/detekt_baseline_report.txt +++ b/detekt_baseline_report.txt @@ -1,13 +1,13 @@ ========================================== Detekt Baseline Updater & Issue Counter ========================================== -Date: 2025-12-12 13:10:21 +Date: 2025-12-12 13:17:20 Step 1: Running detekt to check for new issues... ✓ Detekt passed - no new issues found -Step 2: Updating detekt baseline for debug variant... +Step 2: Updating detekt baseline ... Baseline updated successfully! @@ -17,13 +17,13 @@ Counting issues in baseline files... ========================================== Summary: - Total Issues: 1247 - Modules with Issues: 46 - Average Issues per Module: 27 + Total Issues: 1378 + Modules with Issues: 72 + Average Issues per Module: 19 Progress: - Fixed: 555 out of 1802 (30%) - Remaining: 1247 + Fixed: 555 out of 1933 (28%) + Remaining: 1378 ========================================== All Modules with Issues (sorted by count) @@ -50,31 +50,57 @@ domain/tokens 25 common/ui 24 features/yield-supply/impl 21 features/tangempay/details/impl 21 +domain/models 21 data/visa 21 data/nft 19 +core/pagination 16 features/swap/data 15 +domain/staking/models 13 data/wallets 13 features/token-recieve/impl 11 features/qr-scanning/impl 11 data/onramp 11 core/datasource 11 +core/analytics/models 11 data/markets 10 features/details/impl 9 domain/account/status 9 data/yield-supply 9 data/networks 9 +domain/visa/models 8 domain/transaction 8 domain/staking 8 +core/utils 8 libs/tangem-sdk-api 7 features/referral/impl 7 +domain/tokens/models 7 data/txhistory 7 features/welcome/impl 6 +domain/wallet-connect/models 6 +domain/onramp 6 +domain/account 6 libs/visa 5 features/home/impl 5 domain/markets 5 +domain/core 5 data/account 5 +domain/onramp/models 4 data/tokens 4 +domain/nft/models 3 +domain/balance-hiding 3 data/wallet-manager 3 data/manage-tokens 3 +domain/txhistory/models 2 +domain/networks 2 core/config-toggles 2 +test/mock 1 +domain/yield-supply/models 1 +domain/wallets/models 1 +domain/transaction/models 1 +domain/quotes 1 +domain/promo 1 +domain/onboarding 1 +domain/markets/models 1 +domain/feedback/models 1 +domain/express/models 1 ──────────────────────────────────────────────────────────────── \ No newline at end of file diff --git a/domain/account/detekt-baseline-main.xml b/domain/account/detekt-baseline-main.xml new file mode 100644 index 0000000000..10f97ccab0 --- /dev/null +++ b/domain/account/detekt-baseline-main.xml @@ -0,0 +1,12 @@ + + + + + MultilineLambdaItParameter:GetArchivedAccountsUseCase.kt$GetArchivedAccountsUseCase${ send(it.lceError()) return } + MultilineLambdaItParameter:GetArchivedAccountsUseCase.kt$GetArchivedAccountsUseCase${ send(it.lceError()) return@channelFlow } + NamedArguments:AddCryptoPortfolioUseCase.kt$AddCryptoPortfolioUseCase$createAccount(userWalletId, accountName, icon, derivationIndex) + UnnecessaryAbstractClass:MultiAccountListSupplier.kt$MultiAccountListSupplier$MultiAccountListSupplier + UnnecessaryAbstractClass:SingleAccountListSupplier.kt$SingleAccountListSupplier$SingleAccountListSupplier + UnnecessaryAbstractClass:SingleAccountSupplier.kt$SingleAccountSupplier$SingleAccountSupplier + + diff --git a/domain/balance-hiding/detekt-baseline-main.xml b/domain/balance-hiding/detekt-baseline-main.xml new file mode 100644 index 0000000000..6917fe3471 --- /dev/null +++ b/domain/balance-hiding/detekt-baseline-main.xml @@ -0,0 +1,9 @@ + + + + + MultilineLambdaItParameter:ListenToFlipsUseCase.kt$ListenToFlipsUseCase${ send(HideBalancesError.DataError(it).left()) return@collectLatest } + NoNameShadowing:ListenToFlipsUseCase.kt$ListenToFlipsUseCase${ send(HideBalancesError.DataError(it).left()) return@collectLatest } + NoNameShadowing:ListenToFlipsUseCase.kt$ListenToFlipsUseCase${ send(HideBalancesError.DataError(it).left()) } + + diff --git a/domain/core/detekt-baseline-main.xml b/domain/core/detekt-baseline-main.xml new file mode 100644 index 0000000000..c27890d54a --- /dev/null +++ b/domain/core/detekt-baseline-main.xml @@ -0,0 +1,11 @@ + + + + + IgnoredReturnValue:FlowCachingSupplier.kt$FlowCachingSupplier$put(key = key, value = flow) + IgnoredReturnValue:FlowCachingSupplier.kt$FlowCachingSupplier$remove(key) + MultilineLambdaItParameter:FlowCachingSupplier.kt$FlowCachingSupplier${ it.toMutableMap().apply { put(key = key, value = flow) } } + MultilineLambdaItParameter:FlowCachingSupplier.kt$FlowCachingSupplier${ it.toMutableMap().apply { remove(key) } } + ObjectExtendsThrowable:DataError.kt$DataError.NetworkError$NoInternetConnection : NetworkError + + diff --git a/domain/express/models/detekt-baseline-main.xml b/domain/express/models/detekt-baseline-main.xml new file mode 100644 index 0000000000..0c9aed8c52 --- /dev/null +++ b/domain/express/models/detekt-baseline-main.xml @@ -0,0 +1,7 @@ + + + + + ObjectExtendsThrowable:ExpressError.kt$ExpressError$UnknownError : ExpressError + + diff --git a/domain/feedback/models/detekt-baseline-main.xml b/domain/feedback/models/detekt-baseline-main.xml new file mode 100644 index 0000000000..4d318997ac --- /dev/null +++ b/domain/feedback/models/detekt-baseline-main.xml @@ -0,0 +1,7 @@ + + + + + BooleanPropertyNaming:WalletMetaInfo.kt$WalletMetaInfo$val hotWalletIsBackedUp: Boolean? = null + + diff --git a/domain/markets/models/detekt-baseline-main.xml b/domain/markets/models/detekt-baseline-main.xml new file mode 100644 index 0000000000..17228539ba --- /dev/null +++ b/domain/markets/models/detekt-baseline-main.xml @@ -0,0 +1,7 @@ + + + + + BooleanPropertyNaming:TokenMarketInfo.kt$TokenMarketInfo.Network$val exchangeable: Boolean + + diff --git a/domain/models/detekt-baseline-main.xml b/domain/models/detekt-baseline-main.xml new file mode 100644 index 0000000000..c26371c864 --- /dev/null +++ b/domain/models/detekt-baseline-main.xml @@ -0,0 +1,27 @@ + + + + + BooleanPropertyNaming:ShortArticle.kt$ShortArticle$val viewed: Boolean + BooleanPropertyNaming:TokenReceiveConfig.kt$TokenReceiveConfig$val showMemoDisclaimer: Boolean + BooleanPropertyNaming:UserWallet.kt$UserWallet.Hot$val backedUp: Boolean + BooleanPropertyNaming:YieldBalanceItem.kt$PendingAction.PendingActionArgs$val signatureVerification: Boolean? + BooleanPropertyNaming:YieldBalanceItem.kt$PendingAction.PendingActionArgs$val validatorAddress: Boolean? + BooleanPropertyNaming:YieldBalanceItem.kt$PendingAction.PendingActionArgs$val validatorAddresses: Boolean? + BooleanPropertyNaming:YieldBalanceItem.kt$PendingAction.PendingActionArgs.Amount$val required: Boolean + BooleanPropertyNaming:YieldBalanceItem.kt$PendingAction.PendingActionArgs.Duration$val required: Boolean + BooleanPropertyNaming:YieldBalanceItem.kt$PendingAction.PendingActionArgs.TronResource$val required: Boolean + CastNullableToNonNullableType:DerivationPathAdapterWithMigration.kt$DerivationPathAdapterWithMigration$as + MultilineLambdaItParameter:MobileWallet.kt$MobileWallet${ ExtendedPublicKey( publicKey = publicKey, chainCode = it, ) } + NoNameShadowing:Account.kt$Account.CryptoPortfolio.Companion$derivationIndex + NullableBooleanCheck:CryptoCurrency.kt$CryptoCurrency$iconUrl?.isNotBlank() ?: true + NullableToStringCall:AccountName.kt$AccountName.Error.Empty$${Empty::class.simpleName} + NullableToStringCall:AccountName.kt$AccountName.Error.ExceedsMaxLength$${ExceedsMaxLength::class.simpleName} + NullableToStringCall:DerivationIndex.kt$DerivationIndex.Error.NegativeDerivationIndex$${this::class.simpleName} + UnsafeCallOnNullableType:MobileWalletAsStringSerializer.kt$MobileWalletAsStringSerializer$moshi.adapter(MobileWallet::class.java).fromJson(decoder.decodeString())!! + UnsafeCallOnNullableType:ScanResponseAsStringSerializer.kt$ScanResponseAsStringSerializer$moshi.adapter(ScanResponse::class.java).fromJson(decoder.decodeString())!! + UseEmptyCounterpart:ScanResponse.kt$ScanResponse$mapOf() + UseOrEmpty:CardDTO.kt$CardDTO.FirmwareVersion$type.rawValue ?: "" + UseOrEmpty:UserWalletId.kt$UserWalletId$value?.toHexString() ?: "" + + diff --git a/domain/networks/detekt-baseline-main.xml b/domain/networks/detekt-baseline-main.xml new file mode 100644 index 0000000000..eaf966bb38 --- /dev/null +++ b/domain/networks/detekt-baseline-main.xml @@ -0,0 +1,8 @@ + + + + + UnnecessaryAbstractClass:MultiNetworkStatusSupplier.kt$MultiNetworkStatusSupplier$MultiNetworkStatusSupplier + UnnecessaryAbstractClass:SingleNetworkStatusSupplier.kt$SingleNetworkStatusSupplier$SingleNetworkStatusSupplier + + diff --git a/domain/nft/models/detekt-baseline-main.xml b/domain/nft/models/detekt-baseline-main.xml new file mode 100644 index 0000000000..526b4c8eb4 --- /dev/null +++ b/domain/nft/models/detekt-baseline-main.xml @@ -0,0 +1,9 @@ + + + + + MultilineLambdaItParameter:NFTCollections.kt${ it.content is NFTCollections.Content.Error || it.content is NFTCollections.Content.Collections && it.content.source == StatusSource.ONLY_CACHE } + MultilineLambdaItParameter:NFTCollections.kt${ val content = it.content content is NFTCollections.Content.Collections && content.collections.isNullOrEmpty() } + MultilineLambdaItParameter:NFTCollections.kt${ val content = it.content content is NFTCollections.Content.Collections && content.source != StatusSource.CACHE } + + diff --git a/domain/onboarding/detekt-baseline-main.xml b/domain/onboarding/detekt-baseline-main.xml new file mode 100644 index 0000000000..f6f53634a7 --- /dev/null +++ b/domain/onboarding/detekt-baseline-main.xml @@ -0,0 +1,7 @@ + + + + + SuspendFunSwallowedCancellation:WasTwinsOnboardingShownUseCase.kt$WasTwinsOnboardingShownUseCase$runCatching + + diff --git a/domain/onramp/detekt-baseline-main.xml b/domain/onramp/detekt-baseline-main.xml new file mode 100644 index 0000000000..59b9829455 --- /dev/null +++ b/domain/onramp/detekt-baseline-main.xml @@ -0,0 +1,12 @@ + + + + + MaxChainedCallsOnSameLine:GetOnrampOffersUseCase.kt$GetOnrampOffersUseCase$offer.quote.paymentMethod.type.getProcessingSpeed().speed + MultilineLambdaItParameter:GetOnrampQuotesUseCase.kt$GetOnrampQuotesUseCase${ when (it) { is OnrampQuote.Data -> it.toAmount.value is OnrampQuote.Error -> null // negative difference to sort both when data and unavailable is present is OnrampQuote.AmountError -> { when (val error = it.error) { is OnrampError.AmountError.TooSmallError -> it.fromAmount.value - error.requiredAmount is OnrampError.AmountError.TooBigError -> error.requiredAmount - it.fromAmount.value } } } } + NamedArguments:GetOnrampOffersUseCase.kt$GetOnrampOffersUseCase$determineAdvantages( recentOffer, bestRateOffer, fastestOffer, isSingleOffer, ) + UnnecessaryLet:OnrampAnalyticsEvent.kt$OnrampAnalyticsEvent.Errors$let { put(PAYMENT_METHOD, paymentMethod) } + UnnecessaryLet:OnrampAnalyticsEvent.kt$OnrampAnalyticsEvent.Errors$let { put(PROVIDER, providerName) } + UseEmptyCounterpart:OnrampAnalyticsEvent.kt$OnrampAnalyticsEvent$mapOf() + + diff --git a/domain/onramp/models/detekt-baseline-main.xml b/domain/onramp/models/detekt-baseline-main.xml new file mode 100644 index 0000000000..b479d48536 --- /dev/null +++ b/domain/onramp/models/detekt-baseline-main.xml @@ -0,0 +1,10 @@ + + + + + BooleanPropertyNaming:OnrampCountry.kt$OnrampCountry$val onrampAvailable: Boolean + ObjectExtendsThrowable:OnrampPairsError.kt$OnrampPairsError$PairsNotFound : OnrampPairsError + ObjectExtendsThrowable:OnrampRedirectError.kt$OnrampRedirectError$VerificationFailed : OnrampRedirectError + ObjectExtendsThrowable:OnrampRedirectError.kt$OnrampRedirectError$WrongRequestId : OnrampRedirectError + + diff --git a/domain/onramp/src/main/java/com/tangem/domain/onramp/GetOnrampOffersUseCase.kt b/domain/onramp/src/main/java/com/tangem/domain/onramp/GetOnrampOffersUseCase.kt index 8bc240224a..11049ae4d2 100644 --- a/domain/onramp/src/main/java/com/tangem/domain/onramp/GetOnrampOffersUseCase.kt +++ b/domain/onramp/src/main/java/com/tangem/domain/onramp/GetOnrampOffersUseCase.kt @@ -96,9 +96,9 @@ class GetOnrampOffersUseCase( isMoonpayPromoActive: Boolean, ): OnrampOffer? { val moonpayPromoOffers = if (isMoonpayPromoActive) { - offers.filter { - it.quote.provider.id == MOONPAY_PROMO_PROVIDER_ID && - it.quote.paymentMethod.type == PaymentMethodType.GOOGLE_PAY + offers.filter { offer -> + offer.quote.provider.id == MOONPAY_PROMO_PROVIDER_ID && + offer.quote.paymentMethod.type == PaymentMethodType.GOOGLE_PAY } } else { emptyList() diff --git a/domain/promo/detekt-baseline-main.xml b/domain/promo/detekt-baseline-main.xml new file mode 100644 index 0000000000..b913db3534 --- /dev/null +++ b/domain/promo/detekt-baseline-main.xml @@ -0,0 +1,7 @@ + + + + + NullableBooleanCheck:GetStoryContentUseCase.kt$GetStoryContentUseCase$isFCAAllowed(id).firstOrNull() ?: false + + diff --git a/domain/quotes/detekt-baseline-main.xml b/domain/quotes/detekt-baseline-main.xml new file mode 100644 index 0000000000..bb2982d875 --- /dev/null +++ b/domain/quotes/detekt-baseline-main.xml @@ -0,0 +1,7 @@ + + + + + UnnecessaryAbstractClass:SingleQuoteStatusSupplier.kt$SingleQuoteStatusSupplier$SingleQuoteStatusSupplier + + diff --git a/domain/staking/models/detekt-baseline-main.xml b/domain/staking/models/detekt-baseline-main.xml new file mode 100644 index 0000000000..865d3ce960 --- /dev/null +++ b/domain/staking/models/detekt-baseline-main.xml @@ -0,0 +1,19 @@ + + + + + BooleanPropertyNaming:P2PEthPoolStaking.kt$P2PEthPoolStaking.Metadata.Fee$val enabled: Boolean + BooleanPropertyNaming:P2PEthPoolStaking.kt$P2PEthPoolStaking.Status$val enter: Boolean + BooleanPropertyNaming:P2PEthPoolStaking.kt$P2PEthPoolStaking.Status$val exit: Boolean + BooleanPropertyNaming:StakingActionCommonType.kt$StakingActionCommonType.Enter$val skipEnterAmount: Boolean + BooleanPropertyNaming:StakingActionCommonType.kt$StakingActionCommonType.Exit$val partiallyUnstakeDisabled: Boolean + BooleanPropertyNaming:StakingActionCommonType.kt$StakingActionCommonType.Pending.Stake$val skipEnterAmount: Boolean + BooleanPropertyNaming:Yield.kt$AddressArgument$val required: Boolean + BooleanPropertyNaming:Yield.kt$Yield$val allValidatorsFull: Boolean = validators.all { it.status == Validator.ValidatorStatus.FULL } + BooleanPropertyNaming:Yield.kt$Yield.Metadata$val supportsMultipleValidators: Boolean? + BooleanPropertyNaming:Yield.kt$Yield.Metadata.Enabled$val enabled: Boolean + BooleanPropertyNaming:Yield.kt$Yield.Status$val enter: Boolean + BooleanPropertyNaming:Yield.kt$Yield.Status$val exit: Boolean? + BooleanPropertyNaming:Yield.kt$Yield.Validator$val preferred: Boolean + + diff --git a/domain/tokens/models/detekt-baseline-main.xml b/domain/tokens/models/detekt-baseline-main.xml new file mode 100644 index 0000000000..80759d1dfb --- /dev/null +++ b/domain/tokens/models/detekt-baseline-main.xml @@ -0,0 +1,13 @@ + + + + + ObjectExtendsThrowable:RemoveCurrencyError.kt$RemoveCurrencyError$HasLinkedTokens : RemoveCurrencyError + UseEmptyCounterpart:PromoAnalyticsEvent.kt$PromoAnalyticsEvent$mapOf() + UseEmptyCounterpart:TokenExchangeAnalyticsEvent.kt$TokenExchangeAnalyticsEvent$mapOf() + UseEmptyCounterpart:TokenOnrampAnalyticsEvent.kt$TokenOnrampAnalyticsEvent$mapOf() + UseEmptyCounterpart:TokenReceiveAnalyticsEvent.kt$TokenReceiveAnalyticsEvent$mapOf() + UseEmptyCounterpart:TokenReceiveNewAnalyticsEvent.kt$TokenReceiveNewAnalyticsEvent$mapOf() + UseEmptyCounterpart:TokenScreenAnalyticsEvent.kt$TokenScreenAnalyticsEvent$mapOf() + + diff --git a/domain/transaction/models/detekt-baseline-main.xml b/domain/transaction/models/detekt-baseline-main.xml new file mode 100644 index 0000000000..c826f4a41a --- /dev/null +++ b/domain/transaction/models/detekt-baseline-main.xml @@ -0,0 +1,7 @@ + + + + + NullableToStringCall:SendTransactionError.kt$SendTransactionError$$code + + diff --git a/domain/txhistory/models/detekt-baseline-main.xml b/domain/txhistory/models/detekt-baseline-main.xml new file mode 100644 index 0000000000..c1da5a5bd3 --- /dev/null +++ b/domain/txhistory/models/detekt-baseline-main.xml @@ -0,0 +1,8 @@ + + + + + ObjectExtendsThrowable:TxHistoryStateError.kt$TxHistoryStateError$EmptyTxHistories : TxHistoryStateError + ObjectExtendsThrowable:TxHistoryStateError.kt$TxHistoryStateError$TxHistoryNotImplemented : TxHistoryStateError + + diff --git a/domain/visa/models/detekt-baseline-main.xml b/domain/visa/models/detekt-baseline-main.xml new file mode 100644 index 0000000000..674a5f7aed --- /dev/null +++ b/domain/visa/models/detekt-baseline-main.xml @@ -0,0 +1,14 @@ + + + + + NamedArguments:VisaCardActivationStatus.kt$VisaCardActivationStatus_JsonAdapter$ActivationStarted( value.activationInput!!, value.authTokens!!, value.remoteState!!, value.cardWalletAddress!!, ) + NamedArguments:VisaCardActivationStatus.kt$VisaCardActivationStatus_JsonAdapter$VisaCardActivationStatus_Json( VisaCardActivationStatus_Type.ActivationStarted, value.activationInput, value.authTokens, value.remoteState, value.cardWalletAddress, ) + UnsafeCallOnNullableType:VisaActivationRemoteState.kt$VisaActivationRemoteState_JsonAdapter$value.activationOrderInfo!! + UnsafeCallOnNullableType:VisaActivationRemoteState.kt$VisaActivationRemoteState_JsonAdapter$value.awaitingPinCodeStatus!! + UnsafeCallOnNullableType:VisaCardActivationStatus.kt$VisaCardActivationStatus_JsonAdapter$value.activationInput!! + UnsafeCallOnNullableType:VisaCardActivationStatus.kt$VisaCardActivationStatus_JsonAdapter$value.authTokens!! + UnsafeCallOnNullableType:VisaCardActivationStatus.kt$VisaCardActivationStatus_JsonAdapter$value.cardWalletAddress!! + UnsafeCallOnNullableType:VisaCardActivationStatus.kt$VisaCardActivationStatus_JsonAdapter$value.remoteState!! + + diff --git a/domain/wallet-connect/models/detekt-baseline-main.xml b/domain/wallet-connect/models/detekt-baseline-main.xml new file mode 100644 index 0000000000..a019799a9b --- /dev/null +++ b/domain/wallet-connect/models/detekt-baseline-main.xml @@ -0,0 +1,12 @@ + + + + + BooleanPropertyNaming:WcAppMetaData.kt$WcAppMetaData$val linkMode: Boolean = false + BooleanPropertyNaming:WcSession.kt$WcSession$val showWalletInfo: Boolean + ObjectExtendsThrowable:WcPairError.kt$WcPairError$InvalidConnectionRequest : WcPairError + ObjectExtendsThrowable:WcPairError.kt$WcPairError$InvalidDomainURL : WcPairError + ObjectExtendsThrowable:WcPairError.kt$WcPairError$ProposalExpired : WcPairError + ObjectExtendsThrowable:WcPairError.kt$WcPairError$RejectionFailed : WcPairError + + diff --git a/domain/wallet-manager/models/detekt-baseline-main.xml b/domain/wallet-manager/models/detekt-baseline-main.xml new file mode 100644 index 0000000000..ecf2e0cce8 --- /dev/null +++ b/domain/wallet-manager/models/detekt-baseline-main.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/domain/wallets/models/detekt-baseline-main.xml b/domain/wallets/models/detekt-baseline-main.xml new file mode 100644 index 0000000000..0b3473e462 --- /dev/null +++ b/domain/wallets/models/detekt-baseline-main.xml @@ -0,0 +1,7 @@ + + + + + ObjectExtendsThrowable:ParsedQrCodeErrors.kt$ParsedQrCodeErrors$InvalidUriError : ParsedQrCodeErrors + + diff --git a/domain/yield-supply/models/detekt-baseline-main.xml b/domain/yield-supply/models/detekt-baseline-main.xml new file mode 100644 index 0000000000..9407c35741 --- /dev/null +++ b/domain/yield-supply/models/detekt-baseline-main.xml @@ -0,0 +1,7 @@ + + + + + NullableToStringCall:YieldMarketToken.kt$YieldMarketToken$${backendId} + + diff --git a/fastlane/Fastfile b/fastlane/Fastfile index b62893f38d..f1162f841b 100644 --- a/fastlane/Fastfile +++ b/fastlane/Fastfile @@ -22,7 +22,7 @@ platform :android do FileUtils.cp("../app/src/main/assets/tangem-app-config/android/google-services/dev/google-services.json", "../app") FileUtils.cp("../tangem-android-tools/CI/gradle_properties/tests_ci_gradle.properties", "../gradle.properties") puts File.read("../gradle.properties") - gradle(task: "detekt detektGoogleDebug detektDebug --continue") + gradle(task: "detekt detektMain") end desc "Run tests" diff --git a/plugins/configuration/src/main/kotlin/com/tangem/plugin/configuration/configurations/DetektConfigurations.kt b/plugins/configuration/src/main/kotlin/com/tangem/plugin/configuration/configurations/DetektConfigurations.kt index 264610cc2a..c6778122da 100644 --- a/plugins/configuration/src/main/kotlin/com/tangem/plugin/configuration/configurations/DetektConfigurations.kt +++ b/plugins/configuration/src/main/kotlin/com/tangem/plugin/configuration/configurations/DetektConfigurations.kt @@ -5,6 +5,7 @@ import com.tangem.plugin.configuration.utils.findPlugin import io.gitlab.arturbosch.detekt.CONFIGURATION_DETEKT import io.gitlab.arturbosch.detekt.CONFIGURATION_DETEKT_PLUGINS import io.gitlab.arturbosch.detekt.Detekt +import io.gitlab.arturbosch.detekt.DetektCreateBaselineTask import io.gitlab.arturbosch.detekt.extensions.DetektExtension import org.gradle.api.Project import org.gradle.kotlin.dsl.configure @@ -28,6 +29,9 @@ private fun DetektExtension.configure(project: Project) { "plugins/detekt-rules/app-detekt-config.yml" ) ) + + ignoredBuildTypes = listOf("release", "internal", "external", "mocked") + ignoredFlavors = listOf("huawei") } private fun Project.configureDetektPlugins() { @@ -41,9 +45,14 @@ private fun Project.configureDetektPlugins() { } private fun Project.configureDetektTask() { - tasks.withType { - include("**/*.kt") - exclude("**/resources/**", "**/build/**") + tasks.withType().configureEach { + logger.lifecycle("[Detekt] Configuring task: $name in project: ${project.path}") + + source = fileTree(projectDir) { + include("src/main/**/*.kt") + exclude("**/build/**") + } + reports { sarif { required.set(false) @@ -55,4 +64,14 @@ private fun Project.configureDetektTask() { jvmTarget = "17" } + + tasks.withType().configureEach { + logger.lifecycle("[Detekt Baseline] Configuring task: $name in project: ${project.path}") + + source = fileTree(projectDir) { + include("src/main/**/*.kt") + exclude("**/build/**") + } + jvmTarget = "17" + } } \ No newline at end of file diff --git a/tangem-android-tools b/tangem-android-tools index 3da4c865da..d7950d60bb 160000 --- a/tangem-android-tools +++ b/tangem-android-tools @@ -1 +1 @@ -Subproject commit 3da4c865da5f2a61d5170357c60de4ddd8425815 +Subproject commit d7950d60bb4c6353f2aa3364073c6ec72167c666 diff --git a/test/mock/detekt-baseline-main.xml b/test/mock/detekt-baseline-main.xml new file mode 100644 index 0000000000..dd89921096 --- /dev/null +++ b/test/mock/detekt-baseline-main.xml @@ -0,0 +1,7 @@ + + + + + MultilineLambdaItParameter:MockAccounts.kt$MockAccounts${ val account = createAccount(derivationIndex = it + 1, userWalletId = userWalletId) add(account) } + + diff --git a/update_detekt_baseline.sh b/update_detekt_baseline.sh index aa13af5586..b30b5d31f0 100755 --- a/update_detekt_baseline.sh +++ b/update_detekt_baseline.sh @@ -7,7 +7,7 @@ cd "$SCRIPT_DIR" OUTPUT_FILE="${1:-detekt_baseline_report.txt}" -INITIAL_ISSUES=1802 +INITIAL_ISSUES=1933 log() { echo "$@" | tee -a "$OUTPUT_FILE" @@ -24,7 +24,7 @@ log "" log "Step 1: Running detekt to check for new issues..." log "" -if ./gradlew detekt detektDebug detektGoogleDebug; then +if ./gradlew detekt detektMain; then log "✓ Detekt passed - no new issues found" log "" else @@ -35,10 +35,10 @@ else exit 1 fi -log "Step 2: Updating detekt baseline for debug variant..." +log "Step 2: Updating detekt baseline ..." log "" -./gradlew detektBaselineDebug +./gradlew detektBaselineMain log "" log "Baseline updated successfully!" @@ -54,11 +54,11 @@ module_count=0 temp_file=$(mktemp) -find . -name "detekt-baseline-debug.xml" -type f | while IFS= read -r file; do +find . \( -name "detekt-baseline-main.xml" -o -name "detekt-baseline-debug.xml" \) -type f | while IFS= read -r file; do issue_count=$(grep -c "" "$file" 2>/dev/null) || issue_count=0 if [ "$issue_count" -gt 0 ]; then - module_name=$(echo "$file" | sed 's|^\./||' | sed 's|/detekt-baseline-debug.xml$||') + module_name=$(echo "$file" | sed 's|^\./||' | sed 's|/detekt-baseline-main.xml$||' | sed 's|/detekt-baseline-debug.xml$||') echo "$issue_count|$module_name" fi done | sort -rn -t'|' -k1 > "$temp_file"