From aa13e9c497a5ceb89468867e7fe8fefe1e67d7fc Mon Sep 17 00:00:00 2001 From: ndubkov-distcotech Date: Mon, 5 Aug 2024 16:33:36 +0200 Subject: [PATCH] ci(bank-sdk): Enable detekt for BankSdk and CaptureSdk (#508) ci(bank-sdk): Enbale detekt for BankSdk and CaptureSdk --- bank-sdk/example-app/detekt-baseline.xml | 95 ++++++ bank-sdk/sdk/detekt-baseline.xml | 177 +++++++++++ .../net/gini/gradle/CodeAnalysisPlugin.kt | 17 +- capture-sdk/sdk/detekt-baseline.xml | 284 ++++++++++++++++++ 4 files changed, 571 insertions(+), 2 deletions(-) create mode 100644 bank-sdk/example-app/detekt-baseline.xml create mode 100644 bank-sdk/sdk/detekt-baseline.xml create mode 100644 capture-sdk/sdk/detekt-baseline.xml diff --git a/bank-sdk/example-app/detekt-baseline.xml b/bank-sdk/example-app/detekt-baseline.xml new file mode 100644 index 0000000000..b4d4b97208 --- /dev/null +++ b/bank-sdk/example-app/detekt-baseline.xml @@ -0,0 +1,95 @@ + + + + + ComplexMethod:ConfigurationViewModel.kt$ConfigurationViewModel$fun configureGiniBank(context: Context) + EmptyFunctionBlock:CustomOnButtonLoadingIndicatorAdapter.kt$CustomOnButtonLoadingIndicatorAdapter${} + LongMethod:ConfigurationActivity.kt$ConfigurationActivity$private fun setConfigurationFeatures() + LongMethod:ConfigurationActivity.kt$ConfigurationActivity$private fun updateUIWithConfigurationObject(configuration: Configuration) + LongMethod:ConfigurationViewModel.kt$ConfigurationViewModel$fun configureGiniBank(context: Context) + LongParameterList:ClientCaptureSDKFragment.kt$ClientCaptureSDKFragment$(paymentRecipient: String, paymentReference: String, paymentPurpose: String, iban: String, bic: String, amount: Amount ) + MagicNumber:ExtractionsActivity.kt$ExtractionsActivity$0.5f + MagicNumber:MainActivity.kt$MainActivity$600 + MaxLineLength:ClientBankSDKFragment.kt$ClientBankSDKFragment$"Error: ${(result.value as ResultError.Capture).giniCaptureError.errorCode} ${(result.value as ResultError.Capture).giniCaptureError.message}" + MaxLineLength:ClientBankSDKFragment.kt$ClientBankSDKFragment$"Error: ${(result.value as ResultError.FileImport).code} ${(result.value as ResultError.FileImport).message}" + MaxLineLength:ClientCaptureSDKFragment.kt$ClientCaptureSDKFragment$"Error: ${(result.value as ResultError.FileImport).code} ${(result.value as ResultError.FileImport).message}" + MaxLineLength:Configuration.kt$Configuration$// net.gini.android.capture.GiniCapture.Builder#setCameraNavigationBarBottomAdapter → on/off switch to show a custom adapter implementation + MaxLineLength:Configuration.kt$Configuration$// net.gini.android.capture.GiniCapture.Builder#setCustomOnboardingPages → on/off switch to show custom onboarding pages + MaxLineLength:Configuration.kt$Configuration$// net.gini.android.capture.GiniCapture.Builder#setDocumentImportEnabledFileTypes → radio buttons to select an available enum value + MaxLineLength:Configuration.kt$Configuration$// net.gini.android.capture.GiniCapture.Builder#setHelpNavigationBarBottomAdapter → on/off switch to show a custom adapter implementation + MaxLineLength:Configuration.kt$Configuration$// net.gini.android.capture.GiniCapture.Builder#setLoadingIndicatorAdapter → on/off switch to show a custom adapter implementation + MaxLineLength:Configuration.kt$Configuration$// net.gini.android.capture.GiniCapture.Builder#setNavigationBarTopAdapter → on/off switch to show a custom adapter implementation + MaxLineLength:Configuration.kt$Configuration$// net.gini.android.capture.GiniCapture.Builder#setOnButtonLoadingIndicatorAdapter → on/off switch to show a custom adapter implementation + MaxLineLength:Configuration.kt$Configuration$// net.gini.android.capture.GiniCapture.Builder#setOnboardingQRCodeIllustrationAdapter-> on/off switch to show custom adapter with animated illustrations + MaxLineLength:Configuration.kt$Configuration$// net.gini.android.capture.GiniCapture.Builder#setReviewBottomBarNavigationAdapter → on/off switch to show a custom adapter implementation + MaxLineLength:Configuration.kt$Configuration.Companion$fun + MaxLineLength:ConfigurationActivity.kt$ConfigurationActivity$binding.layoutBottomNavigationToggles.switchCameraScreenCustomBottomNavbar + MaxLineLength:ConfigurationActivity.kt$ConfigurationActivity$binding.layoutBottomNavigationToggles.switchDigitalInvoiceBottomNavigationBar + MaxLineLength:ConfigurationActivity.kt$ConfigurationActivity$binding.layoutBottomNavigationToggles.switchDigitalInvoiceHelpBottomNavigationBar + MaxLineLength:ConfigurationActivity.kt$ConfigurationActivity$binding.layoutBottomNavigationToggles.switchDigitalInvoiceOnboardingBottomNavigationBar + MaxLineLength:ConfigurationActivity.kt$ConfigurationActivity$binding.layoutBottomNavigationToggles.switchReviewScreenCustomBottomNavbar + MaxLineLength:ConfigurationActivity.kt$ConfigurationActivity$binding.layoutBottomNavigationToggles.switchShowBottomNavbar.isChecked = configuration.isBottomNavigationBarEnabled + MaxLineLength:ConfigurationActivity.kt$ConfigurationActivity$binding.layoutBottomNavigationToggles.switchShowHelpScreenCustomBottomNavbar + MaxLineLength:ConfigurationActivity.kt$ConfigurationActivity$binding.layoutBottomNavigationToggles.switchSkontoCustomBottomNavbar + MaxLineLength:ConfigurationActivity.kt$ConfigurationActivity$binding.layoutDebugDevelopmentOptionsToggles.switchCustomErrorLogger + MaxLineLength:ConfigurationActivity.kt$ConfigurationActivity$binding.layoutDebugDevelopmentOptionsToggles.switchCustomErrorLogger.isChecked = configuration.isCustomErrorLoggerEnabled + MaxLineLength:ConfigurationActivity.kt$ConfigurationActivity$binding.layoutDebugDevelopmentOptionsToggles.switchDisableCameraPermission + MaxLineLength:ConfigurationActivity.kt$ConfigurationActivity$binding.layoutDebugDevelopmentOptionsToggles.switchGiniErrorLogger.isChecked = configuration.isGiniErrorLoggerEnabled + MaxLineLength:ConfigurationActivity.kt$ConfigurationActivity$binding.layoutFeatureToggle.toggleBtnFileImportSetup + MaxLineLength:ConfigurationActivity.kt$ConfigurationActivity$binding.layoutGeneralUiCustomizationToggles.switchButtonsCustomLoadingIndicator + MaxLineLength:ConfigurationActivity.kt$ConfigurationActivity$binding.layoutGeneralUiCustomizationToggles.switchCustomNavigationController + MaxLineLength:ConfigurationActivity.kt$ConfigurationActivity$binding.layoutGeneralUiCustomizationToggles.switchCustomNavigationController.isChecked = configuration.isCustomNavBarEnabled + MaxLineLength:ConfigurationActivity.kt$ConfigurationActivity$binding.layoutOnboardingToggles.switchCustomOnboardingAlignCornersPage + MaxLineLength:ConfigurationActivity.kt$ConfigurationActivity$binding.layoutOnboardingToggles.switchCustomOnboardingPages.isChecked = configuration.isCustomOnboardingPagesEnabled + MaxLineLength:ConfigurationActivity.kt$ConfigurationActivity$binding.layoutOnboardingToggles.switchOnboardingScreensAtEveryLaunch + MaxLineLength:ConfigurationActivity.kt$ConfigurationActivity$binding.layoutReturnAssistantToggles.switchDigitalInvoiceOnboardingCustomIllustration + MaxLineLength:ConfigurationViewModel.kt$ConfigurationViewModel$@GiniCaptureNetworkServiceDebugDisabled private val giniCaptureDefaultNetworkServiceDebugDisabled: GiniCaptureDefaultNetworkService + MaxLineLength:ConfigurationViewModel.kt$ConfigurationViewModel$@GiniCaptureNetworkServiceDebugEnabled private val giniCaptureDefaultNetworkServiceDebugEnabled: GiniCaptureDefaultNetworkService + MaxLineLength:ConfigurationViewModel.kt$ConfigurationViewModel$if + MaxLineLength:ConfigurationViewModel.kt$ConfigurationViewModel$networkService = if (configuration.isDebugModeEnabled) giniCaptureDefaultNetworkServiceDebugEnabled else giniCaptureDefaultNetworkServiceDebugDisabled + MaxLineLength:CustomCameraNavigationBarBottomAdapter.kt$CustomCameraNavigationBarBottomAdapter$val binding = CustomCameraNavigationBarBottomBinding.inflate(LayoutInflater.from(container.context), container, false) + MaxLineLength:CustomDigitalInvoiceHelpNavigationBarBottomAdapter.kt$CustomDigitalInvoiceHelpNavigationBarBottomAdapter$val binding = CustomDigitalInvoiceHelpNavigationBarBottomBinding.inflate(LayoutInflater.from(container.context), container, false) + MaxLineLength:CustomDigitalInvoiceNavigationBarBottomAdapter.kt$CustomDigitalInvoiceNavigationBarBottomAdapter$binding = CustomDigitalInvoiceNavigationBarBinding.inflate(LayoutInflater.from(container.context), container, false) + MaxLineLength:CustomDigitalInvoiceOnboardingNavigationBarBottomAdapter.kt$CustomDigitalInvoiceOnboardingNavigationBarBottomAdapter$val binding = CustomDigitalInvoiceOnboardingBottomNavigationBarBinding.inflate(LayoutInflater.from(container.context), container, false) + MaxLineLength:CustomOnboardingNavigationBarBottomAdapter.kt$CustomOnboardingNavigationBarBottomAdapter$OnboardingNavigationBarBottomButton.GET_STARTED -> viewBinding?.buttonGetStarted?.visibility = View.VISIBLE + MaxLineLength:CustomReviewNavigationBarBottomAdapter.kt$CustomReviewNavigationBarBottomAdapter$viewBinding.injectedViewContainerInjectedLoadingIndicatorContainer.injectedViewAdapterHolder + MaxLineLength:DocumentAnalyzer.kt$DocumentAnalyzer$Log.d("gini-api", "Analysis failed for document ${giniApiDocument?.id}: ${extractionsResource!!.message}") + MaxLineLength:ExampleUtil.kt$ExampleUtil$return extractionName == "amountToPay" || extractionName == "bic" || extractionName == "iban" || extractionName == "paymentReference" || extractionName == "paymentRecipient" + MaxLineLength:GiniExampleModule.kt$GiniExampleModule$"Missing Gini API client credentials. Either create a local.properties file " + "with clientId and clientSecret properties or pass them in as gradle " + "parameters with -PclientId and -PclientSecret." + MaxLineLength:MainActivity.kt$MainActivity$"Error: ${(result.value as ResultError.Capture).giniCaptureError.errorCode} ${(result.value as ResultError.Capture).giniCaptureError.message}" + MaxLineLength:MainActivity.kt$MainActivity$"Error: ${(result.value as ResultError.FileImport).code} ${(result.value as ResultError.FileImport).message}" + MaxLineLength:PermissionHandler.kt$PermissionHandler$private + MaxLineLength:SplashActivity.kt$SplashActivity$is GiniBank.CreateDocumentFromImportedFileResult.Error -> showErrorToast("Open with failed with error ${documentCreationResult.error}") + NewLineAtEndOfFile:CaptureFlowHostActivity.kt$net.gini.android.bank.sdk.exampleapp.ui.CaptureFlowHostActivity.kt + NewLineAtEndOfFile:ConfigurationActivity.kt$net.gini.android.bank.sdk.exampleapp.ui.ConfigurationActivity.kt + NewLineAtEndOfFile:ConfigurationViewModel.kt$net.gini.android.bank.sdk.exampleapp.ui.ConfigurationViewModel.kt + NewLineAtEndOfFile:CustomCameraNavigationBarBottomAdapter.kt$net.gini.android.bank.sdk.exampleapp.ui.adapters.CustomCameraNavigationBarBottomAdapter.kt + NewLineAtEndOfFile:CustomDigitalInvoiceNavigationBarBottomAdapter.kt$net.gini.android.bank.sdk.exampleapp.ui.adapters.CustomDigitalInvoiceNavigationBarBottomAdapter.kt + NewLineAtEndOfFile:CustomDigitalInvoiceOnboardingNavigationBarBottomAdapter.kt$net.gini.android.bank.sdk.exampleapp.ui.adapters.CustomDigitalInvoiceOnboardingNavigationBarBottomAdapter.kt + NewLineAtEndOfFile:CustomHelpActivity.kt$net.gini.android.bank.sdk.exampleapp.ui.CustomHelpActivity.kt + NewLineAtEndOfFile:CustomNavigationBarTopAdapter.kt$net.gini.android.bank.sdk.exampleapp.ui.adapters.CustomNavigationBarTopAdapter.kt + NewLineAtEndOfFile:CustomOnButtonLoadingIndicatorAdapter.kt$net.gini.android.bank.sdk.exampleapp.ui.adapters.CustomOnButtonLoadingIndicatorAdapter.kt + NewLineAtEndOfFile:CustomOnboardingIllustrationAdapter.kt$net.gini.android.bank.sdk.exampleapp.ui.adapters.CustomOnboardingIllustrationAdapter.kt + NewLineAtEndOfFile:CustomOnboardingNavigationBarBottomAdapter.kt$net.gini.android.bank.sdk.exampleapp.ui.adapters.CustomOnboardingNavigationBarBottomAdapter.kt + NewLineAtEndOfFile:CustomReviewNavigationBarBottomAdapter.kt$net.gini.android.bank.sdk.exampleapp.ui.adapters.CustomReviewNavigationBarBottomAdapter.kt + NewLineAtEndOfFile:CustomSkontoNavigationBarBottomAdapter.kt$net.gini.android.bank.sdk.exampleapp.ui.adapters.CustomSkontoNavigationBarBottomAdapter.kt + NewLineAtEndOfFile:DocumentAnalyzer.kt$net.gini.android.bank.sdk.exampleapp.core.DocumentAnalyzer.kt + NewLineAtEndOfFile:ExampleApp.kt$net.gini.android.bank.sdk.exampleapp.ExampleApp.kt + NewLineAtEndOfFile:ExampleUtil.kt$net.gini.android.bank.sdk.exampleapp.core.ExampleUtil.kt + NewLineAtEndOfFile:MainActivity.kt$net.gini.android.bank.sdk.exampleapp.ui.MainActivity.kt + NewLineAtEndOfFile:PayViewModel.kt$net.gini.android.bank.sdk.exampleapp.ui.pay.PayViewModel.kt + NewLineAtEndOfFile:PermissionHandler.kt$net.gini.android.bank.sdk.exampleapp.core.PermissionHandler.kt + NewLineAtEndOfFile:ResultWrapper.kt$net.gini.android.bank.sdk.exampleapp.core.ResultWrapper.kt + NewLineAtEndOfFile:SplashActivity.kt$net.gini.android.bank.sdk.exampleapp.ui.SplashActivity.kt + SwallowedException:ExampleApp.kt$ExampleApp$catch (e: IllegalStateException) { // ignore } + TooGenericExceptionCaught:PayActivity.kt$PayActivity$t: Throwable + TooGenericExceptionCaught:ResultWrapper.kt$throwable: Throwable + TooManyFunctions:ExtractionsActivity.kt$ExtractionsActivity : AppCompatActivityExtractionsAdapterInterface + TooManyFunctions:MainActivity.kt$MainActivity : AppCompatActivity + UnusedPrivateMember:ClientBankSDKFragment.kt$ClientBankSDKFragment$private fun overrideBankSDKConfiguration() + UnusedPrivateMember:ExtractionsActivity.kt$ExtractionsActivity$binding: ActivityExtractionsBinding + UnusedPrivateMember:ExtractionsActivity.kt$ExtractionsActivity$private fun hideProgressIndicator(binding: ActivityExtractionsBinding) + UnusedPrivateMember:ExtractionsActivity.kt$ExtractionsActivity$private fun showProgressIndicator(binding: ActivityExtractionsBinding) + UnusedPrivateMember:MainActivity.kt$MainActivity.Companion$private const val REQUEST_CONFIGURATION = 3 + + diff --git a/bank-sdk/sdk/detekt-baseline.xml b/bank-sdk/sdk/detekt-baseline.xml new file mode 100644 index 0000000000..232048edbc --- /dev/null +++ b/bank-sdk/sdk/detekt-baseline.xml @@ -0,0 +1,177 @@ + + + + + ComplexMethod:Configuration.kt$internal fun GiniCapture.Builder.applyConfiguration(configuration: CaptureConfiguration): GiniCapture.Builder + EmptyFunctionBlock:DigitalInvoiceBottomSheet.kt$DigitalInvoiceBottomSheet${ } + EmptyFunctionBlock:DigitalInvoiceScreenPresenter.kt$DigitalInvoiceScreenPresenter${ } + EmptyFunctionBlock:DigitalOnboardingScreenPresenter.kt$DigitalOnboardingScreenPresenter${ } + EmptyFunctionBlock:EditTextExtensions.kt$<no name provided>${ } + EmptyFunctionBlock:GiniBank.kt$GiniBank.<no name provided>${ } + EmptyFunctionBlock:LineItemDetailsScreenPresenter.kt$LineItemDetailsScreenPresenter${ } + EmptyFunctionBlock:LineItemsAdapter.kt$ViewHolder.AddonViewHolder${ } + EmptyFunctionBlock:TextExtensions.kt$<no name provided>${ } + ForbiddenComment:DigitalInvoiceOnboardingFragment.kt$DigitalInvoiceOnboardingFragment$* You should show the `DigitalInvoiceOnboardingFragment` when the * [DigitalInvoiceFragmentListener.showOnboarding()] is called. * * Include the `DigitalInvoiceOnboardingFragment` into your layout by using the [DigitalInvoiceOnboardingFragment.createInstance()] factory method to create * an instance and display it using the [androidx.fragment.app.FragmentManager]. * * A [DigitalInvoiceOnboardingFragmentListener] instance must be available before the `DigitalInvoiceOnboardingFragment` is attached to an activity. Failing * to do so will throw an exception. The listener instance can be provided either implicitly by making the hosting Activity implement the * [DigitalInvoiceOnboardingFragmentListener] interface or explicitly by setting the listener using [DigitalInvoiceOnboardingFragment.listener]. * * Your Activity is automatically set as the listener in [DigitalInvoiceOnboardingFragment.onCreate()]. * * ### Customizing the Digital Invoice Onboarding Screen * * TODO: PPL-14: Customization guide for return assistant - Android + LongMethod:Configuration.kt$internal fun GiniCapture.Builder.applyConfiguration(configuration: CaptureConfiguration): GiniCapture.Builder + LongMethod:SkontoFragment.kt$@Composable private fun FooterSection( totalAmount: SkontoData.Amount, savedAmount: SkontoData.Amount, discountValue: BigDecimal, colors: SkontoFooterSectionColors, isBottomNavigationBarEnabled: Boolean, isSkontoSectionActive: Boolean, onBackClicked: () -> Unit, onProceedClicked: () -> Unit, modifier: Modifier = Modifier, customBottomNavBarAdapter: InjectedViewAdapterInstance<SkontoNavigationBarBottomAdapter>?, ) + LongMethod:SkontoFragment.kt$@Composable private fun ScreenReadyState( onBackClicked: () -> Unit, onProceedClicked: () -> Unit, state: SkontoFragmentContract.State.Ready, onDiscountSectionActiveChange: (Boolean) -> Unit, onDiscountAmountChange: (BigDecimal) -> Unit, onDueDateChanged: (LocalDate) -> Unit, onFullAmountChange: (BigDecimal) -> Unit, isBottomNavigationBarEnabled: Boolean, customBottomNavBarAdapter: InjectedViewAdapterInstance<SkontoNavigationBarBottomAdapter>?, modifier: Modifier = Modifier, screenColorScheme: SkontoScreenColors = SkontoScreenColors.colors(), onInfoBannerClicked: () -> Unit, onInfoDialogDismissed: () -> Unit, ) + LongMethod:SkontoFragment.kt$@Composable private fun SkontoSection( colors: SkontoSectionColors, amount: SkontoData.Amount, dueDate: LocalDate, infoPaymentInDays: Int, infoDiscountValue: BigDecimal, onActiveChange: (Boolean) -> Unit, onSkontoAmountChange: (BigDecimal) -> Unit, onDueDateChanged: (LocalDate) -> Unit, onInfoBannerClicked: () -> Unit, edgeCase: SkontoFragmentContract.SkontoEdgeCase?, modifier: Modifier = Modifier, isActive: Boolean, ) + LongParameterList:DigitalInvoiceScreenPresenter.kt$DigitalInvoiceScreenPresenter$( activity: Activity, view: DigitalInvoiceScreenContract.View, val extractions: Map<String, GiniCaptureSpecificExtraction> = emptyMap(), val compoundExtractions: Map<String, GiniCaptureCompoundExtraction> = emptyMap(), val returnReasons: List<GiniCaptureReturnReason> = emptyList(), private val isInaccurateExtraction: Boolean = false, savedInstanceBundle: Bundle?, private val oncePerInstallEventStore: OncePerInstallEventStore = OncePerInstallEventStore( activity ), private val simpleBusEventStore: SimpleBusEventStore = SimpleBusEventStore(activity) ) + LongParameterList:GiniBank.kt$GiniBank$( context: Context, paymentRecipient: String, paymentReference: String, paymentPurpose: String, iban: String, bic: String, amount: Amount ) + LongParameterList:GiniBank.kt$GiniBank$( paymentRecipient: String, paymentReference: String, paymentPurpose: String, iban: String, bic: String, amount: Amount ) + LongParameterList:LineItem.kt$LineItem$( id: String = this.id, description: String = this.description, quantity: Int = this.quantity, rawGrossPrice: String = this.rawGrossPrice, origQuantity: Int = this.origQuantity, origRawGrossPrice: String = this.origRawGrossPrice ) + LongParameterList:SkontoFooterSectionColors.kt$SkontoFooterSectionColors.Companion$( cardBackgroundColor: Color = GiniTheme.colorScheme.card.container, titleTextColor: Color = GiniTheme.colorScheme.text.primary, amountTextColor: Color = GiniTheme.colorScheme.text.primary, savedAmountTextColor: Color = GiniTheme.colorScheme.text.success, discountLabelColorScheme: DiscountLabelColorScheme = DiscountLabelColorScheme.colors(), continueButtonColors: GiniButtonColors = GiniButtonColors.colors(), ) + LongParameterList:SkontoFragment.kt$( colors: SkontoSectionColors, amount: SkontoData.Amount, dueDate: LocalDate, infoPaymentInDays: Int, infoDiscountValue: BigDecimal, onActiveChange: (Boolean) -> Unit, onSkontoAmountChange: (BigDecimal) -> Unit, onDueDateChanged: (LocalDate) -> Unit, onInfoBannerClicked: () -> Unit, edgeCase: SkontoFragmentContract.SkontoEdgeCase?, modifier: Modifier = Modifier, isActive: Boolean, ) + LongParameterList:SkontoFragment.kt$( colors: SkontoSectionColors.InfoBannerColors, text: String, clickable: Boolean, onClicked: () -> Unit, modifier: Modifier = Modifier, icon: Painter = painterResource(id = R.drawable.gbs_icon_important_info), ) + LongParameterList:SkontoFragment.kt$( navigateBack: () -> Unit, viewModel: SkontoFragmentViewModel, modifier: Modifier = Modifier, screenColorScheme: SkontoScreenColors = SkontoScreenColors.colors(), isBottomNavigationBarEnabled: Boolean, customBottomNavBarAdapter: InjectedViewAdapterInstance<SkontoNavigationBarBottomAdapter>?, ) + LongParameterList:SkontoFragment.kt$( onBackClicked: () -> Unit, onProceedClicked: () -> Unit, state: SkontoFragmentContract.State.Ready, onDiscountSectionActiveChange: (Boolean) -> Unit, onDiscountAmountChange: (BigDecimal) -> Unit, onDueDateChanged: (LocalDate) -> Unit, onFullAmountChange: (BigDecimal) -> Unit, isBottomNavigationBarEnabled: Boolean, customBottomNavBarAdapter: InjectedViewAdapterInstance<SkontoNavigationBarBottomAdapter>?, modifier: Modifier = Modifier, screenColorScheme: SkontoScreenColors = SkontoScreenColors.colors(), onInfoBannerClicked: () -> Unit, onInfoDialogDismissed: () -> Unit, ) + LongParameterList:SkontoFragment.kt$( state: SkontoFragmentContract.State, onDiscountSectionActiveChange: (Boolean) -> Unit, onSkontoAmountChange: (BigDecimal) -> Unit, onFullAmountChange: (BigDecimal) -> Unit, onDueDateChanged: (LocalDate) -> Unit, onBackClicked: () -> Unit, onProceedClicked: () -> Unit, isBottomNavigationBarEnabled: Boolean, customBottomNavBarAdapter: InjectedViewAdapterInstance<SkontoNavigationBarBottomAdapter>?, onInfoBannerClicked: () -> Unit, onInfoDialogDismissed: () -> Unit, modifier: Modifier = Modifier, screenColorScheme: SkontoScreenColors = SkontoScreenColors.colors() ) + LongParameterList:SkontoFragment.kt$( totalAmount: SkontoData.Amount, savedAmount: SkontoData.Amount, discountValue: BigDecimal, colors: SkontoFooterSectionColors, isBottomNavigationBarEnabled: Boolean, isSkontoSectionActive: Boolean, onBackClicked: () -> Unit, onProceedClicked: () -> Unit, modifier: Modifier = Modifier, customBottomNavBarAdapter: InjectedViewAdapterInstance<SkontoNavigationBarBottomAdapter>?, ) + LongParameterList:SkontoInvoiceScanSectionColors.kt$SkontoInvoiceScanSectionColors.Companion$( cardBackgroundColor: Color = GiniTheme.colorScheme.card.container, titleTextColor: Color = GiniTheme.colorScheme.text.primary, subtitleTextColor: Color = GiniTheme.colorScheme.text.secondary, iconBackgroundColor: Color = GiniTheme.colorScheme.placeholder.background, iconTint: Color = GiniTheme.colorScheme.placeholder.tint, arrowTint: Color = GiniTheme.colorScheme.icons.secondary, ) + LongParameterList:SkontoScreenColors.kt$SkontoScreenColors.Companion$( backgroundColor: Color = GiniTheme.colorScheme.background.primary, topAppBarColors: GiniTopBarColors = GiniTopBarColors.colors(), skontoInvoiceScanSectionColors: SkontoInvoiceScanSectionColors = SkontoInvoiceScanSectionColors.colors(), discountSectionColors: SkontoSectionColors = SkontoSectionColors.colors(), withoutSkontoSectionColors: WithoutSkontoSectionColors = WithoutSkontoSectionColors.colors(), skontoFooterSectionColors: SkontoFooterSectionColors = SkontoFooterSectionColors.colors(), datePickerColor: GiniDatePickerDialogColors = GiniDatePickerDialogColors.colors(), infoDialogColors: SkontoInfoDialogColors = SkontoInfoDialogColors.colors(), ) + LongParameterList:SkontoSectionColors.kt$SkontoSectionColors.Companion$( titleTextColor: Color = GiniTheme.colorScheme.text.primary, switchColors: GiniSwitchColors = GiniSwitchColors.colors(), cardBackgroundColor: Color = GiniTheme.colorScheme.card.container, enabledHintTextColor: Color = GiniTheme.colorScheme.text.success, successInfoBannerColors: InfoBannerColors = InfoBannerColors.success(), warningInfoBannerColors: InfoBannerColors = InfoBannerColors.warning(), errorInfoBannerColors: InfoBannerColors = InfoBannerColors.error(), amountFieldColors: GiniTextInputColors = GiniTextInputColors.colors(), dueDateTextFieldColor: GiniTextInputColors = GiniTextInputColors.colors(), ) + MagicNumber:DigitalInvoiceFragment.kt$DigitalInvoiceFragment$200 + MagicNumber:DigitalInvoiceFragment.kt$DigitalInvoiceFragment$3 + MagicNumber:DigitalInvoiceFragment.kt$DigitalInvoiceFragment$350 + MagicNumber:DigitalInvoiceFragment.kt$DigitalInvoiceFragment.SmoothScroller$2400f + MagicNumber:LineItemsAdapter.kt$ViewHolder.LineItemViewHolder$0.5f + MagicNumber:SkontoFragment.kt$0.1f + MagicNumber:SkontoFragment.kt$<no name provided>$6 + MagicNumber:SkontoFragmentViewModel.kt$SkontoFragmentViewModel$4 + MagicNumber:TextExtensions.kt$<no name provided>$100 + MagicNumber:TextExtensions.kt$<no name provided>$7 + MatchingDeclarationName:Configuration.kt$CaptureConfiguration + MaxLineLength:BigDecimalExtensions.kt$internal + MaxLineLength:CaptureFlowActivity.kt$CaptureFlowActivity$* Entry point for Screen API. It exists for the purpose of communication between Capture SDK's Screen API and Return Assistant. + MaxLineLength:CaptureFlowFragment.kt$CaptureFlowFragment$// To be the first to handle back button pressed events we need to set this fragment as the primary navigation fragment + MaxLineLength:Configuration.kt$CaptureConfiguration$* + MaxLineLength:Configuration.kt$CaptureConfiguration$* Enable and configure the document import feature or disable it by passing in [DocumentImportEnabledFileTypes.NONE]. + MaxLineLength:DigitalInvoice.kt$DigitalInvoice$private + MaxLineLength:DigitalInvoice.kt$DigitalInvoice$selectableLineItems.map { sli -> if (sli.lineItem.id == selectableLineItem.lineItem.id) selectableLineItem else sli } + MaxLineLength:DigitalInvoiceBottomSheet.kt$DigitalInvoiceBottomSheet$binding = GbsEditItemBottomSheetBinding.inflate(getLayoutInflaterWithGiniCaptureTheme(it.layoutInflater), null, false) + MaxLineLength:DigitalInvoiceBottomSheet.kt$DigitalInvoiceBottomSheet$selectableLineItem = BundleCompat.getParcelable(it, ARGS_SELECTABLE_LINE_ITEM, SelectableLineItem::class.java) + MaxLineLength:DigitalInvoiceBottomSheet.kt$DigitalInvoiceBottomSheet$typedArray.getColor(R.styleable.GBSCurrencyStyle_gbsBottomSheetItemTitle, net.gini.android.capture.R.color.gc_light_01) + MaxLineLength:DigitalInvoiceBottomSheet.kt$DigitalInvoiceBottomSheet$val bottomSheetInternal = (it as? BottomSheetDialog)?.findViewById<View>(com.google.android.material.R.id.design_bottom_sheet) + MaxLineLength:DigitalInvoiceBottomSheet.kt$DigitalInvoiceBottomSheet.CurrencyAdapter$convertView.setBackgroundColor(typedArray.getColor(R.styleable.GBSCurrencyStyle_gbsCurrencyPickerItemBackgroundColor, net.gini.android.capture.R.color.gc_light_01)) + MaxLineLength:DigitalInvoiceBottomSheet.kt$DigitalInvoiceBottomSheet.CurrencyAdapter$convertView.setBackgroundColor(typedArray.getColor(R.styleable.GBSCurrencyStyle_gbsCurrencyPickerItemSelectedColor, net.gini.android.capture.R.color.gc_light_01)) + MaxLineLength:DigitalInvoiceBottomSheet.kt$DigitalInvoiceBottomSheet.CurrencyAdapter$private var selectedCurrency: String + MaxLineLength:DigitalInvoiceException.kt$DigitalInvoiceException.DescriptionMissingException$class + MaxLineLength:DigitalInvoiceException.kt$DigitalInvoiceException.GrossPriceMissingException$class + MaxLineLength:DigitalInvoiceException.kt$DigitalInvoiceException.GrossPriceParsingException$class + MaxLineLength:DigitalInvoiceException.kt$DigitalInvoiceException.LineItemsMissingException$class + MaxLineLength:DigitalInvoiceException.kt$DigitalInvoiceException.MixedCurrenciesException$class + MaxLineLength:DigitalInvoiceException.kt$DigitalInvoiceException.QuantityMissingException$class + MaxLineLength:DigitalInvoiceException.kt$DigitalInvoiceException.QuantityParsingException$class + MaxLineLength:DigitalInvoiceFragment.kt$DigitalInvoiceFragment$InjectedViewAdapterHolder + MaxLineLength:DigitalInvoiceFragment.kt$DigitalInvoiceFragment.Companion$internal + MaxLineLength:DigitalInvoiceHelpFragment.kt$DigitalInvoiceHelpFragment$InjectedViewAdapterHolder + MaxLineLength:DigitalInvoiceHelpNavigationBarBottomAdapter.kt$DefaultDigitalInvoiceHelpNavigationBarBottomAdapter$val binding = GbsHelpNavigationBarBottomBinding.inflate(LayoutInflater.from(container.context), container, false) + MaxLineLength:DigitalInvoiceNavigationBarBottomAdapter.kt$DefaultDigitalInvoiceNavigationBarBottomAdapter$binding = GbsDigitalInvoiceNavigationBarBottomBinding.inflate(LayoutInflater.from(container.context), container, false) + MaxLineLength:DigitalInvoiceOnboardingFragment.kt$DigitalInvoiceOnboardingFragment$* + MaxLineLength:DigitalInvoiceOnboardingFragment.kt$DigitalInvoiceOnboardingFragment$InjectedViewAdapterHolder(GiniBank.digitalInvoiceOnboardingIllustrationAdapterInstance) { it.onVisible() } + MaxLineLength:DigitalInvoiceOnboardingNavigationBarBottomAdapter.kt$DefaultDigitalInvoiceOnboardingNavigationBarBottomAdapter$val binding = GbsDigitalInvoiceOnboardingNavigationBarBottomBinding.inflate(LayoutInflater.from(container.context), container, false) + MaxLineLength:DigitalInvoiceScreenPresenter.kt$DigitalInvoiceScreenPresenter$totalGrossPriceIntegralAndFractionalParts = digitalInvoice.totalPriceIntegralAndFractionalParts() + MaxLineLength:GiniBank.kt$GiniBank$"Please use sendTransferSummary() to provide the required transfer summary first (if the user has completed TAN verification) and then releaseCapture() to let the SDK free up used resources." + MaxLineLength:GiniBank.kt$GiniBank$"Please use setCaptureConfiguration(context, captureConfiguration) which allows instance recreation without having to call releaseCapture()" + MaxLineLength:GiniBank.kt$GiniBank$* + MaxLineLength:GiniBank.kt$GiniBank$check(capture != null) { "Capture feature is not configured. Call setCaptureConfiguration before starting the flow." } + MaxLineLength:GiniBank.kt$GiniBank$check(giniCapture != null) { "Capture feature is not configured. Call setCaptureConfiguration before creating the CaptureFlowFragment." } + MaxLineLength:GiniBank.kt$GiniBank$check(giniCapture != null) { "Capture feature is not configured. Call setCaptureConfiguration before starting the flow." } + MaxLineLength:GiniBank.kt$GiniBank$check(giniCapture == null) { "Gini Capture already configured. Call releaseCapture() before setting a new configuration." } + MaxLineLength:GiniBank.kt$GiniBank$internal + MaxLineLength:HelpItem.kt$HelpItem$enum + MaxLineLength:LineItem.kt$LineItem$override fun toString() + MaxLineLength:LineItemsAdapter.kt$LineItemsAdapter$// Adding padding for the last addon item, so the item looks full height without modifying the layout file + MaxLineLength:LineItemsAdapter.kt$LineItemsAdapter$viewHolder.itemView.setPadding(context.resources.getDimension(net.gini.android.capture.R.dimen.gc_large).toInt(), 0, 0, bottomPadding) + MaxLineLength:LineItemsValidator.kt$if + MaxLineLength:OncePerInstallEventStore.kt$OncePerInstallEventStore$private val mSharedPreferences: SharedPreferences = context.getSharedPreferences(ONCE_PER_INSTALL_EVENTS, Context.MODE_PRIVATE) + MaxLineLength:SelectableLineItem.kt$SelectableLineItem$* + MaxLineLength:SelectableLineItem.kt$SelectableLineItem$override fun toString() + NewLineAtEndOfFile:AmountParsingException.kt$net.gini.android.bank.sdk.error.AmountParsingException.kt + NewLineAtEndOfFile:AutoClearedValue.kt$net.gini.android.bank.sdk.capture.util.AutoClearedValue.kt + NewLineAtEndOfFile:AutoClearedValue.kt$net.gini.android.bank.sdk.util.AutoClearedValue.kt + NewLineAtEndOfFile:BigDecimalExtensions.kt$net.gini.android.bank.sdk.capture.digitalinvoice.BigDecimalExtensions.kt + NewLineAtEndOfFile:CaptureFlowActivity.kt$net.gini.android.bank.sdk.capture.CaptureFlowActivity.kt + NewLineAtEndOfFile:ContextExtensions.kt$net.gini.android.bank.sdk.util.ContextExtensions.kt + NewLineAtEndOfFile:CoroutineContinuationHelper.kt$net.gini.android.bank.sdk.util.CoroutineContinuationHelper.kt + NewLineAtEndOfFile:DigitalInvoice.kt$net.gini.android.bank.sdk.capture.digitalinvoice.DigitalInvoice.kt + NewLineAtEndOfFile:DigitalInvoiceAddon.kt$net.gini.android.bank.sdk.capture.digitalinvoice.DigitalInvoiceAddon.kt + NewLineAtEndOfFile:DigitalInvoiceAnalyticsExt.kt$net.gini.android.bank.sdk.analytics.DigitalInvoiceAnalyticsExt.kt + NewLineAtEndOfFile:DigitalInvoiceException.kt$net.gini.android.bank.sdk.capture.digitalinvoice.DigitalInvoiceException.kt + NewLineAtEndOfFile:DigitalInvoiceFragmentListener.kt$net.gini.android.bank.sdk.capture.digitalinvoice.DigitalInvoiceFragmentListener.kt + NewLineAtEndOfFile:DigitalInvoiceHelpFragment.kt$net.gini.android.bank.sdk.capture.digitalinvoice.help.DigitalInvoiceHelpFragment.kt + NewLineAtEndOfFile:DigitalInvoiceNavigationBarBottomAdapter.kt$net.gini.android.bank.sdk.capture.digitalinvoice.view.DigitalInvoiceNavigationBarBottomAdapter.kt + NewLineAtEndOfFile:DigitalInvoiceOnboardingFragmentListener.kt$net.gini.android.bank.sdk.capture.digitalinvoice.onboarding.DigitalInvoiceOnboardingFragmentListener.kt + NewLineAtEndOfFile:DigitalInvoiceOnboardingNavigationBarBottomAdapter.kt$net.gini.android.bank.sdk.capture.digitalinvoice.view.DigitalInvoiceOnboardingNavigationBarBottomAdapter.kt + NewLineAtEndOfFile:DigitalInvoiceScreenContract.kt$net.gini.android.bank.sdk.capture.digitalinvoice.DigitalInvoiceScreenContract.kt + NewLineAtEndOfFile:DigitalInvoiceScreenPresenter.kt$net.gini.android.bank.sdk.capture.digitalinvoice.DigitalInvoiceScreenPresenter.kt + NewLineAtEndOfFile:DigitalOnboardingScreenContract.kt$net.gini.android.bank.sdk.capture.digitalinvoice.onboarding.DigitalOnboardingScreenContract.kt + NewLineAtEndOfFile:DigitalOnboardingScreenPresenter.kt$net.gini.android.bank.sdk.capture.digitalinvoice.onboarding.DigitalOnboardingScreenPresenter.kt + NewLineAtEndOfFile:EditTextExtensions.kt$net.gini.android.bank.sdk.capture.digitalinvoice.details.EditTextExtensions.kt + NewLineAtEndOfFile:FragmentExtension.kt$net.gini.android.bank.sdk.capture.util.FragmentExtension.kt + NewLineAtEndOfFile:FragmentExtensions.kt$net.gini.android.bank.sdk.util.FragmentExtensions.kt + NewLineAtEndOfFile:GiniBankAPI.kt$net.gini.android.bank.sdk.util.GiniBankAPI.kt + NewLineAtEndOfFile:IsolatedKoinContext.kt$net.gini.android.bank.sdk.di.IsolatedKoinContext.kt + NewLineAtEndOfFile:LineItem.kt$net.gini.android.bank.sdk.capture.digitalinvoice.LineItem.kt + NewLineAtEndOfFile:LineItemDetailsScreenPresenter.kt$net.gini.android.bank.sdk.capture.digitalinvoice.details.LineItemDetailsScreenPresenter.kt + NewLineAtEndOfFile:LineItemsValidator.kt$net.gini.android.bank.sdk.capture.digitalinvoice.LineItemsValidator.kt + NewLineAtEndOfFile:PaymentRequestIntent.kt$net.gini.android.bank.sdk.pay.PaymentRequestIntent.kt + NewLineAtEndOfFile:PreferencesExtension.kt$net.gini.android.bank.sdk.capture.util.PreferencesExtension.kt + NewLineAtEndOfFile:ResolvePaymentInputExtensions.kt$net.gini.android.bank.sdk.util.ResolvePaymentInputExtensions.kt + NewLineAtEndOfFile:ReturnReasonsDialog.kt$net.gini.android.bank.sdk.capture.digitalinvoice.ReturnReasonsDialog.kt + NewLineAtEndOfFile:SelectableLineItem.kt$net.gini.android.bank.sdk.capture.digitalinvoice.SelectableLineItem.kt + NewLineAtEndOfFile:SkontoFooterSectionColors.kt$net.gini.android.bank.sdk.capture.skonto.colors.section.SkontoFooterSectionColors.kt + NewLineAtEndOfFile:SkontoFragment.kt$net.gini.android.bank.sdk.capture.skonto.SkontoFragment.kt + NewLineAtEndOfFile:SkontoFragmentContract.kt$net.gini.android.bank.sdk.capture.skonto.SkontoFragmentContract.kt + NewLineAtEndOfFile:SkontoFragmentListener.kt$net.gini.android.bank.sdk.capture.skonto.SkontoFragmentListener.kt + NewLineAtEndOfFile:SkontoFragmentViewModel.kt$net.gini.android.bank.sdk.capture.skonto.SkontoFragmentViewModel.kt + NewLineAtEndOfFile:SkontoInfoDialogColors.kt$net.gini.android.bank.sdk.capture.skonto.colors.section.SkontoInfoDialogColors.kt + NewLineAtEndOfFile:SkontoInvoiceScanSectionColors.kt$net.gini.android.bank.sdk.capture.skonto.colors.section.SkontoInvoiceScanSectionColors.kt + NewLineAtEndOfFile:SkontoNavigationBarBottomAdapter.kt$net.gini.android.bank.sdk.capture.skonto.SkontoNavigationBarBottomAdapter.kt + NewLineAtEndOfFile:SkontoScreenModule.kt$net.gini.android.bank.sdk.capture.skonto.SkontoScreenModule.kt + NewLineAtEndOfFile:SkontoSectionColors.kt$net.gini.android.bank.sdk.capture.skonto.colors.section.SkontoSectionColors.kt + NewLineAtEndOfFile:WithoutSkontoSectionColors.kt$net.gini.android.bank.sdk.capture.skonto.colors.section.WithoutSkontoSectionColors.kt + ReturnCount:CaptureFlowFragment.kt$CaptureFlowFragment$override fun onFinishedWithResult(result: CaptureSDKResult) + SerialVersionUIDInSerializableClass:SkontoData.kt$SkontoData : Serializable + SerialVersionUIDInSerializableClass:SkontoData.kt$SkontoData$Amount : Serializable + SerialVersionUIDInSerializableClass:SkontoData.kt$SkontoData$SkontoPaymentMethod : Serializable + SwallowedException:CaptureFlowFragment.kt$CaptureFlowFragment$catch (e: Exception) { finishWithResult(result) } + SwallowedException:CaptureFlowFragment.kt$CaptureFlowFragment$catch (notUsed: DigitalInvoiceException) { tryShowingSkontoScreen(result) return } + SwallowedException:DigitalInvoiceAddon.kt$DigitalInvoiceAddon.Companion$catch (e: Exception) { Pair(null, null) } + SwallowedException:LineItem.kt$LineItem$catch (e: Exception) { Triple(BigDecimal.ZERO, "", null) } + ThrowsCount:SkontoDataExtractor.kt$SkontoDataExtractor.Companion$fun extractSkontoData( extractions: Map<String, GiniCaptureSpecificExtraction>, compoundExtractions: Map<String, GiniCaptureCompoundExtraction>, ): SkontoData + TooGenericExceptionCaught:CaptureFlowFragment.kt$CaptureFlowFragment$e: Exception + TooGenericExceptionCaught:DigitalInvoiceAddon.kt$DigitalInvoiceAddon.Companion$e: Exception + TooGenericExceptionCaught:LineItem.kt$LineItem$e: Exception + TooGenericExceptionCaught:LineItemsValidator.kt$e: Exception + TooGenericExceptionThrown:GiniBank.kt$GiniBank$throw Exception( paymentRequestResource.message, paymentRequestResource.exception ) + TooGenericExceptionThrown:GiniBank.kt$GiniBank$throw Exception( resolvedPaymentResource.message, resolvedPaymentResource.exception ) + TooGenericExceptionThrown:GiniBank.kt$GiniBank$throw Exception("Cancelled") + TooManyFunctions:CaptureFlowFragment.kt$CaptureFlowFragment : FragmentGiniCaptureFragmentListenerDigitalInvoiceFragmentListenerSkontoFragmentListenerCancelListener + TooManyFunctions:DigitalInvoice.kt$DigitalInvoice + TooManyFunctions:DigitalInvoiceBottomSheet.kt$DigitalInvoiceBottomSheet : BottomSheetDialogFragmentView + TooManyFunctions:DigitalInvoiceFragment.kt$DigitalInvoiceFragment : FragmentViewLineItemsAdapterListener + TooManyFunctions:DigitalInvoiceOnboardingFragment.kt$DigitalInvoiceOnboardingFragment : FragmentView + TooManyFunctions:DigitalInvoiceScreenPresenter.kt$DigitalInvoiceScreenPresenter : Presenter + TooManyFunctions:GiniBank.kt$GiniBank$GiniBank + TooManyFunctions:LineItemDetailsScreenContract.kt$LineItemDetailsScreenContract$View : GiniCaptureBaseView + TooManyFunctions:LineItemDetailsScreenPresenter.kt$LineItemDetailsScreenPresenter : Presenter + TooManyFunctions:ReturnReasonsDialog.kt$ReturnReasonDialog : BottomSheetDialogFragment + TooManyFunctions:SkontoFragment.kt$net.gini.android.bank.sdk.capture.skonto.SkontoFragment.kt + TooManyFunctions:SkontoFragmentViewModel.kt$SkontoFragmentViewModel : ViewModel + TopLevelPropertyNaming:PaymentRequestIntent.kt$internal const val Scheme = "ginipay" // It has to match the scheme in query tag in manifest + TopLevelPropertyNaming:PaymentRequestIntent.kt$private const val PaymentPath = "payment" + UnusedPrivateMember:DigitalInvoiceFragment.kt$private const val TAG_WHAT_IS_THIS_DIALOG = "TAG_WHAT_IS_THIS_DIALOG" + UnusedPrivateMember:SkontoDataExtractor.kt$SkontoDataExtractor.Companion$val skontoAmountDiscounted = skontoDiscountData.extractDataByKeys( "skontoAmountDiscounted", "skontoAmountDiscountedCalculated" ) + UnusedPrivateMember:SkontoFragment.kt$@Composable @Preview private fun ScreenReadyStatePreviewLight() + UnusedPrivateMember:SkontoFragment.kt$@Composable @Preview(uiMode = UI_MODE_NIGHT_YES) private fun ScreenReadyStatePreviewDark() + UnusedPrivateMember:SkontoFragment.kt$@Composable private fun YourInvoiceScanSection( modifier: Modifier = Modifier, colorScheme: SkontoInvoiceScanSectionColors, ) + UtilityClassWithPublicConstructor:LineItemsValidator.kt$LineItemsValidator + UtilityClassWithPublicConstructor:SkontoDataExtractor.kt$SkontoDataExtractor + WildcardImport:CoroutineContinuationHelper.kt$import kotlinx.coroutines.* + WildcardImport:GiniBank.kt$import net.gini.android.capture.* + WildcardImport:LineItemsAdapter.kt$import net.gini.android.bank.sdk.capture.digitalinvoice.ViewType.* + WildcardImport:LineItemsValidator.kt$import net.gini.android.bank.sdk.capture.digitalinvoice.DigitalInvoiceException.* + WildcardImport:SimpleBusEventStore.kt$import kotlinx.coroutines.flow.* + + diff --git a/buildSrc/src/main/kotlin/net/gini/gradle/CodeAnalysisPlugin.kt b/buildSrc/src/main/kotlin/net/gini/gradle/CodeAnalysisPlugin.kt index 63ec7ede41..19e631388e 100644 --- a/buildSrc/src/main/kotlin/net/gini/gradle/CodeAnalysisPlugin.kt +++ b/buildSrc/src/main/kotlin/net/gini/gradle/CodeAnalysisPlugin.kt @@ -22,7 +22,7 @@ import org.jlleitschuh.gradle.ktlint.reporter.ReporterType * * Copyright (c) 2021 Gini GmbH. */ -class CodeAnalysisPlugin: Plugin { +class CodeAnalysisPlugin : Plugin { override fun apply(target: Project) { configureCheckstyle(target) @@ -87,8 +87,21 @@ class CodeAnalysisPlugin: Plugin { private fun configureDetekt(target: Project) { target.plugins.apply("io.gitlab.arturbosch.detekt") + val disabledModules = listOf( + ":core-api-library:library", + ":core-api-library:shared-tests", + ":health-api-library:library", + ":bank-api-library:library", + ":health-sdk:sdk", + ":health-sdk:example-app", + //":capture-sdk:sdk", <-- Detekt enabled here + ":capture-sdk:default-network", + //":bank-sdk:sdk", <-- Detekt enabled here + //":bank-sdk:example-app", <-- Detekt enabled here + ) + target.extensions.getByType().apply { - isIgnoreFailures = true + isIgnoreFailures = disabledModules.contains(target.path) source = target.files("src/main/java") } } diff --git a/capture-sdk/sdk/detekt-baseline.xml b/capture-sdk/sdk/detekt-baseline.xml new file mode 100644 index 0000000000..3c638b802a --- /dev/null +++ b/capture-sdk/sdk/detekt-baseline.xml @@ -0,0 +1,284 @@ + + + + + ComplexMethod:DefaultPages.kt$DefaultPages.Companion$ @JvmStatic fun asArrayList(isMultiPageEnabled: Boolean, isQRCodeScanningEnabled: Boolean): ArrayList<OnboardingPage> + ComplexMethod:ErrorType.kt$ErrorType.Companion$@JvmStatic fun typeFromError(error: Error): ErrorType + ComplexMethod:TypographyToTextStyleBridge.kt$ internal fun TypedArray.getFontFamilyOrNull(index: Int): FontFamilyWithWeight? + ComplexMethod:TypographyToTextStyleBridge.kt$@Composable fun textStyleFromTextAppearance( @StyleRes id: Int, density: Density = Density(LocalContext.current), setTextColors: Boolean = true ): TextStyle + EmptyCatchBlock:DeviceInfo.kt$DeviceInfo.CachedInfo${ } + EmptyDefaultConstructor:CameraXController.kt$CameraLifecycle$() + EmptyFunctionBlock:CameraXController.kt$CameraXController.<no name provided>${} + EmptyFunctionBlock:CustomLoadingIndicatorAdapter.kt$DefaultLoadingIndicatorAdapter${} + EmptyFunctionBlock:OnButtonLoadingIndicatorAdapter.kt$DefaultOnButtonLoadingIndicatorAdapter${} + EmptyFunctionBlock:OnboardingIllustrationAdapter.kt$ImageOnboardingIllustrationAdapter${} + EmptyFunctionBlock:PreviewPagesAdapter.kt$PreviewPagesAdapter.<no name provided>${ } + ForbiddenComment:TypographyToTextStyleBridge.kt$// FIXME: Normally we'd use TextUnit.Unspecified, + ForbiddenComment:TypographyToTextStyleBridge.kt$// TODO: Compose does not expose a FontFamily for all strings yet + LongMethod:CameraXController.kt$CameraXController$override fun open(): CompletableFuture<Void> + LongMethod:GiniColorPalette.kt$ internal fun giniDarkColorScheme( giniColorPrimitives: GiniColorPrimitives = GiniColorPrimitives() ) + LongMethod:GiniColorPalette.kt$ internal fun giniLightColorScheme( giniColorPrimitives: GiniColorPrimitives = GiniColorPrimitives() ) + LongMethod:GiniDatePickerDialog.kt$@Composable fun GiniDatePickerDialog( onDismissRequest: () -> Unit, onSaved: (LocalDate) -> Unit, modifier: Modifier = Modifier, date: LocalDate = LocalDate.now(), selectableDates: SelectableDates = DatePickerDefaults.AllDates, colors: GiniDatePickerDialogColors = GiniDatePickerDialogColors.colors() ) + LongMethod:TypographyToTextStyleBridge.kt$@Composable fun textStyleFromTextAppearance( @StyleRes id: Int, density: Density = Density(LocalContext.current), setTextColors: Boolean = true ): TextStyle + LongParameterList:GiniAmountTextInput.kt$( amount: BigDecimal, currencyCode: String, label: String, modifier: Modifier = Modifier, onValueChange: (BigDecimal) -> Unit, trailingContent: @Composable () -> Unit = {}, enabled: Boolean = true, isError: Boolean = false, decimalFormatter: DecimalFormatter = DecimalFormatter(), colors: GiniTextInputColors = GiniTextInputColors.colors(), ) + LongParameterList:GiniDatePickerDialog.kt$( onDismissRequest: () -> Unit, onSaved: (LocalDate) -> Unit, modifier: Modifier = Modifier, date: LocalDate = LocalDate.now(), selectableDates: SelectableDates = DatePickerDefaults.AllDates, colors: GiniDatePickerDialogColors = GiniDatePickerDialogColors.colors() ) + LongParameterList:GiniDatePickerDialogColors.kt$GiniDatePickerDialogColors.Companion$( dateSelected: Color = GiniTheme.colorScheme.datePicker.date.containerFocused, borderDate: Color = GiniTheme.colorScheme.datePicker.date.containerOutlined, textHeadline: Color = GiniTheme.colorScheme.datePicker.text.primary, textSupporting: Color = GiniTheme.colorScheme.datePicker.text.secondary, textButtons: Color = GiniTheme.colorScheme.datePicker.text.accent, textDateToday: Color = GiniTheme.colorScheme.datePicker.text.primary, textDateSelected: Color = GiniTheme.colorScheme.datePicker.date.contentFocused, textDateEnabled: Color = GiniTheme.colorScheme.datePicker.text.primary, textDateDisabled: Color = GiniTheme.colorScheme.datePicker.text.secondary, divider: Color = GiniTheme.colorScheme.datePicker.divider, ) + LongParameterList:GiniTextInput.kt$( text: String, label: @Composable () -> Unit, onValueChange: (String) -> Unit, modifier: Modifier = Modifier, trailingContent: @Composable () -> Unit = {}, enabled: Boolean = true, isError: Boolean = false, readOnly: Boolean = false, keyboardOptions: KeyboardOptions = KeyboardOptions.Default, colors: GiniTextInputColors = GiniTextInputColors.colors(), visualTransformation: VisualTransformation = VisualTransformation.None, interactionSource: MutableInteractionSource = remember { MutableInteractionSource() }, ) + LongParameterList:GiniTextInput.kt$( text: String, label: String, modifier: Modifier = Modifier, onValueChange: (String) -> Unit, trailingContent: @Composable () -> Unit = {}, enabled: Boolean = true, isError: Boolean = false, readOnly: Boolean = false, keyboardOptions: KeyboardOptions = KeyboardOptions.Default, colors: GiniTextInputColors = GiniTextInputColors.colors(), visualTransformation: VisualTransformation = VisualTransformation.None, interactionSource: MutableInteractionSource = remember { MutableInteractionSource() }, ) + LongParameterList:GiniTextInputColors.kt$GiniTextInputColors.Companion$( containerFocused: Color = GiniTheme.colorScheme.textField.container, containerUnfocused: Color = GiniTheme.colorScheme.textField.container, containerDisabled: Color = GiniTheme.colorScheme.textField.container, textFocused: Color = GiniTheme.colorScheme.textField.text.focused, textUnfocused: Color = GiniTheme.colorScheme.textField.text.unfocused, textDisabled: Color = GiniTheme.colorScheme.textField.text.disabled, textError: Color = GiniTheme.colorScheme.textField.text.focused, indicatorFocused: Color = GiniTheme.colorScheme.textField.indicator.focused, indicatorUnfocused: Color = GiniTheme.colorScheme.textField.indicator.unfocused, indicatorDisabled: Color = GiniTheme.colorScheme.textField.indicator.disabled, indicatorError: Color = GiniTheme.colorScheme.textField.indicator.error, trailingContentFocused: Color = GiniTheme.colorScheme.textField.content.trailing, trailingContentUnfocused: Color = GiniTheme.colorScheme.textField.content.trailing, trailingContentDisabled: Color = GiniTheme.colorScheme.textField.content.trailing, trailingContentError: Color = GiniTheme.colorScheme.textField.content.trailing, labelError: Color = GiniTheme.colorScheme.textField.label.error, labelUnfocused: Color = GiniTheme.colorScheme.textField.label.unfocused, labelFocused: Color = GiniTheme.colorScheme.textField.label.focused, labelDisabled: Color = GiniTheme.colorScheme.textField.label.disabled, ) + LongParameterList:IBANRecognizer.kt$IBANRecognizer$( byteArray: ByteArray, width: Int, height: Int, rotationDegrees: Int, doneCallback: (List<String>) -> Unit, cancelledCallback: () -> Unit ) + LongParameterList:IBANRecognizer.kt$IBANRecognizer$( image: Image, width: Int, height: Int, rotationDegrees: Int, doneCallback: (List<String>) -> Unit, cancelledCallback: () -> Unit ) + LongParameterList:QRCodePopup.kt$QRCodePopup$( private val fragmentImplCallback: FragmentImplCallback, private val popupView: View, private val supportedBackgroundView: View? = null, private val loadingIndicatorContainer: InjectedViewContainer<CustomLoadingIndicatorAdapter>?, private val hideDelayMs: Long, private val supported: Boolean, private var onClicked: ((T?) -> Unit)? = {}, private val onHide: (() -> Unit)? = null ) + LongParameterList:TextRecognizer.kt$TextRecognizer$( byteArray: ByteArray, width: Int, height: Int, rotationDegrees: Int, doneCallback: (RecognizedText?) -> Unit, cancelledCallback: () -> Unit) + LongParameterList:TextRecognizer.kt$TextRecognizer$(image: Image, width: Int, height: Int, rotationDegrees: Int, doneCallback: (RecognizedText?) -> Unit, cancelledCallback: () -> Unit) + MagicNumber:AmplitudeUserAnalyticsEventTracker.kt$AmplitudeUserAnalyticsEventTracker$5000 + MagicNumber:CameraXController.kt$CameraXController$2372 + MagicNumber:CameraXController.kt$CameraXController$4216 + MagicNumber:CropToCameraFrameTextRecognizer.kt$CropToCameraFrameTextRecognizer$270 + MagicNumber:CropToCameraFrameTextRecognizer.kt$CropToCameraFrameTextRecognizer$360 + MagicNumber:CropToCameraFrameTextRecognizer.kt$CropToCameraFrameTextRecognizer$90 + MagicNumber:DecimalFormatter.kt$DecimalFormatter$100 + MagicNumber:DecimalFormatter.kt$DecimalFormatter$7 + MagicNumber:DecimalInputVisualTransformation.kt$DecimalInputVisualTransformation.CustomOffsetMapping$3 + MagicNumber:DecimalInputVisualTransformation.kt$DecimalInputVisualTransformation.CustomOffsetMapping$4 + MagicNumber:DecimalInputVisualTransformation.kt$DecimalInputVisualTransformation.CustomOffsetMapping$5 + MagicNumber:DecimalInputVisualTransformation.kt$DecimalInputVisualTransformation.CustomOffsetMapping$6 + MagicNumber:DecimalInputVisualTransformation.kt$DecimalInputVisualTransformation.CustomOffsetMapping$7 + MagicNumber:DecimalInputVisualTransformation.kt$DecimalInputVisualTransformation.CustomOffsetMapping$8 + MagicNumber:DecimalInputVisualTransformation.kt$DecimalInputVisualTransformation.CustomOffsetMapping$9 + MagicNumber:ErrorType.kt$ErrorType.Companion$400 + MagicNumber:ErrorType.kt$ErrorType.Companion$401 + MagicNumber:ErrorType.kt$ErrorType.Companion$402 + MagicNumber:ErrorType.kt$ErrorType.Companion$498 + MagicNumber:ErrorType.kt$ErrorType.Companion$500 + MagicNumber:ErrorType.kt$ErrorType.Companion$503 + MagicNumber:Extensions.kt$100 + MagicNumber:FileImportHelpFragment.kt$FileImportHelpFragment$5 + MagicNumber:FileImportHelpFragment.kt$FileImportHelpFragment$500 + MagicNumber:GiniColorPrimirives.kt$GiniColorPrimitives$0xFF000000 + MagicNumber:GiniColorPrimirives.kt$GiniColorPrimitives$0xFF048016 + MagicNumber:GiniColorPrimirives.kt$GiniColorPrimitives$0xFF09B523 + MagicNumber:GiniColorPrimirives.kt$GiniColorPrimitives$0xFF0A84FF + MagicNumber:GiniColorPrimirives.kt$GiniColorPrimitives$0xFF121212 + MagicNumber:GiniColorPrimirives.kt$GiniColorPrimitives$0xFF313131 + MagicNumber:GiniColorPrimirives.kt$GiniColorPrimitives$0xFF3193FD + MagicNumber:GiniColorPrimirives.kt$GiniColorPrimitives$0xFF32D74B + MagicNumber:GiniColorPrimirives.kt$GiniColorPrimitives$0xFF4A4A4A + MagicNumber:GiniColorPrimirives.kt$GiniColorPrimitives$0xFF626262 + MagicNumber:GiniColorPrimirives.kt$GiniColorPrimitives$0xFF62ACFB + MagicNumber:GiniColorPrimirives.kt$GiniColorPrimitives$0xFF7A7A7A + MagicNumber:GiniColorPrimirives.kt$GiniColorPrimitives$0xFF830801 + MagicNumber:GiniColorPrimirives.kt$GiniColorPrimitives$0xFF93C4F9 + MagicNumber:GiniColorPrimirives.kt$GiniColorPrimitives$0xFFA17503 + MagicNumber:GiniColorPrimirives.kt$GiniColorPrimitives$0xFFBFBFBF + MagicNumber:GiniColorPrimirives.kt$GiniColorPrimitives$0xFFC4DDF7 + MagicNumber:GiniColorPrimirives.kt$GiniColorPrimitives$0xFFCCCCCC + MagicNumber:GiniColorPrimirives.kt$GiniColorPrimitives$0xFFD0ECD4 + MagicNumber:GiniColorPrimirives.kt$GiniColorPrimitives$0xFFD9190E + MagicNumber:GiniColorPrimirives.kt$GiniColorPrimitives$0xFFD9A00E + MagicNumber:GiniColorPrimirives.kt$GiniColorPrimitives$0xFFD9D9D9 + MagicNumber:GiniColorPrimirives.kt$GiniColorPrimitives$0xFFDEEEE1 + MagicNumber:GiniColorPrimirives.kt$GiniColorPrimitives$0xFFE5E5E5 + MagicNumber:GiniColorPrimirives.kt$GiniColorPrimitives$0xFFECD0D0 + MagicNumber:GiniColorPrimirives.kt$GiniColorPrimitives$0xFFECE4D0 + MagicNumber:GiniColorPrimirives.kt$GiniColorPrimitives$0xFFEEDEDE + MagicNumber:GiniColorPrimirives.kt$GiniColorPrimitives$0xFFEEEADE + MagicNumber:GiniColorPrimirives.kt$GiniColorPrimitives$0xFFF2F2F2 + MagicNumber:GiniColorPrimirives.kt$GiniColorPrimitives$0xFFFF453A + MagicNumber:GiniColorPrimirives.kt$GiniColorPrimitives$0xFFFFC73A + MagicNumber:GiniColorPrimirives.kt$GiniColorPrimitives$0xFFFFFFFF + MagicNumber:GiniDatePickerDialog.kt$0.95f + MagicNumber:GiniDatePickerDialog.kt$12 + MagicNumber:GiniSwitch.kt$0.7f + MagicNumber:IBANKnowledge.kt$IBANKnowledge$15 + MagicNumber:IBANKnowledge.kt$IBANKnowledge$16 + MagicNumber:IBANKnowledge.kt$IBANKnowledge$18 + MagicNumber:IBANKnowledge.kt$IBANKnowledge$19 + MagicNumber:IBANKnowledge.kt$IBANKnowledge$20 + MagicNumber:IBANKnowledge.kt$IBANKnowledge$21 + MagicNumber:IBANKnowledge.kt$IBANKnowledge$22 + MagicNumber:IBANKnowledge.kt$IBANKnowledge$23 + MagicNumber:IBANKnowledge.kt$IBANKnowledge$24 + MagicNumber:IBANKnowledge.kt$IBANKnowledge$25 + MagicNumber:IBANKnowledge.kt$IBANKnowledge$26 + MagicNumber:IBANKnowledge.kt$IBANKnowledge$27 + MagicNumber:IBANKnowledge.kt$IBANKnowledge$28 + MagicNumber:IBANKnowledge.kt$IBANKnowledge$29 + MagicNumber:IBANKnowledge.kt$IBANKnowledge$30 + MagicNumber:IBANKnowledge.kt$IBANKnowledge$31 + MagicNumber:IBANRecognizerFilter.kt$IBANRecognizerFilter$4 + MagicNumber:IBANValidator.kt$IBANValidator$10 + MagicNumber:IBANValidator.kt$IBANValidator$35 + MagicNumber:IBANValidator.kt$IBANValidator$4 + MagicNumber:IBANValidator.kt$IBANValidator$55 + MagicNumber:IntervalClickListenerHelper.kt$IntervalClickListenerHelper$500L + MagicNumber:QRCodePopup.kt$QRCodePopup$1000 + MagicNumber:TypographyToTextStyleBridge.kt$149 + MagicNumber:TypographyToTextStyleBridge.kt$150 + MagicNumber:TypographyToTextStyleBridge.kt$22 + MagicNumber:TypographyToTextStyleBridge.kt$23 + MagicNumber:TypographyToTextStyleBridge.kt$249 + MagicNumber:TypographyToTextStyleBridge.kt$250 + MagicNumber:TypographyToTextStyleBridge.kt$3 + MagicNumber:TypographyToTextStyleBridge.kt$349 + MagicNumber:TypographyToTextStyleBridge.kt$350 + MagicNumber:TypographyToTextStyleBridge.kt$449 + MagicNumber:TypographyToTextStyleBridge.kt$450 + MagicNumber:TypographyToTextStyleBridge.kt$549 + MagicNumber:TypographyToTextStyleBridge.kt$550 + MagicNumber:TypographyToTextStyleBridge.kt$649 + MagicNumber:TypographyToTextStyleBridge.kt$650 + MagicNumber:TypographyToTextStyleBridge.kt$749 + MagicNumber:TypographyToTextStyleBridge.kt$750 + MagicNumber:TypographyToTextStyleBridge.kt$849 + MagicNumber:TypographyToTextStyleBridge.kt$850 + MagicNumber:TypographyToTextStyleBridge.kt$999 + MagicNumber:Width.kt$600 + MagicNumber:Width.kt$840 + MatchingDeclarationName:GiniColorPalette.kt$GiniColorScheme + MatchingDeclarationName:GiniColorPrimirives.kt$GiniColorPrimitives + MaxLineLength:BundleHelper.kt$classLoader: ClassLoader? = null + MaxLineLength:BundleHelper.kt$fun + MaxLineLength:CropToCameraFrameTextRecognizer.kt$CropToCameraFrameTextRecognizer$actualTextRecognizer + MaxLineLength:DefaultPages.kt$DefaultPages.Companion$if + MaxLineLength:DefaultPages.kt$DefaultPages.Companion$onboardingPage.illustrationAdapter = GiniCapture.getInstance().onboardingAlignCornersIllustrationAdapter + MaxLineLength:DefaultPages.kt$DefaultPages.Companion$onboardingPage.illustrationAdapter = GiniCapture.getInstance().onboardingLightingIllustrationAdapter + MaxLineLength:DefaultPages.kt$DefaultPages.Companion$onboardingPage.illustrationAdapter = GiniCapture.getInstance().onboardingMultiPageIllustrationAdapter + MaxLineLength:ErrorFragmentImpl.kt$ErrorFragmentImpl$view.findViewById<InjectedViewContainer<NavigationBarTopAdapter>>(R.id.gc_injected_navigation_bar_container_top) + MaxLineLength:FailureException.kt$FailureException.Companion$* + MaxLineLength:FailureException.kt$FailureException.Companion$throwable is CompletionException && throwable.cause is FailureException -> throwable.cause as FailureException + MaxLineLength:FileImportHelpFragment.kt$FileImportHelpFragment$params.setMargins(resources.getDimension(R.dimen.gc_large).toInt(), 0, resources.getDimension(R.dimen.gc_large).toInt(), bottomPadding) + MaxLineLength:FileImportHelpFragment.kt$FileImportHelpFragment$snackbar + MaxLineLength:GiniCaptureFragment.kt$GiniCaptureFragment$// To be the first to handle back button pressed events we need to set this fragment as the primary navigation fragment + MaxLineLength:GiniCaptureFragment.kt$GiniCaptureFragment$UserAnalyticsEventSuperProperty.EntryPoint(UserAnalyticsEventSuperProperty.EntryPoint.EntryPointType.OPEN_WITH) + MaxLineLength:HelpFragment.kt$HelpFragment$HelpItem.SupportedFormats -> findNavController().navigate(HelpFragmentDirections.toSupportedFormatsHelpFragment()) + MaxLineLength:HelpNavigationBarBottomAdapter.kt$DefaultHelpNavigationBarBottomAdapter$val viewBinding = GcHelpNavigationBarBottomBinding.inflate(LayoutInflater.from(container.context), container, false) + MaxLineLength:IBANKnowledge.kt$IBANKnowledge$* + MaxLineLength:IBANRecognizerImpl.kt$IBANRecognizerImpl$* + MaxLineLength:IBANValidator.kt$IBANValidator.IBANError$EMPTY + MaxLineLength:InjectedViewAdapter.kt$InjectedViewAdapterInstance$* + MaxLineLength:InjectedViewContainer.kt$InjectedViewAdapterConfigurator$* + MaxLineLength:InjectedViewContainer.kt$InjectedViewContainer.<no name provided>$"{}: Injected view adapter for instance {} is in another container and was not destroyed" + MaxLineLength:IntervalToolbarMenuItemIntervalClickListener.kt$IntervalToolbarMenuItemIntervalClickListener$class + MaxLineLength:TypographyToTextStyleBridge.kt$fontFeatureSettings = a.getString(R.styleable.ComposeThemeAdapterTextAppearance_android_fontFeatureSettings) + MaxLineLength:UserAnalytics.kt$UserAnalytics$(eventTracker as? BufferedUserAnalyticsEventTracker)?.setPlatformTokens(*tokens, networkRequestsManager = networkRequestsManager) + NestedBlockDepth:TypographyToTextStyleBridge.kt$ internal fun TypedArray.getFontFamilyOrNull(index: Int): FontFamilyWithWeight? + NewLineAtEndOfFile:Amount.kt$net.gini.android.capture.Amount.kt + NewLineAtEndOfFile:AmountCurrency.kt$net.gini.android.capture.AmountCurrency.kt + NewLineAtEndOfFile:AmplitudeUserAnalyticsEventTracker.kt$net.gini.android.capture.tracking.useranalytics.tracker.AmplitudeUserAnalyticsEventTracker.kt + NewLineAtEndOfFile:AnalyticsKeyPairProperty.kt$net.gini.android.capture.tracking.useranalytics.properties.AnalyticsKeyPairProperty.kt + NewLineAtEndOfFile:AutoClearedValue.kt$net.gini.android.capture.internal.util.AutoClearedValue.kt + NewLineAtEndOfFile:BufferedUserAnalyticsEventTracker.kt$net.gini.android.capture.tracking.useranalytics.BufferedUserAnalyticsEventTracker.kt + NewLineAtEndOfFile:BundleHelper.kt$net.gini.android.capture.internal.util.BundleHelper.kt + NewLineAtEndOfFile:CameraHolder.kt$net.gini.android.capture.requirements.CameraHolder.kt + NewLineAtEndOfFile:CameraParametersHelper.kt$net.gini.android.capture.internal.camera.api.CameraParametersHelper.kt + NewLineAtEndOfFile:CameraPreviewContainer.kt$net.gini.android.capture.internal.camera.view.CameraPreviewContainer.kt + NewLineAtEndOfFile:CameraXController.kt$net.gini.android.capture.internal.camera.api.camerax.CameraXController.kt + NewLineAtEndOfFile:CameraXHolder.kt$net.gini.android.capture.requirements.CameraXHolder.kt + NewLineAtEndOfFile:CancelListener.kt$net.gini.android.capture.internal.util.CancelListener.kt + NewLineAtEndOfFile:CaptureSDKResult.kt$net.gini.android.capture.CaptureSDKResult.kt + NewLineAtEndOfFile:ClickListenerExt.kt$net.gini.android.capture.internal.ui.ClickListenerExt.kt + NewLineAtEndOfFile:ConfigurationNetworkResult.kt$net.gini.android.capture.internal.network.ConfigurationNetworkResult.kt + NewLineAtEndOfFile:CropToCameraFrameTextRecognizer.kt$net.gini.android.capture.internal.textrecognition.CropToCameraFrameTextRecognizer.kt + NewLineAtEndOfFile:DecimalFormatter.kt$net.gini.android.capture.ui.components.textinput.amount.DecimalFormatter.kt + NewLineAtEndOfFile:DecimalInputVisualTransformation.kt$net.gini.android.capture.ui.components.textinput.amount.DecimalInputVisualTransformation.kt + NewLineAtEndOfFile:DeviceInfo.kt$net.gini.android.capture.tracking.useranalytics.tracker.DeviceInfo.kt + NewLineAtEndOfFile:EntryPoint.kt$net.gini.android.capture.EntryPoint.kt + NewLineAtEndOfFile:ErrorLogger.kt$net.gini.android.capture.logging.ErrorLogger.kt + NewLineAtEndOfFile:ErrorLoggerListener.kt$net.gini.android.capture.logging.ErrorLoggerListener.kt + NewLineAtEndOfFile:ErrorType.kt$net.gini.android.capture.error.ErrorType.kt + NewLineAtEndOfFile:FailureException.kt$net.gini.android.capture.internal.network.FailureException.kt + NewLineAtEndOfFile:FileImportHelpFragment.kt$net.gini.android.capture.help.FileImportHelpFragment.kt + NewLineAtEndOfFile:FragmentExtensions.kt$net.gini.android.capture.internal.util.FragmentExtensions.kt + NewLineAtEndOfFile:GiniButton.kt$net.gini.android.capture.ui.components.button.filled.GiniButton.kt + NewLineAtEndOfFile:GiniButtonColors.kt$net.gini.android.capture.ui.components.button.filled.GiniButtonColors.kt + NewLineAtEndOfFile:GiniDatePickerDialog.kt$net.gini.android.capture.ui.components.picker.date.GiniDatePickerDialog.kt + NewLineAtEndOfFile:GiniDatePickerDialogColors.kt$net.gini.android.capture.ui.components.picker.date.GiniDatePickerDialogColors.kt + NewLineAtEndOfFile:GiniSwitch.kt$net.gini.android.capture.ui.components.switcher.GiniSwitch.kt + NewLineAtEndOfFile:GiniSwitchColors.kt$net.gini.android.capture.ui.components.switcher.GiniSwitchColors.kt + NewLineAtEndOfFile:GiniTextInput.kt$net.gini.android.capture.ui.components.textinput.GiniTextInput.kt + NewLineAtEndOfFile:GiniTextInputColors.kt$net.gini.android.capture.ui.components.textinput.GiniTextInputColors.kt + NewLineAtEndOfFile:GiniTopBar.kt$net.gini.android.capture.ui.components.topbar.GiniTopBar.kt + NewLineAtEndOfFile:GiniTopBarColors.kt$net.gini.android.capture.ui.components.topbar.GiniTopBarColors.kt + NewLineAtEndOfFile:HelpFragment.kt$net.gini.android.capture.help.HelpFragment.kt + NewLineAtEndOfFile:HelpItem.kt$net.gini.android.capture.help.HelpItem.kt + NewLineAtEndOfFile:HelpItemsAdapter.kt$net.gini.android.capture.help.HelpItemsAdapter.kt + NewLineAtEndOfFile:HintPopup.kt$net.gini.android.capture.internal.camera.view.HintPopup.kt + NewLineAtEndOfFile:IBANKnowledge.kt$net.gini.android.capture.internal.iban.IBANKnowledge.kt + NewLineAtEndOfFile:IBANRecognizer.kt$net.gini.android.capture.internal.iban.IBANRecognizer.kt + NewLineAtEndOfFile:IBANRecognizerFilter.kt$net.gini.android.capture.internal.iban.IBANRecognizerFilter.kt + NewLineAtEndOfFile:IBANValidator.kt$net.gini.android.capture.internal.iban.IBANValidator.kt + NewLineAtEndOfFile:InjectedViewAdapter.kt$net.gini.android.capture.view.InjectedViewAdapter.kt + NewLineAtEndOfFile:IntervalClickListener.kt$net.gini.android.capture.internal.ui.IntervalClickListener.kt + NewLineAtEndOfFile:IntervalClickListenerHelper.kt$net.gini.android.capture.internal.ui.IntervalClickListenerHelper.kt + NewLineAtEndOfFile:IntervalToolbarMenuItemIntervalClickListener.kt$net.gini.android.capture.internal.ui.IntervalToolbarMenuItemIntervalClickListener.kt + NewLineAtEndOfFile:MiddlePageManager.kt$net.gini.android.capture.review.multipage.previews.MiddlePageManager.kt + NewLineAtEndOfFile:NavigationBarTopAdapter.kt$net.gini.android.capture.view.NavigationBarTopAdapter.kt + NewLineAtEndOfFile:OnButtonLoadingIndicatorAdapter.kt$net.gini.android.capture.view.OnButtonLoadingIndicatorAdapter.kt + NewLineAtEndOfFile:OnboardingIllustrationAdapter.kt$net.gini.android.capture.onboarding.view.OnboardingIllustrationAdapter.kt + NewLineAtEndOfFile:OnboardingNavigationBarBottomAdapter.kt$net.gini.android.capture.onboarding.view.OnboardingNavigationBarBottomAdapter.kt + NewLineAtEndOfFile:PhotoTipsHelpFragment.kt$net.gini.android.capture.help.PhotoTipsHelpFragment.kt + NewLineAtEndOfFile:PreviewPagesAdapter.kt$net.gini.android.capture.review.multipage.previews.PreviewPagesAdapter.kt + NewLineAtEndOfFile:QRCodePopup.kt$net.gini.android.capture.internal.camera.view.QRCodePopup.kt + NewLineAtEndOfFile:RecognizedText.kt$net.gini.android.capture.internal.textrecognition.RecognizedText.kt + NewLineAtEndOfFile:ReviewNavigationBarBottomAdapter.kt$net.gini.android.capture.review.multipage.view.ReviewNavigationBarBottomAdapter.kt + NewLineAtEndOfFile:SnappedItemChangeRecyclerViewListener.kt$net.gini.android.capture.util.recyclerview.SnappedItemChangeRecyclerViewListener.kt + NewLineAtEndOfFile:SupportedFormatsHelpFragment.kt$net.gini.android.capture.help.SupportedFormatsHelpFragment.kt + NewLineAtEndOfFile:TextRecognizer.kt$net.gini.android.capture.internal.textrecognition.TextRecognizer.kt + NewLineAtEndOfFile:TypographyToTextStyleBridge.kt$net.gini.android.capture.ui.theme.typography.TypographyToTextStyleBridge.kt + NewLineAtEndOfFile:UniqueIdProvider.kt$net.gini.android.capture.internal.provider.UniqueIdProvider.kt + NewLineAtEndOfFile:UserAnalytics.kt$net.gini.android.capture.tracking.useranalytics.UserAnalytics.kt + NewLineAtEndOfFile:UserAnalyticsEvent.kt$net.gini.android.capture.tracking.useranalytics.UserAnalyticsEvent.kt + NewLineAtEndOfFile:UserAnalyticsEventProperty.kt$net.gini.android.capture.tracking.useranalytics.properties.UserAnalyticsEventProperty.kt + NewLineAtEndOfFile:UserAnalyticsEventSuperProperty.kt$net.gini.android.capture.tracking.useranalytics.properties.UserAnalyticsEventSuperProperty.kt + NewLineAtEndOfFile:UserAnalyticsMappers.kt$net.gini.android.capture.tracking.useranalytics.UserAnalyticsMappers.kt + NewLineAtEndOfFile:UserAnalyticsUserProperty.kt$net.gini.android.capture.tracking.useranalytics.properties.UserAnalyticsUserProperty.kt + NewLineAtEndOfFile:Width.kt$net.gini.android.capture.ui.theme.modifier.Width.kt + ReturnCount:CameraXController.kt$CameraXController$override fun open(): CompletableFuture<Void> + ReturnCount:CameraXController.kt$CameraXController$override fun takePicture(): CompletableFuture<Photo> + ReturnCount:ErrorFragmentImpl.kt$ErrorFragmentImpl$private fun shouldAllowRetakeImages(): Boolean + ReturnCount:ErrorType.kt$ErrorType.Companion$@JvmStatic fun typeFromError(error: Error): ErrorType + ReturnCount:ErrorType.kt$ErrorType.Companion$private fun isInvalidUserError(error: Error): Boolean + ReturnCount:GiniCaptureFragment.kt$CaptureFragmentFactory$override fun instantiate(classLoader: ClassLoader, className: String): Fragment + ReturnCount:SnappedItemChangeRecyclerViewListener.kt$SnappedItemChangeRecyclerViewListener$override fun onScrollStateChanged(recyclerView: RecyclerView, newState: Int) + SwallowedException:DeviceInfo.kt$DeviceInfo.CachedInfo$catch (e: Exception) { // Failed to get network operator name from network } + SwallowedException:DeviceInfo.kt$DeviceInfo.CachedInfo$catch (e: Exception) { } + SwallowedException:DeviceInfo.kt$DeviceInfo.CachedInfo$catch (e: PackageManager.NameNotFoundException) { } + SwallowedException:ErrorType.kt$ErrorType.Companion$catch (e: Exception) { false } + SwallowedException:IBANRecognizerImpl.kt$IBANRecognizerImpl$catch (e: IBANValidator.IllegalIBANException) { false } + ThrowsCount:Extensions.kt$@Throws(CameraException::class) private fun cropByteArray(data: ByteArray, cropRect: Rect?): ByteArray + ThrowsCount:IBANValidator.kt$IBANValidator$@Throws(IllegalIBANException::class) private fun validateLength(iban: String) + TooGenericExceptionCaught:CameraXController.kt$CameraXController$e: Exception + TooGenericExceptionCaught:CameraXHolder.kt$CameraXHolder$e: Exception + TooGenericExceptionCaught:DeviceInfo.kt$DeviceInfo.CachedInfo$e: Exception + TooGenericExceptionCaught:ErrorType.kt$ErrorType.Companion$e: Exception + TooManyFunctions:CameraXController.kt$CameraXController : CameraInterface + TooManyFunctions:FileChooserFragment.kt$FileChooserFragment : BottomSheetDialogFragment + TooManyFunctions:GiniCaptureFragment.kt$GiniCaptureFragment : FragmentCameraFragmentListenerAnalysisFragmentListenerEnterManuallyButtonListenerCancelListener + TooManyFunctions:HelpFragment.kt$HelpFragment : Fragment + UnnecessaryAbstractClass:AnalyticsKeyPairProperty.kt$AnalyticsKeyPairProperty + UnusedPrivateMember:AmplitudeUserAnalyticsEventTracker.kt$AmplitudeUserAnalyticsEventTracker$val version = BuildConfig.VERSION_NAME + UnusedPrivateMember:DecimalInputVisualTransformation.kt$DecimalInputVisualTransformation.CustomOffsetMapping$val thousandSeparatorCount = formatted.count { it == formattingSymbols.groupingSeparator } + UnusedPrivateMember:DeviceInfo.kt$DeviceInfo$private val LOG = LoggerFactory.getLogger(DeviceInfo::class.java) + UnusedPrivateMember:ErrorFragmentImpl.kt$ErrorFragmentImpl$savedInstanceState: Bundle? + UnusedPrivateMember:GiniAmountTextInput.kt$@Preview( showBackground = true, uiMode = Configuration.UI_MODE_NIGHT_YES ) @Composable private fun GiniTextInputPreviewDark() + UnusedPrivateMember:GiniAmountTextInput.kt$@Preview(showBackground = true) @Composable private fun GiniTextInputPreviewLight() + UnusedPrivateMember:GiniButton.kt$@Preview @Composable private fun GiniContentButtonPreview() + UnusedPrivateMember:GiniButton.kt$@Preview @Composable private fun GiniTextButtonPreview() + UnusedPrivateMember:GiniDatePickerDialog.kt$@Preview @Composable private fun DatePickerDialogPreviewLight() + UnusedPrivateMember:GiniDatePickerDialog.kt$@Preview(uiMode = UI_MODE_NIGHT_YES) @Composable private fun DatePickerDialogPreviewDark() + UnusedPrivateMember:GiniSwitch.kt$@Preview(showBackground = true) @Composable private fun GiniSwitchPreview() + UnusedPrivateMember:GiniTextInput.kt$@Preview( showBackground = true, uiMode = Configuration.UI_MODE_NIGHT_YES ) @Composable private fun GiniTextInputPreviewDark() + UnusedPrivateMember:GiniTextInput.kt$@Preview(showBackground = true) @Composable private fun GiniTextInputPreviewLight() + UnusedPrivateMember:GiniTopBar.kt$@Preview @Composable private fun GiniTopBarPreviewLight() + UnusedPrivateMember:GiniTopBar.kt$@Preview(uiMode = Configuration.UI_MODE_NIGHT_YES) @Composable private fun GiniTopBarPreviewDark() + UnusedPrivateMember:TypographyToTextStyleBridge.kt$setTextColors: Boolean = true + VariableNaming:AmplitudeUserAnalyticsEventTracker.kt$AmplitudeUserAnalyticsEventTracker$private val LOG = LoggerFactory.getLogger(AmplitudeUserAnalyticsEventTracker::class.java) + VariableNaming:BufferedUserAnalyticsEventTracker.kt$BufferedUserAnalyticsEventTracker$private val LOG = LoggerFactory.getLogger(BufferedUserAnalyticsEventTracker::class.java) + VariableNaming:DeviceInfo.kt$DeviceInfo$private val LOG = LoggerFactory.getLogger(DeviceInfo::class.java) + WildcardImport:CameraXController.kt$import android.graphics.* + WildcardImport:CameraXController.kt$import androidx.camera.core.* + WildcardImport:NavigationBarTopAdapter.kt$import android.view.* + WildcardImport:NavigationBarTopAdapter.kt$import net.gini.android.capture.view.NavButtonType.* + +