ComplexCondition:BrowserContent.kt$wide && state.isRootView && state.searchRoot == null && state.focus == null
ComplexCondition:BrowserScreen.kt$state.path != null && !state.isSelecting && !state.loading && !state.needsTreeGrant
CyclomaticComplexMethod:ArchiveEngine.kt$ArchiveEngine$private suspend fun readSevenZip( channel: SeekableByteChannel, destination: StoragePath, state: ArchiveState, )
CyclomaticComplexMethod:ArchiveEngine.kt$ArchiveEngine$private suspend fun withEntry( archive: StoragePath, name: String, sink: suspend (InputStream) -> Unit, ): Boolean
CyclomaticComplexMethod:ArchiveFormats.kt$ArchiveFormats$fun formatOf(fileName: String): ArchiveFormat
CyclomaticComplexMethod:BrowserContent.kt$@Composable fun BrowserContent( state: BrowserUiState, contentPadding: PaddingValues, crumbLabel: (StoragePath) -> String, onOpenEntry: (FileEntry) -> Unit, onFocusEntry: (FileEntry) -> Unit, onFocusRoot: (RootItem) -> Unit, onToggleSelection: (StoragePath) -> Unit, onOpenRoot: (StoragePath) -> Unit, onNavigate: (StoragePath) -> Unit, onOpenCategory: (FileCategory) -> Unit, onOpenBookmark: (StoragePath) -> Unit, onRemoveBookmark: (StoragePath) -> Unit, onGrantAllFiles: () -> Unit, onPickFolder: () -> Unit, onRebuildIndex: () -> Unit, /** Hoisted by the screen so the scroll position outlives a viewer taking over. */ listState: LazyListState = rememberLazyListState(), gridState: LazyGridState = rememberLazyGridState(), )
CyclomaticComplexMethod:BrowserContent.kt$@Composable private fun DirectoryView( state: BrowserUiState, crumbLabel: (StoragePath) -> String, wide: Boolean, listState: LazyListState, gridState: LazyGridState, onOpenEntry: (FileEntry) -> Unit, onFocusEntry: (FileEntry) -> Unit, onToggleSelection: (StoragePath) -> Unit, onNavigate: (StoragePath) -> Unit, onGrantAllFiles: () -> Unit, onRebuildIndex: () -> Unit, modifier: Modifier = Modifier, )
CyclomaticComplexMethod:BrowserScreen.kt$@OptIn(ExperimentalMaterial3Api::class) @Composable fun BrowserScreen( incoming: IncomingRequest? = null, onDeliver: (FileEntry) -> Unit = {}, onDone: () -> Unit = {}, viewModel: BrowserViewModel = viewModel(factory = BrowserViewModel.Factory), )
CyclomaticComplexMethod:BrowserViewModel.kt$BrowserViewModel$fun open(entry: FileEntry)
CyclomaticComplexMethod:BrowserViewModel.kt$BrowserViewModel$fun previewArchiveEntry(entry: ArchiveEntry)
CyclomaticComplexMethod:FileOperations.kt$FileOperations$private suspend fun transfer( from: StoragePath, to: StoragePath, move: Boolean, state: OperationState, )
CyclomaticComplexMethod:SearchIndexer.kt$SearchIndexer$suspend fun refresh( volume: StoragePath, showHidden: Boolean, onProgress: (Int) -> Unit = {}, ): Int
LargeClass:BrowserViewModel.kt$BrowserViewModel : ViewModel
LargeClass:BrowserViewModelTest.kt$BrowserViewModelTest
LongMethod:BrowserContent.kt$@Composable fun BrowserContent( state: BrowserUiState, contentPadding: PaddingValues, crumbLabel: (StoragePath) -> String, onOpenEntry: (FileEntry) -> Unit, onFocusEntry: (FileEntry) -> Unit, onFocusRoot: (RootItem) -> Unit, onToggleSelection: (StoragePath) -> Unit, onOpenRoot: (StoragePath) -> Unit, onNavigate: (StoragePath) -> Unit, onOpenCategory: (FileCategory) -> Unit, onOpenBookmark: (StoragePath) -> Unit, onRemoveBookmark: (StoragePath) -> Unit, onGrantAllFiles: () -> Unit, onPickFolder: () -> Unit, onRebuildIndex: () -> Unit, /** Hoisted by the screen so the scroll position outlives a viewer taking over. */ listState: LazyListState = rememberLazyListState(), gridState: LazyGridState = rememberLazyGridState(), )
LongMethod:BrowserScreen.kt$@OptIn(ExperimentalMaterial3Api::class) @Composable fun BrowserScreen( incoming: IncomingRequest? = null, onDeliver: (FileEntry) -> Unit = {}, onDone: () -> Unit = {}, viewModel: BrowserViewModel = viewModel(factory = BrowserViewModel.Factory), )
LongMethod:BrowserTopBar.kt$@OptIn(ExperimentalMaterial3Api::class) @Composable fun BrowserTopBar( title: String, canNavigateUp: Boolean, /** Whether this view is a folder, and so can be starred at all. */ canBookmark: Boolean, bookmarked: Boolean, query: String, searchOpen: Boolean, searchScope: SearchScope, /** Whether the scope is the user's to choose at all; see the note beside the toggle. */ scopeChoosable: Boolean, canPaste: Boolean, onUp: () -> Unit, onQuery: (String) -> Unit, onSearchOpen: (Boolean) -> Unit, onSearchScope: () -> Unit, onSort: () -> Unit, onPaste: () -> Unit, onToggleBookmark: () -> Unit, onRefresh: () -> Unit, onUsage: () -> Unit, onDuplicates: () -> Unit, onTrash: () -> Unit, )
LongParameterList:BrowserContent.kt$( state: BrowserUiState, contentPadding: PaddingValues, crumbLabel: (StoragePath) -> String, onOpenEntry: (FileEntry) -> Unit, onFocusEntry: (FileEntry) -> Unit, onFocusRoot: (RootItem) -> Unit, onToggleSelection: (StoragePath) -> Unit, onOpenRoot: (StoragePath) -> Unit, onNavigate: (StoragePath) -> Unit, onOpenCategory: (FileCategory) -> Unit, onOpenBookmark: (StoragePath) -> Unit, onRemoveBookmark: (StoragePath) -> Unit, onGrantAllFiles: () -> Unit, onPickFolder: () -> Unit, onRebuildIndex: () -> Unit, /** Hoisted by the screen so the scroll position outlives a viewer taking over. */ listState: LazyListState = rememberLazyListState(), gridState: LazyGridState = rememberLazyGridState(), )
LongParameterList:BrowserContent.kt$( state: BrowserUiState, crumbLabel: (StoragePath) -> String, wide: Boolean, listState: LazyListState, gridState: LazyGridState, onOpenEntry: (FileEntry) -> Unit, onFocusEntry: (FileEntry) -> Unit, onToggleSelection: (StoragePath) -> Unit, onNavigate: (StoragePath) -> Unit, onGrantAllFiles: () -> Unit, onRebuildIndex: () -> Unit, modifier: Modifier = Modifier, )
LongParameterList:BrowserTopBar.kt$( title: String, canNavigateUp: Boolean, /** Whether this view is a folder, and so can be starred at all. */ canBookmark: Boolean, bookmarked: Boolean, query: String, searchOpen: Boolean, searchScope: SearchScope, /** Whether the scope is the user's to choose at all; see the note beside the toggle. */ scopeChoosable: Boolean, canPaste: Boolean, onUp: () -> Unit, onQuery: (String) -> Unit, onSearchOpen: (Boolean) -> Unit, onSearchScope: () -> Unit, onSort: () -> Unit, onPaste: () -> Unit, onToggleBookmark: () -> Unit, onRefresh: () -> Unit, onUsage: () -> Unit, onDuplicates: () -> Unit, onTrash: () -> Unit, )
LoopWithTooManyJumpStatements:ArchiveEngine.kt$ArchiveEngine$while
LoopWithTooManyJumpStatements:BatchRename.kt$BatchRename$for
LoopWithTooManyJumpStatements:DuplicateFinder.kt$DuplicateFinder$while
LoopWithTooManyJumpStatements:SearchIndexer.kt$SearchIndexer$for
LoopWithTooManyJumpStatements:TransferPlanner.kt$TransferPlanner$for
LoopWithTooManyJumpStatements:Trash.kt$Trash$for
MaxLineLength:AllFilesSourceTest.kt$AllFilesSourceTest$roots = roots.map { FileEntry(StoragePath.of(it.absolutePath), isDirectory = true, sizeBytes = 0, lastModifiedMillis = 0) }
MaxLineLength:ArchiveEngineTest.kt$ArchiveEngineTest$assertEquals("hello gzip", ArchiveEngine(storage).readEntry(archive, entries.single())?.decodeToString())
MaxLineLength:ArchiveEngineTest.kt$ArchiveEngineTest$assertFalse("nothing was written — that is the point of a preview", storage.contains(out.child("b.txt")))
MaxLineLength:ArchiveEngineTest.kt$ArchiveEngineTest$val bytes = ArchiveEngine(storage).readEntry(zip, ArchiveEngine(storage).list(zip).single { it.name == "b.txt" })
MaxLineLength:BrowserViewModel.kt$BrowserViewModel$done.isNotEmpty() -> messageUndoable(R.string.message_renamed_some, done.size, plan.moves.size)
MaxLineLength:BrowserViewModelTest.kt$BrowserViewModelTest$assertTrue("a folder that is there is not marked missing", model.state.value.bookmarks.single().exists)
MaxLineLength:FileOperations.kt$FileOperations$)
MaxLineLength:FileOperationsTest.kt$FileOperationsTest$paths = listOf(src.child("f0.txt"), src.child("f1.txt"), src.child("f2.txt"), src.child("f3.txt"))
MaxLineLength:InMemoryStorageSource.kt$InMemoryStorageSource$entries[path] = FileEntry(path, isDirectory = false, sizeBytes = bytes.size.toLong(), lastModifiedMillis = 0L)
MaxLineLength:IncomingRequest.kt$IncomingRequest.Companion$receive(IntentCompat.getParcelableArrayListExtra(intent, Intent.EXTRA_STREAM, Uri::class.java).orEmpty())
MaxLineLength:IncomingRequest.kt$IncomingRequest.Companion$receive(listOfNotNull(IntentCompat.getParcelableExtra(intent, Intent.EXTRA_STREAM, Uri::class.java)))
MaxLineLength:MediaStoreDeleter.kt$MediaStoreDeleter$if (cursor.moveToFirst()) collection.buildUpon().appendPath(cursor.getLong(0).toString()).build() else null
MaxLineLength:SafSourceTest.kt$SafSourceTest$provider.add("primary:Download", doc("primary:Download/a.txt", "a.txt", size = 12, modified = 1_700_000_000_000))
MaxLineLength:SearchIndexerTest.kt$SearchIndexerTest$assertEquals(listOf(volume, volume.child("Documents")).sortedBy { it.value }, storage.namesCalls.sortedBy { it.value })
MaxLineLength:SearchIndexerTest.kt$SearchIndexerTest$assertEquals(listOf(volume.child("DCIM/new-photo.jpg")), storage.statCalls.filter { it.name == "new-photo.jpg" })
MaxLineLength:SelectionBar.kt$Icon(Icons.Filled.Archive, contentDescription = stringResource(R.string.browser_action_compress))
MaxLineLength:SelectionBar.kt$Icon(Icons.Filled.Close, contentDescription = stringResource(R.string.browser_action_clear_selection))
MaxLineLength:SelectionBar.kt$Icon(Icons.Filled.ContentCopy, contentDescription = stringResource(R.string.browser_action_copy))
MaxLineLength:SelectionBar.kt$Icon(Icons.Filled.ContentCut, contentDescription = stringResource(R.string.browser_action_cut))
MaxLineLength:SelectionBar.kt$Icon(Icons.Filled.Info, contentDescription = stringResource(R.string.browser_action_details))
MaxLineLength:SelectionBar.kt$Icon(Icons.Filled.SelectAll, contentDescription = stringResource(R.string.browser_action_select_all))
MaxLineLength:SelectionBar.kt$Icon(Icons.Filled.Share, contentDescription = stringResource(R.string.browser_action_share))
MaxLineLength:SelectionBar.kt$Icon(Icons.Filled.Unarchive, contentDescription = stringResource(R.string.browser_action_extract))
MaxLineLength:SqliteSearchIndex.kt$SqliteSearchIndex$.
MaxLineLength:SqliteSearchIndex.kt$SqliteSearchIndex.Companion$"ALTER TABLE $TABLE_VOLUMES ADD COLUMN $COLUMN_FULL_AT INTEGER NOT NULL DEFAULT 0"
MaxLineLength:SqliteSearchIndexTest.kt$SqliteSearchIndexTest$"(${SqliteSearchIndex.COLUMN_VOLUME}, ${SqliteSearchIndex.COLUMN_INDEXED_AT}) VALUES ('$volume', 1234)"
MaxLineLength:SqliteSearchIndexTest.kt$SqliteSearchIndexTest$db.rawQuery("SELECT ${SqliteSearchIndex.COLUMN_FULL_AT}, ${SqliteSearchIndex.COLUMN_HIDDEN_INCLUDED} FROM ${SqliteSearchIndex.TABLE_VOLUMES}", null)
MaxLineLength:SqliteSearchIndexTest.kt$SqliteSearchIndexTest$val failure = runCatching { SqliteSearchIndex.upgrade(db, SqliteSearchIndex.DATABASE_VERSION, SqliteSearchIndex.DATABASE_VERSION + 1) }
MaxLineLength:Trash.kt$Trash$onProgress(OperationProgress(OperationKind.MOVE, index + 1, batch.entries.size, entry.original))
NestedBlockDepth:ArchiveEngine.kt$ArchiveEngine$private suspend fun readArchive( archive: ArchiveInputStream<*>, destination: StoragePath, state: ArchiveState, )
NestedBlockDepth:ArchiveEngine.kt$ArchiveEngine$private suspend fun readSevenZip( channel: SeekableByteChannel, destination: StoragePath, state: ArchiveState, )
NestedBlockDepth:ArchiveEngine.kt$ArchiveEngine$private suspend fun withEntry( archive: StoragePath, name: String, sink: suspend (InputStream) -> Unit, ): Boolean
NestedBlockDepth:ArchiveEngine.kt$ArchiveEngine$suspend fun createZip( entries: List<StoragePath>, destination: StoragePath, onProgress: (OperationProgress) -> Unit = {}, ): OperationResult
NestedBlockDepth:ArchiveEngine.kt$ArchiveEngine$suspend fun extract( archive: StoragePath, destination: StoragePath, onProgress: (OperationProgress) -> Unit = {}, ): OperationResult
NestedBlockDepth:ArchiveEngine.kt$ArchiveEngine$suspend fun list(archive: StoragePath): List<ArchiveEntry>
NestedBlockDepth:ArchiveEngineTest.kt$ArchiveEngineTest$private fun sevenZip(vararg entries: Pair<String, String>): ByteArray
RethrowCaughtException:BrowserViewModel.kt$BrowserViewModel$throw cancellation
ReturnCount:ArchiveEngine.kt$ArchiveEngine$private suspend fun withEntry( archive: StoragePath, name: String, sink: suspend (InputStream) -> Unit, ): Boolean
ReturnCount:BrowserScreen.kt$@OptIn(ExperimentalMaterial3Api::class) @Composable fun BrowserScreen( incoming: IncomingRequest? = null, onDeliver: (FileEntry) -> Unit = {}, onDone: () -> Unit = {}, viewModel: BrowserViewModel = viewModel(factory = BrowserViewModel.Factory), )
TooGenericExceptionCaught:ArchiveEngine.kt$ArchiveEngine$failure: Exception
TooGenericExceptionCaught:BrowserViewModel.kt$BrowserViewModel$failure: Exception
TooGenericExceptionCaught:FileOperations.kt$FileOperations$failure: Exception
TooGenericExceptionCaught:Trash.kt$Trash$failure: Exception
TooManyFunctions:BrowserViewModel.kt$BrowserViewModel : ViewModel
TooManyFunctions:SearchIndex.kt$SearchIndex
TooManyFunctions:SearchIndex.kt$SearchIndex$None : SearchIndex
TooManyFunctions:StorageSource.kt$StorageSource