AI Slop Code RIsk Monitor

PixelPlayerHQ/PixelPlayer

privacy-first Android music player built with Material 3 Expressive. Play offline, sync lyrics, fine-tune with equalizer presets, and cast to your devices.

5.4 Moderate pattern signal View on GitHub

Maintenance and Governance Review

This report summarizes scanner evidence for PixelPlayerHQ/PixelPlayer, a Kotlin project with 6,671 GitHub stars. SynthScan examined 286,415 lines of code across 1118 source files, recording 358 pattern matches distributed across 8 syntactic categories. The legacy adjusted pattern signal is 5.4 (Moderate pattern signal); it is not an authorship estimate.

Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.

5.4
Adjusted Signal
5.4
Raw Pattern Score
100%
Time Factor
2026-09-21
Last Push
6.7K
Stars
Kotlin
Language
286.4K
Lines of Code
1.1K
Files
358
Pattern Hits
2026-10-12
Scan Date
0.08
HC Hit Rate

Risk Review · v3

Use each vector to guide manual verification of the underlying findings.

Cognitive Ownership Risk 2.0/100 · LOW

Can maintainers explain intent, assumptions, and trade-offs? 82 finding(s).

Hallucinated Dependency & Supply Chain Risk 14.6/100 · LOW

Are imports declared and package/API names verified? 82 finding(s).

Agent Over-Engineering Ratio 8.9/100 · LOW

Are wrappers, guards, and repeated structures necessary? 194 finding(s).

PR Review Velocity Impact 23.1/100 · LOW

Which changes need focused human review? 358 finding(s).

What These Metrics Mean

Adjusted Signal
Legacy pattern score normalized per 1,000 scanned lines and multiplied by the repository-level time factor. It is not an estimate of AI authorship.
Raw Pattern Score
Sum of severity- and context-weighted pattern findings before applying the time factor.
Time Factor
A coarse multiplier based on repository last-push metadata. It does not identify when individual code was written.
Pattern Hits
Count of configured pattern findings. Review each location and surrounding code before acting.
HC Hit Rate
High- and critical-severity findings per scanned file. Severity is a configured detector weight, not proof of a vulnerability or authorship.
Lines / Files
Scan coverage denominators used by the legacy normalized score.

Pattern-Signal History

This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.

Severity Breakdown

Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.

CRITICAL 82HIGH 3MEDIUM 197LOW 76

Directory Score Breakdown

This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.

Pattern Findings

The scanner identified 358 distinct pattern matches across 8 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.

Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.

Hallucination Indicators82 hits · 905 pts
SeverityFileLineSnippetContext
CRITICAL…va/com/theveloper/pixelplay/ui/theme/ColorRolesTest.kt290 return com.google.android.material.color.utilities.MathUtils.differenceDegrees(CODE
CRITICAL…java/com/theveloper/pixelplay/utils/LyricsUtilsTest.kt386 com.theveloper.pixelplay.data.model.SyncedLine(STRING
CRITICAL…java/com/theveloper/pixelplay/utils/LyricsUtilsTest.kt391 com.theveloper.pixelplay.data.model.SyncedLine(STRING
CRITICAL…java/com/theveloper/pixelplay/utils/LyricsUtilsTest.kt408 com.theveloper.pixelplay.data.model.SyncedLine(STRING
CRITICAL…eloper/pixelplay/data/worker/AlbumGroupingUtilsTest.kt79 val album = com.theveloper.pixelplay.data.database.AlbumEntity(CODE
CRITICAL…ixelplay/presentation/viewmodel/PlayerViewModelTest.kt144 coEvery { mockUserPreferencesRepository.fullPlayerLoadingTweaksFlow } returns flowOf(com.theveloper.pixelplay.daCODE
CRITICAL⚡…rc/main/java/com/theveloper/pixelplay/ui/theme/Type.kt70 androidx.compose.ui.text.font.Font(CODE
CRITICAL⚡…rc/main/java/com/theveloper/pixelplay/ui/theme/Type.kt78 androidx.compose.ui.text.font.Font(CODE
CRITICAL⚡…rc/main/java/com/theveloper/pixelplay/ui/theme/Type.kt86 androidx.compose.ui.text.font.Font(CODE
CRITICAL⚡…rc/main/java/com/theveloper/pixelplay/ui/theme/Type.kt94 androidx.compose.ui.text.font.Font(CODE
CRITICAL⚡…rc/main/java/com/theveloper/pixelplay/ui/theme/Type.kt102 androidx.compose.ui.text.font.Font(CODE
CRITICAL…/java/com/theveloper/pixelplay/ui/theme/GenreColors.kt113 private fun androidx.compose.ui.graphics.Color.contrastContentColor(): androidx.compose.ui.graphics.Color {CODE
CRITICAL…ava/com/theveloper/pixelplay/utils/MediaItemBuilder.kt113 return com.theveloper.pixelplay.data.diagnostics.PerformanceMetrics.time(CODE
CRITICAL…oper/pixelplay/data/repository/LyricsRepositoryImpl.kt585 com.theveloper.pixelplay.data.database.LyricsEntity(CODE
CRITICAL…oper/pixelplay/data/repository/LyricsRepositoryImpl.kt1297 com.theveloper.pixelplay.data.database.LyricsEntity(CODE
CRITICAL…oper/pixelplay/data/repository/LyricsRepositoryImpl.kt1340 com.theveloper.pixelplay.data.database.LyricsEntity(CODE
CRITICAL…oper/pixelplay/data/repository/LyricsRepositoryImpl.kt1512 com.theveloper.pixelplay.data.database.LyricsEntity(CODE
CRITICAL…oper/pixelplay/data/repository/LyricsRepositoryImpl.kt1632 com.theveloper.pixelplay.data.database.LyricsEntity(CODE
CRITICAL…/pixelplay/data/repository/MediaStoreSongRepository.kt396 com.theveloper.pixelplay.data.paging.MediaStorePagingSource(context, musicIds, genreMap)CODE
CRITICAL…loper/pixelplay/data/repository/MusicRepositoryImpl.kt174 com.theveloper.pixelplay.data.worker.SyncWorker.incrementalSyncWork()CODE
CRITICAL…loper/pixelplay/data/repository/MusicRepositoryImpl.kt398 com.theveloper.pixelplay.data.worker.SyncWorker.incrementalSyncWork()CODE
CRITICAL…loper/pixelplay/data/repository/MusicRepositoryImpl.kt817 com.theveloper.pixelplay.data.database.FavoritesEntity(CODE
CRITICAL…loper/pixelplay/data/repository/MusicRepositoryImpl.kt1188 com.theveloper.pixelplay.data.worker.SyncWorker.incrementalSyncWork()CODE
CRITICAL…er/pixelplay/data/network/qqmusic/QqMusicApiService.kt48 .addInterceptor(com.theveloper.pixelplay.data.remote.qqmusic.QQMusicEncryptInterceptor(CODE
CRITICAL…er/pixelplay/data/network/qqmusic/QqMusicApiService.kt49 com.theveloper.pixelplay.data.remote.qqmusic.QQSignGenerator(context)CODE
CRITICAL…ain/java/com/theveloper/pixelplay/data/ai/AiHandler.kt112 throw com.theveloper.pixelplay.data.ai.provider.AiProviderSupport.createException(CODE
CRITICAL…ain/java/com/theveloper/pixelplay/data/ai/AiHandler.kt126 val failure = com.theveloper.pixelplay.data.ai.provider.AiProviderSupport.wrapThrowable(CODE
CRITICAL…ain/java/com/theveloper/pixelplay/data/ai/AiHandler.kt149 val recoveredModel = com.theveloper.pixelplay.data.ai.provider.AiProviderSupport.selectRecoveryModel(CODE
CRITICAL…ain/java/com/theveloper/pixelplay/data/ai/AiHandler.kt194 val providersToTry = com.theveloper.pixelplay.data.ai.provider.AiProviderSupport.buildProviderChain(userProviderCODE
CRITICAL…ain/java/com/theveloper/pixelplay/data/ai/AiHandler.kt260 val failure = com.theveloper.pixelplay.data.ai.provider.AiProviderSupport.wrapThrowable(provider.displayCODE
CRITICAL…/com/theveloper/pixelplay/data/service/MusicService.kt2100 com.theveloper.pixelplay.data.model.QueueItem(CODE
CRITICAL…/com/theveloper/pixelplay/data/service/MusicService.kt2334 val isLocalArtworkUri = com.theveloper.pixelplay.utils.LocalArtworkUri.isLocalArtworkUri(uriString)CODE
CRITICAL…oper/pixelplay/data/service/wear/WearStatePublisher.kt204 com.theveloper.pixelplay.utils.LocalArtworkUri.isLocalArtworkUri(uriString) ||CODE
CRITICAL…oper/pixelplay/data/service/wear/WearStatePublisher.kt361 private fun com.theveloper.pixelplay.data.model.Lyrics.toWearLyrics(CODE
CRITICAL…eloper/pixelplay/data/stats/PlaybackStatsRepository.kt315 daySpan = max(1L, java.time.temporal.ChronoUnit.DAYS.between(startDate, endDate) + 1)CODE
CRITICAL⚡…m/theveloper/pixelplay/data/media/ImageCacheManager.kt27 if (com.theveloper.pixelplay.utils.LocalArtworkUri.isLocalArtworkUri(baseUri)) {CODE
CRITICAL⚡…m/theveloper/pixelplay/data/media/ImageCacheManager.kt28 com.theveloper.pixelplay.utils.LocalArtworkUri.parseSongId(baseUri)?.let { songId ->CODE
CRITICAL⚡…m/theveloper/pixelplay/data/media/ImageCacheManager.kt29 com.theveloper.pixelplay.utils.AlbumArtUtils.clearCacheForSong(context, songId)CODE
CRITICAL…/pixelplay/presentation/viewmodel/PlaylistViewModel.kt821 private fun com.theveloper.pixelplay.data.model.MusicFolder.collectAllSongs(): List<Song> {CODE
CRITICAL…xelplay/presentation/viewmodel/ColorSchemeProcessor.kt148 config = com.theveloper.pixelplay.ui.theme.ColorExtractionConfig(CODE
CRITICAL…/pixelplay/presentation/viewmodel/SettingsViewModel.kt1273 .map { com.theveloper.pixelplay.data.ai.GeminiModel(it, formatModelDisplayName(it)) }CODE
CRITICAL⚡…pixelplay/presentation/viewmodel/LibraryStateHolder.kt177 val lightThemeColor = com.theveloper.pixelplay.ui.theme.GenreThemeUtils.getGenreThemeColor(seed.id, isDaCODE
CRITICAL⚡…pixelplay/presentation/viewmodel/LibraryStateHolder.kt178 val darkThemeColor = com.theveloper.pixelplay.ui.theme.GenreThemeUtils.getGenreThemeColor(seed.id, isDarCODE
CRITICAL⚡…pixelplay/presentation/viewmodel/LibraryStateHolder.kt180 com.theveloper.pixelplay.data.model.Genre(CODE
CRITICAL…pixelplay/presentation/viewmodel/LibraryStateHolder.kt612private fun androidx.compose.ui.graphics.Color.toHexString(): String {CODE
CRITICAL…play/presentation/viewmodel/MetadataEditStateHolder.kt164 com.theveloper.pixelplay.data.media.AudioMetadataReader.read(java.io.File(song.path))CODE
CRITICAL…play/presentation/viewmodel/MetadataEditStateHolder.kt413 android.provider.MediaStore.Audio.Media.getContentUri(CODE
CRITICAL⚡…per/pixelplay/presentation/navigation/AppNavigation.kt465 com.theveloper.pixelplay.presentation.screens.DeviceCapabilitiesScreen(CODE
CRITICAL⚡…per/pixelplay/presentation/navigation/AppNavigation.kt475 com.theveloper.pixelplay.presentation.netease.dashboard.NeteaseDashboardScreen(CODE
CRITICAL⚡…per/pixelplay/presentation/navigation/AppNavigation.kt484 com.theveloper.pixelplay.presentation.qqmusic.dashboard.QqMusicDashboardScreen(CODE
CRITICAL⚡…per/pixelplay/presentation/navigation/AppNavigation.kt493 com.theveloper.pixelplay.presentation.navidrome.dashboard.NavidromeDashboardScreen(CODE
CRITICAL⚡…per/pixelplay/presentation/navigation/AppNavigation.kt502 com.theveloper.pixelplay.presentation.jellyfin.dashboard.JellyfinDashboardScreen(CODE
CRITICAL…eveloper/pixelplay/presentation/screens/StatsScreen.kt2583 style = androidx.compose.ui.graphics.drawscope.Stroke(CODE
CRITICAL…eveloper/pixelplay/presentation/screens/StatsScreen.kt2600 style = androidx.compose.ui.graphics.drawscope.Stroke(CODE
CRITICAL…xelplay/presentation/screens/SettingsCategoryScreen.kt919 val provider = com.theveloper.pixelplay.data.ai.provider.AiProvider.fromString(aiProvider)CODE
CRITICAL…xelplay/presentation/screens/SettingsCategoryScreen.kt1431 kotlinx.coroutines.delay(com.theveloper.pixelplay.presentation.navigation.TRANSITION_DURATION.toLong())CODE
CRITICAL…eloper/pixelplay/presentation/screens/LibraryScreen.kt1482 com.theveloper.pixelplay.presentation.components.LibrarySheetToggleCard(CODE
CRITICAL…loper/pixelplay/presentation/screens/SettingsScreen.kt299 kotlinx.coroutines.delay(com.theveloper.pixelplay.presentation.navigation.TRANSITION_DURATION.toLong())CODE
CRITICAL…er/pixelplay/presentation/screens/GenreDetailScreen.kt224 com.theveloper.pixelplay.ui.theme.GenreThemeUtils.getGenreThemeColor(CODE
CRITICAL…er/pixelplay/presentation/screens/GenreDetailScreen.kt230 com.theveloper.pixelplay.ui.theme.GenreThemeColor(CODE
22 more matches not shown…
Decorative Section Separators194 hits · 534 pts
SeverityFileLineSnippetContext
MEDIUM…ain/java/com/theveloper/pixelplay/utils/LyricsUtils.kt150 // ── Pass 1: resolve readings ──────────────────────────────────────COMMENT
MEDIUM…ain/java/com/theveloper/pixelplay/utils/LyricsUtils.kt194 // ── Pass 2: build katakana string with spacing ────────────────────COMMENT
MEDIUM…ain/java/com/theveloper/pixelplay/utils/LyricsUtils.kt211 // ── Pass 3: Katakana → Latin via ICU transliterator ───────────────COMMENT
MEDIUM…ain/java/com/theveloper/pixelplay/utils/LyricsUtils.kt220 // ── Pass 4: context-sensitive post-processing ─────────────────────COMMENT
MEDIUM…ain/java/com/theveloper/pixelplay/utils/LyricsUtils.kt234 // ── 多音字 (polyphone) override table ────────────────────────────────────COMMENT
MEDIUM…ain/java/com/theveloper/pixelplay/utils/LyricsUtils.kt385 // ── Regular Hanzi ─────────────────────────────────────────COMMENT
MEDIUM…ain/java/com/theveloper/pixelplay/utils/LyricsUtils.kt392 // ── Non-Hanzi passthrough ─────────────────────────────────COMMENT
MEDIUM…ain/java/com/theveloper/pixelplay/utils/LyricsUtils.kt573 // ── ь soft sign: palatalize the *previous* output consonant ─────────COMMENT
MEDIUM⚡…ain/java/com/theveloper/pixelplay/utils/LyricsUtils.kt614 // ── ё always = "yo" (Russian) ──────────────────────────────────────COMMENT
MEDIUM⚡…ain/java/com/theveloper/pixelplay/utils/LyricsUtils.kt620 // ── жи, ши, ци → always hard vowel "i" despite Cyrillic и ──────────COMMENT
MEDIUM⚡…ain/java/com/theveloper/pixelplay/utils/LyricsUtils.kt629 // ── Multi-char lookups (3-char first, then 2-char) ──────────────────COMMENT
MEDIUM…ain/java/com/theveloper/pixelplay/utils/LyricsUtils.kt908 // ── Kugou / Paxsenix word-by-word helpers ─────────────────────────────COMMENT
MEDIUM…com/theveloper/pixelplay/data/database/NavidromeDao.kt15 // ─── Songs ─────────────────────────────────────────────────────────COMMENT
MEDIUM…com/theveloper/pixelplay/data/database/NavidromeDao.kt47 // ─── Playlists ─────────────────────────────────────────────────────COMMENT
MEDIUM…com/theveloper/pixelplay/data/database/NavidromeDao.kt76 // ─── Clear All ─────────────────────────────────────────────────────COMMENT
MEDIUM…/com/theveloper/pixelplay/data/database/TelegramDao.kt67 // ─── Topic methods ────────────────────────────────────────────────────────COMMENT
MEDIUM…/com/theveloper/pixelplay/data/database/JellyfinDao.kt12 // ─── Songs ─────────────────────────────────────────────────────────COMMENT
MEDIUM…/com/theveloper/pixelplay/data/database/JellyfinDao.kt44 // ─── Playlists ─────────────────────────────────────────────────────COMMENT
MEDIUM…/com/theveloper/pixelplay/data/database/JellyfinDao.kt76 // ─── Clear All ─────────────────────────────────────────────────────COMMENT
MEDIUM…a/com/theveloper/pixelplay/data/database/QqMusicDao.kt12 // ─── Songs ─────────────────────────────────────────────────────────COMMENT
MEDIUM…a/com/theveloper/pixelplay/data/database/QqMusicDao.kt38 // ─── Playlists ─────────────────────────────────────────────────────COMMENT
MEDIUM…a/com/theveloper/pixelplay/data/database/NeteaseDao.kt12 // ─── Songs ─────────────────────────────────────────────────────────COMMENT
MEDIUM…a/com/theveloper/pixelplay/data/database/NeteaseDao.kt42 // ─── Playlists ─────────────────────────────────────────────────────COMMENT
MEDIUM…a/com/theveloper/pixelplay/data/database/NeteaseDao.kt56 // ─── Clear All ─────────────────────────────────────────────────────COMMENT
MEDIUM…ixelplay/data/preferences/UserPreferencesRepository.kt90 // ─── Preference keys ────────────────────────────────────────────────────COMMENT
MEDIUM…ixelplay/data/preferences/UserPreferencesRepository.kt251 // ─── Private helpers ─────────────────────────────────────────────────────COMMENT
MEDIUM…ixelplay/data/preferences/UserPreferencesRepository.kt278 // ─── Onboarding / dialogs ─────────────────────────────────────────────────COMMENT
MEDIUM…ixelplay/data/preferences/UserPreferencesRepository.kt308 // ─── Playback ─────────────────────────────────────────────────────────────COMMENT
MEDIUM…ixelplay/data/preferences/UserPreferencesRepository.kt400 // ─── Full player loading tweaks ───────────────────────────────────────────COMMENT
MEDIUM…ixelplay/data/preferences/UserPreferencesRepository.kt497 // ─── Transitions ──────────────────────────────────────────────────────────COMMENT
MEDIUM…ixelplay/data/preferences/UserPreferencesRepository.kt510 // ─── Favorites ────────────────────────────────────────────────────────────COMMENT
MEDIUM…ixelplay/data/preferences/UserPreferencesRepository.kt540 // ─── Playlists ────────────────────────────────────────────────────────────COMMENT
MEDIUM…ixelplay/data/preferences/UserPreferencesRepository.kt577 // ─── Directories ──────────────────────────────────────────────────────────COMMENT
MEDIUM…ixelplay/data/preferences/UserPreferencesRepository.kt604 // ─── Library sync ─────────────────────────────────────────────────────────COMMENT
MEDIUM…ixelplay/data/preferences/UserPreferencesRepository.kt749 // ─── Pause on volume zero ─────────────────────────────────────────────────COMMENT
MEDIUM…ixelplay/data/preferences/UserPreferencesRepository.kt773 // ─── Sort options ─────────────────────────────────────────────────────────COMMENT
MEDIUM…ixelplay/data/preferences/UserPreferencesRepository.kt854 // ─── Library UI state ─────────────────────────────────────────────────────COMMENT
MEDIUM…ixelplay/data/preferences/UserPreferencesRepository.kt958 // ─── Navigation bar ───────────────────────────────────────────────────────COMMENT
MEDIUM…ixelplay/data/preferences/UserPreferencesRepository.kt1009 // ─── Multi-artist settings ────────────────────────────────────────────────COMMENT
MEDIUM…ixelplay/data/preferences/UserPreferencesRepository.kt1067 // ─── Lyrics ───────────────────────────────────────────────────────────────COMMENT
MEDIUM…ixelplay/data/preferences/UserPreferencesRepository.kt1137 // ─── Custom genres ────────────────────────────────────────────────────────COMMENT
MEDIUM…ixelplay/data/preferences/UserPreferencesRepository.kt1170 // ─── Collage ──────────────────────────────────────────────────────────────COMMENT
MEDIUM…ixelplay/data/preferences/UserPreferencesRepository.kt1186 // ─── Quick settings / last playlist ──────────────────────────────────────COMMENT
MEDIUM…ixelplay/data/preferences/UserPreferencesRepository.kt1208 // ─── Developer options ────────────────────────────────────────────────────COMMENT
MEDIUM…ixelplay/data/preferences/UserPreferencesRepository.kt1247 // ─── Backup / restore ─────────────────────────────────────────────────────COMMENT
MEDIUM…ixelplay/data/preferences/UserPreferencesRepository.kt1364 // ─── Companion ────────────────────────────────────────────────────────────COMMENT
MEDIUM…ixelplay/data/preferences/UserPreferencesRepository.kt1381 // ─── Private utilities ────────────────────────────────────────────────────COMMENT
MEDIUM…eveloper/pixelplay/data/jellyfin/JellyfinRepository.kt90 // ─── Authentication ──────────────────────────────────────────────────COMMENT
MEDIUM…eveloper/pixelplay/data/jellyfin/JellyfinRepository.kt188 // ─── Playlists ────────────────────────────────────────────────────────COMMENT
MEDIUM…eveloper/pixelplay/data/jellyfin/JellyfinRepository.kt414 // ─── Search ────────────────────────────────────────────────────────────COMMENT
MEDIUM…eveloper/pixelplay/data/jellyfin/JellyfinRepository.kt442 // ─── Media URLs ────────────────────────────────────────────────────────COMMENT
MEDIUM…eveloper/pixelplay/data/jellyfin/JellyfinRepository.kt453 // ─── Lyrics ────────────────────────────────────────────────────────────COMMENT
MEDIUM…eveloper/pixelplay/data/jellyfin/JellyfinRepository.kt470 // ─── Unified Library Sync ──────────────────────────────────────────────COMMENT
MEDIUM…eveloper/pixelplay/data/jellyfin/JellyfinRepository.kt578 // ─── Utility Methods ───────────────────────────────────────────────────COMMENT
MEDIUM…eveloper/pixelplay/data/jellyfin/JellyfinRepository.kt600 // ─── App Playlist Management ───────────────────────────────────────────COMMENT
MEDIUM…m/theveloper/pixelplay/data/stream/CloudStreamProxy.kt44 // ─── Subclass Configuration ────────────────────────────────────────COMMENT
MEDIUM…m/theveloper/pixelplay/data/stream/CloudStreamProxy.kt68 // ─── Server State ──────────────────────────────────────────────────COMMENT
MEDIUM…m/theveloper/pixelplay/data/stream/CloudStreamProxy.kt81 // ─── Public API ────────────────────────────────────────────────────COMMENT
MEDIUM…m/theveloper/pixelplay/data/stream/CloudStreamProxy.kt155 // ─── Overridable Hooks ─────────────────────────────────────────────COMMENT
MEDIUM…m/theveloper/pixelplay/data/stream/CloudStreamProxy.kt160 // ─── Internal ──────────────────────────────────────────────────────COMMENT
134 more matches not shown…
Over-Commented Block54 hits · 54 pts
SeverityFileLineSnippetContext
LOW…com/theveloper/pixelplay/data/database/MusicDaoTest.kt161 suspend fun insertMusicData(...) {COMMENT
LOW…com/theveloper/pixelplay/data/database/MusicDaoTest.kt21//COMMENT
LOW…com/theveloper/pixelplay/data/database/MusicDaoTest.kt41// SongEntity(1L, "Song A", "Artist 1", 101L, "Album X", 201L, "uri_a", "art_uri_a", 180000, "Pop", "/path/a"COMMENT
LOW…com/theveloper/pixelplay/data/database/MusicDaoTest.kt61// assertThat(retrievedAlbums).containsExactlyElementsIn(albumList.sortedBy { it.title })COMMENT
LOW…com/theveloper/pixelplay/data/database/MusicDaoTest.kt81// musicDao.insertSongs(listOf(oldSong))COMMENT
LOW…com/theveloper/pixelplay/data/database/MusicDaoTest.kt101// @TestCOMMENT
LOW…com/theveloper/pixelplay/data/database/MusicDaoTest.kt121// // - getAllUniqueAlbumArtUrisFromSongsCOMMENT
LOW…ain/java/com/theveloper/pixelplay/utils/LyricsUtils.kt241 '中' to "zhong",COMMENT
LOW…ain/java/com/theveloper/pixelplay/utils/LyricsUtils.kt301 // 乐 — handled contextually: 音乐 yuè, 快乐/高兴 lèCOMMENT
LOW…/com/theveloper/pixelplay/data/model/SortOptionTest.kt1package com.theveloper.pixelplay.data.modelCOMMENT
LOW…ixelplay/presentation/viewmodel/PlaybackStateHolder.kt41 private val castStateHolder: CastStateHolder,COMMENT
LOW…play/presentation/viewmodel/MetadataEditStateHolder.kt281 }COMMENT
LOW…pixelplay/presentation/screens/FolderExplorerScreen.kt21import java.io.FileCOMMENT
LOW…pixelplay/presentation/screens/FolderExplorerScreen.kt41//) {COMMENT
LOW…pixelplay/presentation/screens/FolderExplorerScreen.kt61// Text(COMMENT
LOW…pixelplay/presentation/screens/FolderExplorerScreen.kt81// )COMMENT
LOW…pixelplay/presentation/screens/FolderExplorerScreen.kt101// title = if (fromSetup) "Select folders for setup" else "Select music folders",COMMENT
LOW…pixelplay/presentation/screens/EditTransitionScreen.kt161 containerColor = MaterialTheme.colorScheme.surface,COMMENT
LOW…loper/pixelplay/presentation/screens/SettingsScreen.kt441// contentAlignment = Alignment.Center,COMMENT
LOW…pixelplay/presentation/screens/RecentlyPlayedScreen.kt421COMMENT
LOW…r/pixelplay/presentation/components/WavyMusicSlider.kt341 cornerRadius = CornerRadius(thumbCurrentWidthPx / 2f)COMMENT
LOW…r/pixelplay/presentation/components/WavyMusicSlider.kt361// inactiveTrackColor: Color = MaterialTheme.colorScheme.surfaceVariant,COMMENT
LOW…r/pixelplay/presentation/components/WavyMusicSlider.kt381//COMMENT
LOW…r/pixelplay/presentation/components/WavyMusicSlider.kt401// val thumbRadiusPx = with(LocalDensity.current) { thumbRadius.toPx() }COMMENT
LOW…r/pixelplay/presentation/components/WavyMusicSlider.kt421// onValueChange = { newValue ->COMMENT
LOW…r/pixelplay/presentation/components/WavyMusicSlider.kt441// )COMMENT
LOW…r/pixelplay/presentation/components/WavyMusicSlider.kt461// onDrawWithContent {COMMENT
LOW…r/pixelplay/presentation/components/WavyMusicSlider.kt481// cap = StrokeCap.RoundCOMMENT
LOW…r/pixelplay/presentation/components/WavyMusicSlider.kt501// val waveStep = 2f // Aumentado de 1f a 2f para reducir cálculosCOMMENT
LOW…r/pixelplay/presentation/components/WavyMusicSlider.kt521// style = Stroke(width = trackHeightPx, cap = StrokeCap.Round)COMMENT
LOW…r/pixelplay/presentation/components/WavyMusicSlider.kt541// lerp(thumbRadiusPx * 2f, trackHeightPx * 1.2f, thumbInteractionFraction)COMMENT
LOW…loper/pixelplay/presentation/components/LyricsSheet.kt2001 // If we just use conditional Modifier.graphicsLayer rotation, it might jump.COMMENT
LOW…r/pixelplay/presentation/components/CastBottomSheet.kt1161// modifier = ModifierCOMMENT
LOW…per/pixelplay/presentation/components/ScreenWrapper.kt81 entry.destination.route?.let { route -> !isMainRootRoute(route) } == trueCOMMENT
LOW…pixelplay/presentation/components/OptimizedAlbumArt.kt261// title: String,COMMENT
LOW…pixelplay/presentation/components/OptimizedAlbumArt.kt281// if (state is AsyncImagePainter.State.Error) {COMMENT
LOW…pixelplay/presentation/components/OptimizedAlbumArt.kt301// animationSpec = tween(durationMillis = 350),COMMENT
LOW…pixelplay/presentation/components/OptimizedAlbumArt.kt321// contentScale = ContentScale.Crop,COMMENT
LOW…/presentation/components/subcomps/FetchLyricsDialog.kt601 containerColor = MaterialTheme.colorScheme.error,COMMENT
LOW…/presentation/components/subcomps/FetchLyricsDialog.kt621// onImport: () -> UnitCOMMENT
LOW…/presentation/components/subcomps/FetchLyricsDialog.kt641// DialogHeader(currentSong = currentSong)COMMENT
LOW…/presentation/components/subcomps/FetchLyricsDialog.kt661// onClick = onImport,COMMENT
LOW…/presentation/components/subcomps/FetchLyricsDialog.kt681// modifier = ModifierCOMMENT
LOW…/presentation/components/subcomps/FetchLyricsDialog.kt701// DialogHeader(currentSong = currentSong)COMMENT
LOW…/presentation/components/subcomps/FetchLyricsDialog.kt721//COMMENT
LOW…/presentation/components/subcomps/FetchLyricsDialog.kt741// style = MaterialTheme.typography.bodyMedium,COMMENT
LOW…/presentation/components/subcomps/FetchLyricsDialog.kt761// modifier = Modifier.padding(24.dp),COMMENT
LOW…/presentation/components/subcomps/FetchLyricsDialog.kt781// )COMMENT
LOW…/presentation/components/subcomps/FetchLyricsDialog.kt801// }COMMENT
LOW…/presentation/components/subcomps/FetchLyricsDialog.kt821// }COMMENT
LOW…/presentation/components/subcomps/FetchLyricsDialog.kt841// modifier = ModifierCOMMENT
LOW…/presentation/components/subcomps/FetchLyricsDialog.kt861// )COMMENT
LOW…/presentation/components/subcomps/FetchLyricsDialog.kt881// onClick = {},COMMENT
LOW…entation/telegram/dashboard/TelegramDashboardScreen.kt681// Text(COMMENT
Verbosity Indicators11 hits · 18 pts
SeverityFileLineSnippetContext
LOW⚡…per/pixelplay/data/repository/PlaylistSongCountTest.kt124 // Step 4: remove one or two of them — quickly, as fast taps do.COMMENT
LOW⚡…per/pixelplay/data/repository/PlaylistSongCountTest.kt129 // Step 5: the menu count must reflect BOTH removals (the bug left it stuck high).COMMENT
LOW…ava/com/theveloper/pixelplay/data/worker/SyncWorker.kt694 // Step 1: Fetch all genres (single query)COMMENT
LOW…ava/com/theveloper/pixelplay/data/worker/SyncWorker.kt722 // Step 2: Fetch members for each genre in parallel (controlled concurrency)COMMENT
LOW…xelplay/presentation/viewmodel/GenreDetailViewModel.kt133 // Step 1: Fast load of the Genre object to stabilize the UI theme as early as possible.COMMENT
LOW…xelplay/presentation/viewmodel/GenreDetailViewModel.kt144 // Step 2: Heavy data processing for songs and sectionsCOMMENT
LOW…oper/pixelplay/presentation/viewmodel/AiStateHolder.kt139 // Step 1: Pre-generation analysisCOMMENT
LOW…oper/pixelplay/presentation/viewmodel/AiStateHolder.kt155 // Step 2: Invoke AI Generation EngineCOMMENT
LOW…pixelplay/presentation/screens/CreatePlaylistScreen.kt306 // Step 1: Info StateCOMMENT
LOW…xelplay/presentation/screens/SettingsCategoryScreen.kt1749 // Step 2: Module selection from inspected backupCOMMENT
LOW…xelplay/presentation/screens/SettingsCategoryScreen.kt1770 // Step 1: File selection with backup historyCOMMENT
Structural Annotation Overuse11 hits · 18 pts
SeverityFileLineSnippetContext
LOW⚡…per/pixelplay/data/repository/PlaylistSongCountTest.kt124 // Step 4: remove one or two of them — quickly, as fast taps do.COMMENT
LOW⚡…per/pixelplay/data/repository/PlaylistSongCountTest.kt129 // Step 5: the menu count must reflect BOTH removals (the bug left it stuck high).COMMENT
LOW…ava/com/theveloper/pixelplay/data/worker/SyncWorker.kt694 // Step 1: Fetch all genres (single query)COMMENT
LOW…ava/com/theveloper/pixelplay/data/worker/SyncWorker.kt722 // Step 2: Fetch members for each genre in parallel (controlled concurrency)COMMENT
LOW…xelplay/presentation/viewmodel/GenreDetailViewModel.kt133 // Step 1: Fast load of the Genre object to stabilize the UI theme as early as possible.COMMENT
LOW…xelplay/presentation/viewmodel/GenreDetailViewModel.kt144 // Step 2: Heavy data processing for songs and sectionsCOMMENT
LOW…oper/pixelplay/presentation/viewmodel/AiStateHolder.kt139 // Step 1: Pre-generation analysisCOMMENT
LOW…oper/pixelplay/presentation/viewmodel/AiStateHolder.kt155 // Step 2: Invoke AI Generation EngineCOMMENT
LOW…pixelplay/presentation/screens/CreatePlaylistScreen.kt306 // Step 1: Info StateCOMMENT
LOW…xelplay/presentation/screens/SettingsCategoryScreen.kt1749 // Step 2: Module selection from inspected backupCOMMENT
LOW…xelplay/presentation/screens/SettingsCategoryScreen.kt1770 // Step 1: File selection with backup historyCOMMENT
Synthetic Comment Markers3 hits · 18 pts
SeverityFileLineSnippetContext
HIGH…pixelplay/presentation/screens/PlaylistDetailScreen.kt798 top = 18.dp // Increased to 16.dp as requestedCODE
HIGH…lay/presentation/screens/ExperimentalSettingsScreen.kt743 // For simplicity and quick access as requested ("selector or slider"), let's use a segmentedCOMMENT
HIGH…elplay/presentation/components/WavySliderExpressive.kt77 waveSpeed: Dp = WavyProgressIndicatorDefaults.LinearDeterminateWavelength / 2f, // Slower wave as requestedCODE
AI Slop Vocabulary2 hits · 6 pts
SeverityFileLineSnippetContext
MEDIUM…heveloper/pixelplay/data/equalizer/EqualizerManager.kt301 // Initialize Loudness Enhancer (usually robust, but let's be safe)COMMENT
MEDIUM.github/workflows/codeql.yml39 # More robust sed pattern that handles various formatsCOMMENT
Modern AI Meta-Vocabulary1 hit · 2 pts
SeverityFileLineSnippetContext
MEDIUMREADME.md175├── di/ # Hilt dependency injection modulesCODE