Files
f7cloud_mobile/app/detekt-baseline.xml
b-dev-mobile ac438269c5
CI / verify (push) Has been cancelled
CI / release (push) Has been cancelled
Этап 1: detekt (статанализ + ktlint-форматирование) с baseline
- detekt 1.23.8 применён ко всем НАШИМ модулям (vendor-форк исключён),
  +formatting-ruleset (обёртка ktlint). Совместим с Kotlin 2.3 (проверено).
- config/detekt/detekt.yml — настройки под наш код (LongMethod 120, MaxLine 140,
  MagicNumber off — dp/цвета отдельно, FunctionNaming off — @Composable Заглавные).
- detekt-baseline.xml по модулям: ~403 текущих замечаний зафиксированы →
  detekt зелёный, дальше ловит только НОВЫЕ. detekt в CI (ci.yml verify).

Проверено: detektBaseline + detekt BUILD SUCCESSFUL.
2026-07-07 23:36:40 +00:00

29 lines
8.9 KiB
XML

<?xml version="1.0" ?>
<SmellBaseline>
<ManuallySuppressedIssues/>
<CurrentIssues>
<ID>ArgumentListWrapping:F7QrScannerActivity.kt$F7QrScannerActivity$(context)</ID>
<ID>ComplexCondition:AppLinkResolver.kt$AppLinkResolver$lower.contains("/apps/files") || lower.contains("/remote.php/dav/files") || lower.contains("fileid=") || lower.contains("/f/")</ID>
<ID>ComplexCondition:AppLockGate.kt$lockStore.useBiometric() &amp;&amp; biometricAvailable &amp;&amp; activity != null &amp;&amp; !showPinEntry</ID>
<ID>ComplexCondition:AppScaffold.kt$loading || serverUrl.isBlank() || username.isBlank() || password.isBlank()</ID>
<ID>CyclomaticComplexMethod:AppLockGate.kt$@Composable private fun AppLockUnlockScreen( lockStore: AppLockStore, lockSession: Int, onUnlocked: () -&gt; Unit, )</ID>
<ID>CyclomaticComplexMethod:AppScaffold.kt$@Composable fun AppScaffold( openUrl: String? = null, onOpenUrlConsumed: () -&gt; Unit = {}, onRequestRuntimePermissions: (onFinished: (() -&gt; Unit)?) -&gt; Unit = {}, )</ID>
<ID>ImportOrdering:AppScaffold.kt$import android.app.Activity import android.content.Intent import android.net.Uri import android.widget.Toast import androidx.activity.compose.BackHandler import androidx.activity.compose.rememberLauncherForActivityResult import androidx.activity.result.contract.ActivityResultContracts import androidx.compose.foundation.gestures.awaitEachGesture import androidx.compose.foundation.gestures.awaitFirstDown import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.width import androidx.compose.foundation.layout.widthIn import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.verticalScroll import androidx.compose.ui.input.pointer.PointerEventPass import androidx.compose.ui.input.pointer.pointerInput import androidx.compose.material3.Checkbox import androidx.compose.material3.CircularProgressIndicator import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Surface import androidx.compose.material3.Text import androidx.compose.foundation.text.KeyboardActions import androidx.compose.foundation.text.KeyboardOptions import androidx.compose.ui.text.input.ImeAction import androidx.compose.ui.text.input.KeyboardType import androidx.compose.ui.text.input.PasswordVisualTransformation import androidx.compose.ui.focus.FocusRequester import androidx.compose.ui.focus.focusProperties import androidx.compose.ui.focus.focusRequester import androidx.compose.ui.platform.LocalFocusManager import androidx.compose.ui.platform.LocalSoftwareKeyboardController import androidx.compose.runtime.Composable import androidx.compose.runtime.DisposableEffect import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableIntStateOf import androidx.compose.runtime.mutableLongStateOf import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.runtime.saveable.Saver import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import coil.compose.AsyncImage import androidx.lifecycle.Lifecycle import androidx.lifecycle.LifecycleEventObserver import androidx.lifecycle.compose.LocalLifecycleOwner import com.google.firebase.messaging.FirebaseMessaging import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext import kotlinx.coroutines.delay import kotlinx.coroutines.launch import kotlinx.coroutines.tasks.await import ru.forbion.f7cloud.mobile.BuildConfig import ru.forbion.f7cloud.core.auth.AppLockStore import ru.forbion.f7cloud.core.auth.AppPasswordRevoker import ru.forbion.f7cloud.core.auth.AuthSession import ru.forbion.f7cloud.core.auth.AuthStore import ru.forbion.f7cloud.core.auth.AuthVerifier import ru.forbion.f7cloud.core.auth.normalizeServerUrl import ru.forbion.f7cloud.core.network.LoginFlowClient import ru.forbion.f7cloud.core.push.F7PushEvent import ru.forbion.f7cloud.core.push.F7PushEventHub import ru.forbion.f7cloud.core.push.F7PushRegistrar import ru.forbion.f7cloud.core.designsystem.F7OverlayNavigationProvider import ru.forbion.f7cloud.core.designsystem.F7AppMenuSheet import ru.forbion.f7cloud.core.designsystem.F7AppScaffold import ru.forbion.f7cloud.core.designsystem.F7AutoHideBottomBar import ru.forbion.f7cloud.core.designsystem.F7BottomBarActions import ru.forbion.f7cloud.core.designsystem.F7BottomBarConfig import ru.forbion.f7cloud.core.designsystem.F7MobileBottomBar import ru.forbion.f7cloud.core.designsystem.F7Colors import ru.forbion.f7cloud.core.designsystem.F7OutlinedField import ru.forbion.f7cloud.core.designsystem.F7PrimaryButton import ru.forbion.f7cloud.core.designsystem.F7TextButton import ru.forbion.f7cloud.core.designsystem.F7Theme import ru.forbion.f7cloud.core.designsystem.f7SafeTopInsets import ru.forbion.f7cloud.mobile.OfficeEditorActivity import ru.forbion.f7cloud.mobile.qr.F7QrScannerActivity import ru.forbion.f7cloud.mobile.OfficeWebViewPool import ru.forbion.f7cloud.feature.files.OfficeWarmup import ru.forbion.f7cloud.mobile.permissions.F7AppPermissions import ru.forbion.f7cloud.mobile.permissions.F7PermissionRationaleDialog import ru.forbion.f7cloud.feature.calendar.CalendarScreen import ru.forbion.f7cloud.feature.contacts.ContactsScreen import ru.forbion.f7cloud.feature.deck.DeckScreen import ru.forbion.f7cloud.feature.files.FilesScreen import ru.forbion.f7cloud.feature.f7support.SupportScreen import ru.forbion.f7cloud.feature.mail.MailScreen import ru.forbion.f7cloud.feature.tasks.TasksScreen import ru.forbion.f7cloud.feature.talk.TalkScreen import ru.forbion.f7cloud.mobile.navigation.AppLinkResolver import ru.forbion.f7cloud.mobile.navigation.AppLinkTarget</ID>
<ID>ImportOrdering:F7MobileApp.kt$import android.util.Log import androidx.lifecycle.DefaultLifecycleObserver import androidx.lifecycle.LifecycleOwner import androidx.lifecycle.ProcessLifecycleOwner import coil.ImageLoader import coil.ImageLoaderFactory import coil.decode.SvgDecoder import coil.disk.DiskCache import coil.memory.MemoryCache import com.google.firebase.messaging.FirebaseMessaging import ru.f7cloud.talk.application.F7cloudTalkApplication import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import ru.forbion.f7cloud.core.auth.AuthStore import ru.forbion.f7cloud.core.designsystem.AppForegroundTracker import ru.forbion.f7cloud.core.network.NetworkFactory import ru.forbion.f7cloud.core.push.F7NotificationChannels import ru.forbion.f7cloud.core.push.F7PushRegistrar import ru.forbion.f7cloud.feature.talknative.TalkVendorBootstrap</ID>
<ID>Indentation:AppScaffold.kt$ </ID>
<ID>LongMethod:AppScaffold.kt$@Composable fun AppScaffold( openUrl: String? = null, onOpenUrlConsumed: () -&gt; Unit = {}, onRequestRuntimePermissions: (onFinished: (() -&gt; Unit)?) -&gt; Unit = {}, )</ID>
<ID>LongMethod:AppScaffold.kt$@Composable private fun LoginScreen(onLogin: (AuthSession) -&gt; Unit)</ID>
<ID>MaximumLineLength:F7QrScannerActivity.kt$F7QrScannerActivity$ </ID>
<ID>MultiLineIfElse:AppScaffold.kt$AppTab.Files</ID>
<ID>MultiLineIfElse:AppScaffold.kt$runCatching { AppTab.valueOf(name) }.getOrDefault(AppTab.Files)</ID>
<ID>NoUnusedImports:AppMenuRepository.kt$ru.forbion.f7cloud.mobile.ui.AppMenuRepository.kt</ID>
<ID>NoUnusedImports:OfficeEditorActivity.kt$ru.forbion.f7cloud.mobile.OfficeEditorActivity.kt</ID>
<ID>PropertyWrapping:F7QrScannerActivity.kt$F7QrScannerActivity$val previewView = remember { PreviewView(context).apply { implementationMode = PreviewView.ImplementationMode.COMPATIBLE } }</ID>
<ID>SpacingBetweenDeclarationsWithAnnotations:AppScaffold.kt$@Composable private fun LoginScreen(onLogin: (AuthSession) -&gt; Unit)</ID>
<ID>UnusedParameter:RichDocumentsMobileBridge.kt$RichDocumentsMobileBridge$json: String?</ID>
<ID>Wrapping:AppScaffold.kt$;</ID>
<ID>Wrapping:F7QrScannerActivity.kt$F7QrScannerActivity$PreviewView(context).apply { implementationMode = PreviewView.ImplementationMode.COMPATIBLE }</ID>
<ID>Wrapping:F7QrScannerActivity.kt$F7QrScannerActivity$implementationMode = PreviewView.ImplementationMode.COMPATIBLE</ID>
</CurrentIssues>
</SmellBaseline>