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"