AI Slop Code RIsk Monitor

jay3-yy/BiliPai

原生、纯净、可扩展 —— 重新定义你的 B 站体验

26.5 Elevated pattern signal View on GitHub

Maintenance and Governance Review

This report summarizes scanner evidence for jay3-yy/BiliPai, a Kotlin project with 4,819 GitHub stars. SynthScan examined 711,673 lines of code across 3605 source files, recording 1991 pattern matches distributed across 14 syntactic categories. The legacy adjusted pattern signal is 26.5 (Elevated 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.

26.5
Adjusted Signal
26.5
Raw Pattern Score
100%
Time Factor
2026-10-11
Last Push
4.8K
Stars
Kotlin
Language
711.7K
Lines of Code
3.6K
Files
2.0K
Pattern Hits
2026-10-12
Scan Date
0.52
HC Hit Rate

Risk Review · v3

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

Cognitive Ownership Risk 0.6/100 · LOW

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

Hallucinated Dependency & Supply Chain Risk 73.0/100 · HIGH

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

Agent Over-Engineering Ratio 1.1/100 · LOW

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

PR Review Velocity Impact 73.7/100 · HIGH

Which changes need focused human review? 1991 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 1880HIGH 5MEDIUM 44LOW 62

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 1991 distinct pattern matches across 14 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 Indicators1880 hits · 18610 pts
SeverityFileLineSnippetContext
CRITICAL…om/Android/purebilibili/feature/home/HomeScreenTest.kt28 com.android.purebilibili.feature.home.components.CategoryTabRow(CODE
CRITICAL…om/Android/purebilibili/feature/home/HomeScreenTest.kt47 com.android.purebilibili.feature.home.components.CategoryTabRow(CODE
CRITICAL…om/Android/purebilibili/feature/home/HomeScreenTest.kt65 com.android.purebilibili.feature.home.components.FrostedBottomBar(CODE
CRITICAL…/core/ui/transition/VideoSharedTransitionPolicyTest.kt1076 playerSource.contains("com.android.purebilibili.core.ui.motion.AppMotionTokens.spatialSpec()"),CODE
CRITICAL…ore/ui/skeleton/ContentLoadingSkeletonStructureTest.kt54 assertFalse(space.contains("SpaceUiState.Loading -> {\n com.android.purebilibili.core.ui.CODE
CRITICAL…/purebilibili/core/theme/MiuixThemeBridgePolicyTest.kt55 val expected = if (dark) top.yukonga.miuix.kmp.theme.darkColorScheme()CODE
CRITICAL…/purebilibili/core/theme/MiuixThemeBridgePolicyTest.kt56 else top.yukonga.miuix.kmp.theme.lightColorScheme()CODE
CRITICAL…/purebilibili/core/theme/MiuixThemeBridgePolicyTest.kt82 val expected = if (dark) top.yukonga.miuix.kmp.theme.darkColorScheme()CODE
CRITICAL…/purebilibili/core/theme/MiuixThemeBridgePolicyTest.kt83 else top.yukonga.miuix.kmp.theme.lightColorScheme()CODE
CRITICAL…/purebilibili/core/theme/MiuixThemeBridgePolicyTest.kt99 val expected = if (dark) top.yukonga.miuix.kmp.theme.darkColorScheme()CODE
CRITICAL…/purebilibili/core/theme/MiuixThemeBridgePolicyTest.kt100 else top.yukonga.miuix.kmp.theme.lightColorScheme()CODE
CRITICAL…/purebilibili/core/theme/MiuixThemeBridgePolicyTest.kt134 val upstream = top.yukonga.miuix.kmp.theme.darkColorScheme()CODE
CRITICAL…bilibili/navigation/MessageLinkNavigationPolicyTest.kt119 val link = com.android.purebilibili.feature.message.feed.buildMessageFeedCommentNavigationLink(CODE
CRITICAL…bilibili/navigation/MessageLinkNavigationPolicyTest.kt208 val link = com.android.purebilibili.feature.message.feed.buildMessageFeedCommentNavigationLink(CODE
CRITICAL…bilibili/navigation/MessageLinkNavigationPolicyTest.kt227 val link = com.android.purebilibili.feature.message.feed.buildMessageFeedCommentNavigationLink(CODE
CRITICAL…bili/feature/settings/AppSegmentedControlPolicyTest.kt18 val normal = com.android.purebilibili.core.ui.components.resolveAppSegmentedLabelFontSize(base, 5, 4)CODE
CRITICAL…bili/feature/settings/AppSegmentedControlPolicyTest.kt19 val enlarged = com.android.purebilibili.core.ui.components.resolveAppSegmentedLabelFontSize(base * 1.3f, 5, 4)CODE
CRITICAL⚡…ebilibili/feature/home/HomeFeedGridPolicyTabletTest.kt92 assertEquals(2, com.android.purebilibili.core.ui.adaptive.resolveHingeSafeFeedColumns(5, 440f))CODE
CRITICAL⚡…ebilibili/feature/home/HomeFeedGridPolicyTabletTest.kt93 assertEquals(1, com.android.purebilibili.core.ui.adaptive.resolveHingeSafeFeedColumns(3, 170f))CODE
CRITICAL⚡…ebilibili/feature/home/HomeFeedGridPolicyTabletTest.kt94 assertEquals(1, com.android.purebilibili.core.ui.adaptive.resolveHingeSafeFeedColumns(1, 640f))CODE
CRITICAL⚡…ebilibili/feature/home/HomeFeedGridPolicyTabletTest.kt95 assertEquals(1, com.android.purebilibili.core.ui.adaptive.resolveHingeSafeFeedColumns(2, 440f, minCardWidthDp = CODE
CRITICAL…ature/home/components/FloatingBottomBarGeometryTest.kt457 val geometry = com.android.purebilibili.core.ui.resolveMatchedLiquidIndicatorGeometry(CODE
CRITICAL…ature/home/components/FloatingBottomBarGeometryTest.kt474 val geometry = com.android.purebilibili.core.ui.resolveMatchedLiquidIndicatorGeometry(CODE
CRITICAL…/home/components/cards/VideoCardLongPressPolicyTest.kt32 assertFalse(com.android.purebilibili.core.store.HomeSettings().videoCardLongPressActionEnabled)CODE
CRITICAL⚡…/feature/video/viewmodel/VideoLoadRequestPolicyTest.kt1010 info = com.android.purebilibili.data.model.response.ViewInfo(CODE
CRITICAL⚡…/feature/video/viewmodel/VideoLoadRequestPolicyTest.kt1019 com.android.purebilibili.feature.video.subtitle.SubtitleTrackMeta(CODE
CRITICAL⚡…/feature/video/viewmodel/VideoLoadRequestPolicyTest.kt1026 com.android.purebilibili.feature.video.subtitle.SubtitleCue(CODE
CRITICAL⚡…/feature/video/viewmodel/VideoLoadRequestPolicyTest.kt1033 com.android.purebilibili.feature.video.subtitle.SubtitleCue(CODE
CRITICAL…/feature/video/viewmodel/VideoLoadRequestPolicyTest.kt1055 info = com.android.purebilibili.data.model.response.ViewInfo(CODE
CRITICAL…/feature/video/viewmodel/VideoLoadRequestPolicyTest.kt1060 videoshotData = com.android.purebilibili.data.model.response.VideoshotData(CODE
CRITICAL…/feature/video/viewmodel/VideoLoadRequestPolicyTest.kt1074 info = com.android.purebilibili.data.model.response.ViewInfo(CODE
CRITICAL…/feature/video/viewmodel/VideoLoadRequestPolicyTest.kt1107 info = com.android.purebilibili.data.model.response.ViewInfo(CODE
CRITICAL…/feature/video/viewmodel/VideoLoadRequestPolicyTest.kt1122 com.android.purebilibili.feature.video.subtitle.SubtitleCue(CODE
CRITICAL…/feature/video/viewmodel/VideoLoadRequestPolicyTest.kt1129 com.android.purebilibili.feature.video.subtitle.SubtitleCue(CODE
CRITICAL…/feature/video/viewmodel/VideoLoadRequestPolicyTest.kt1152 com.android.purebilibili.feature.video.subtitle.SubtitleCue(CODE
CRITICAL…/feature/video/viewmodel/VideoLoadRequestPolicyTest.kt1159 com.android.purebilibili.feature.video.subtitle.SubtitleCue(CODE
CRITICAL…/feature/video/viewmodel/VideoLoadRequestPolicyTest.kt1182 com.android.purebilibili.feature.video.subtitle.SubtitleCue(CODE
CRITICAL…/feature/video/viewmodel/VideoLoadRequestPolicyTest.kt1189 com.android.purebilibili.feature.video.subtitle.SubtitleCue(CODE
CRITICAL…feature/video/viewmodel/CommentPaginationPolicyTest.kt58 page = com.android.purebilibili.data.model.response.ReplyPage(count = 56)CODE
CRITICAL…feature/video/viewmodel/CommentPaginationPolicyTest.kt116 page = com.android.purebilibili.data.model.response.ReplyPage(CODE
CRITICAL…feature/video/viewmodel/CommentPaginationPolicyTest.kt134 restPage = com.android.purebilibili.data.model.response.ReplyPage(CODE
CRITICAL…feature/video/viewmodel/CommentPaginationPolicyTest.kt148 restPage = com.android.purebilibili.data.model.response.ReplyPage(CODE
CRITICAL…feature/video/viewmodel/CommentPaginationPolicyTest.kt186 page = com.android.purebilibili.data.model.response.ReplyPage(count = 230),CODE
CRITICAL…feature/video/viewmodel/CommentPaginationPolicyTest.kt196 page = com.android.purebilibili.data.model.response.ReplyPage(count = 20),CODE
CRITICAL…feature/video/viewmodel/CommentPaginationPolicyTest.kt250 restPage = com.android.purebilibili.data.model.response.ReplyPage(CODE
CRITICAL…feature/video/viewmodel/CommentPaginationPolicyTest.kt284 val remote = ReplyData(root = ReplyItem(rpid = 11L, content = com.android.purebilibili.data.model.response.ReplyCODE
CRITICAL…deo/viewmodel/AudioModeCollectionPlaylistPolicyTest.kt73 com.android.purebilibili.data.model.response.Page(cid = 11L, part = "第一集"),CODE
CRITICAL…deo/viewmodel/AudioModeCollectionPlaylistPolicyTest.kt74 com.android.purebilibili.data.model.response.Page(cid = 22L, part = "第二集")CODE
CRITICAL…feature/video/ui/section/VideoPlayerCoverPolicyTest.kt542 com.android.purebilibili.core.ui.transition.shouldUseDetailReturnCoverCrossfade(CODE
CRITICAL…feature/video/ui/section/VideoPlayerCoverPolicyTest.kt548 com.android.purebilibili.core.ui.transition.shouldFadePlayerSurfaceOnDetailReturn(CODE
CRITICAL…eature/video/ui/section/BgmDiscoverySheetPolicyTest.kt15 val tag = com.android.purebilibili.data.model.response.VideoTag(tag_type = "bgm", music_id = "MA123", tag_name =CODE
CRITICAL⚡…deo/ui/components/RelatedVideoItemPiliPlusStyleTest.kt19 com.android.purebilibili.core.util.FormatUtils.formatPublishTime(CODE
CRITICAL⚡…deo/ui/components/RelatedVideoItemPiliPlusStyleTest.kt27 com.android.purebilibili.core.util.FormatUtils.formatPublishTime(CODE
CRITICAL⚡…deo/ui/components/RelatedVideoItemPiliPlusStyleTest.kt35 com.android.purebilibili.core.util.FormatUtils.formatPublishTime(CODE
CRITICAL…ature/video/screen/VideoDetailReturnCoverPolicyTest.kt840 com.android.purebilibili.core.ui.transition.shouldForceCoverOnlyForReturnOwnership(CODE
CRITICAL…ature/video/screen/VideoDetailReturnCoverPolicyTest.kt848 com.android.purebilibili.core.ui.transition.shouldForceCoverOnlyForReturnOwnership(CODE
CRITICAL…ature/video/screen/VideoDetailReturnCoverPolicyTest.kt1662 val snapshot = com.android.purebilibili.core.ui.transition.VideoCardSourceChromeSnapshot(CODE
CRITICAL…ature/video/screen/VideoDetailReturnCoverPolicyTest.kt1686 val click = com.android.purebilibili.core.ui.transition.VideoCardSourceChromeSnapshot(CODE
CRITICAL…ature/video/screen/VideoDetailReturnCoverPolicyTest.kt1723 sourceChromeSnapshot = com.android.purebilibili.core.ui.transition.VideoCardSourceChromeSnapshot(CODE
CRITICAL…ature/video/screen/VideoDetailReturnCoverPolicyTest.kt1735 com.android.purebilibili.core.ui.transition.resolveVideoSharedCoverCacheKey("BV1"),CODE
1820 more matches not shown…
Decorative Section Separators32 hits · 96 pts
SeverityFileLineSnippetContext
MEDIUM…droid/purebilibili/core/ui/perf/FrameBudgetLintTest.kt200 // ── 冻结于接入棘轮时的实测值,只能调小 ──────────────────────────COMMENT
MEDIUM…ilibili/feature/plugin/dlna/DlnaCastRoutePolicyTest.kt12 // ── toDlnaCastRoute ────────────────────────────────────────────────────────COMMENT
MEDIUM…ilibili/feature/plugin/dlna/DlnaCastRoutePolicyTest.kt35 // ── resolveDlnaRouteSelection ──────────────────────────────────────────────COMMENT
MEDIUM…ilibili/feature/plugin/dlna/DlnaCastRoutePolicyTest.kt63 // ── buildDlnaRouteSnapshot ──────────────────────────────────────────────────COMMENT
MEDIUM…/com/android/purebilibili/core/util/WindowSizeUtils.kt482// ═══════════════════════════════════════════════════════════════════════════COMMENT
MEDIUM…/com/android/purebilibili/core/util/WindowSizeUtils.kt484// ═══════════════════════════════════════════════════════════════════════════COMMENT
MEDIUM…/java/com/android/purebilibili/core/util/EasterEggs.kt15 // ═══════════════════════════════════════════════════COMMENT
MEDIUM…/java/com/android/purebilibili/core/util/EasterEggs.kt17 // ═══════════════════════════════════════════════════COMMENT
MEDIUM…/java/com/android/purebilibili/core/util/EasterEggs.kt84 // ═══════════════════════════════════════════════════COMMENT
MEDIUM…/java/com/android/purebilibili/core/util/EasterEggs.kt86 // ═══════════════════════════════════════════════════COMMENT
MEDIUM…/java/com/android/purebilibili/core/util/EasterEggs.kt127 // ═══════════════════════════════════════════════════COMMENT
MEDIUM…/java/com/android/purebilibili/core/util/EasterEggs.kt129 // ═══════════════════════════════════════════════════COMMENT
MEDIUM…/java/com/android/purebilibili/core/util/EasterEggs.kt140 // ═══════════════════════════════════════════════════COMMENT
MEDIUM…/java/com/android/purebilibili/core/util/EasterEggs.kt142 // ═══════════════════════════════════════════════════COMMENT
MEDIUM…/java/com/android/purebilibili/core/util/EasterEggs.kt153 // ═══════════════════════════════════════════════════COMMENT
MEDIUM…/java/com/android/purebilibili/core/util/EasterEggs.kt155 // ═══════════════════════════════════════════════════COMMENT
MEDIUM…/java/com/android/purebilibili/core/util/EasterEggs.kt166 // ═══════════════════════════════════════════════════COMMENT
MEDIUM…/java/com/android/purebilibili/core/util/EasterEggs.kt168 // ═══════════════════════════════════════════════════COMMENT
MEDIUM…/java/com/android/purebilibili/core/util/EasterEggs.kt187 // ═══════════════════════════════════════════════════COMMENT
MEDIUM…/java/com/android/purebilibili/core/util/EasterEggs.kt189 // ═══════════════════════════════════════════════════COMMENT
MEDIUM…/java/com/android/purebilibili/core/util/EasterEggs.kt212 // ═══════════════════════════════════════════════════COMMENT
MEDIUM…/java/com/android/purebilibili/core/util/EasterEggs.kt214 // ═══════════════════════════════════════════════════COMMENT
MEDIUM…/java/com/android/purebilibili/core/util/EasterEggs.kt237 // ═══════════════════════════════════════════════════COMMENT
MEDIUM…/java/com/android/purebilibili/core/util/EasterEggs.kt239 // ═══════════════════════════════════════════════════COMMENT
MEDIUM…/java/com/android/purebilibili/core/util/EasterEggs.kt255 // ═══════════════════════════════════════════════════COMMENT
MEDIUM…/java/com/android/purebilibili/core/util/EasterEggs.kt257 // ═══════════════════════════════════════════════════COMMENT
MEDIUM…d/purebilibili/feature/settings/ui/SettingsSections.kt77// ═══════════════════════════════════════════════════COMMENT
MEDIUM…d/purebilibili/feature/settings/ui/SettingsSections.kt79// ═══════════════════════════════════════════════════COMMENT
MEDIUM…d/purebilibili/feature/settings/ui/SettingsSections.kt95// ═══════════════════════════════════════════════════COMMENT
MEDIUM…d/purebilibili/feature/settings/ui/SettingsSections.kt97// ═══════════════════════════════════════════════════COMMENT
MEDIUM…ili/core/ui/components/AdaptivePreferenceComponents.kt97// ═══════════════════════════════════════════════════COMMENT
MEDIUM…ili/core/ui/components/AdaptivePreferenceComponents.kt99// ═══════════════════════════════════════════════════COMMENT
Hyper-Verbose Identifiers26 hits · 32 pts
SeverityFileLineSnippetContext
LOWartwork/brand-motion/lottie.min.js1"undefined"!=typeof navigator&&function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"fuCODE
LOWplugins/tools/bilibili_skin_to_bpskin.py115def build_manifest_and_asset_sources(CODE
LOWplugins/tools/bilibili_skin_to_bpskin.py225def first_existing_package_asset(package_names: set[str], candidates: list[str]) -> str | None:CODE
LOW⚡scripts/test_video_card_transition_tools.py24 def test_refresh_and_percentiles(self):CODE
LOW⚡scripts/test_video_card_transition_tools.py34 def test_workload_budget_not_assumed_refresh_period(self):CODE
LOW⚡scripts/test_video_card_transition_tools.py38 def test_missing_data_is_not_a_pass(self):CODE
LOW⚡scripts/test_video_card_transition_tools.py43 def test_label_never_invents_phase_attribution(self):CODE
LOW⚡scripts/test_video_card_transition_tools.py49 def test_counter_deltas_and_frame_phase_intervals(self):CODE
LOW⚡scripts/test_video_card_transition_tools.py63 def test_unterminated_phase_and_counter_reset_not_invented(self):CODE
LOW⚡scripts/test_video_card_transition_tools.py70 def test_old_header_can_use_explicit_refresh(self):CODE
LOW⚡scripts/test_video_card_transition_tools.py76 def test_invalid_rows_are_excluded(self):CODE
LOW⚡scripts/test_video_card_transition_tools.py93 def test_checkpoint_retains_transition_and_uses_final_window_counters(self):CODE
LOW⚡scripts/test_video_card_transition_tools.py103 def test_overwritten_phase_cannot_pass_on_idle_frames(self):CODE
LOW⚡scripts/test_video_card_transition_tools.py111 def test_partial_phase_is_reported_as_incomplete(self):CODE
LOW⚡scripts/test_video_card_transition_tools.py117 def test_slow_first_frame_is_not_mistaken_for_overwritten_buffer(self):CODE
LOW⚡scripts/test_video_card_transition_tools.py124 def test_disjoint_checkpoints_do_not_claim_coverage_across_a_gap(self):CODE
LOW⚡scripts/test_video_card_transition_tools.py130 def test_modern_and_legacy_platform_counters_are_kept_separate(self):CODE
LOW⚡scripts/test_video_card_transition_tools.py137 def test_duplicate_window_uses_latest_completion(self):CODE
LOW⚡scripts/test_video_card_transition_tools.py142 def test_failures_still_write_json_and_markdown(self):CODE
LOWscripts/test_video_card_transition_tools.py156 def test_sampler_rejects_debug_and_smooth_without_adb(self):CODE
LOWscripts/test_video_card_transition_tools.py165 def test_sampler_start_stop_end_to_end_with_mock_adb(self):CODE
LOW⚡scripts/test_video_card_transition_tools.py228 def test_current_kotlin_tokens_all_presets(self):STRING
LOW⚡scripts/test_video_card_transition_tools.py234 def test_critical_spring_release_has_exact_position_and_velocity(self):STRING
LOW⚡scripts/test_video_card_transition_tools.py243 def test_fixed_refresh_samples_use_actual_frame_interval(self):STRING
LOW⚡scripts/test_video_card_transition_tools.py249 def test_probe_rejects_effects_overshoot(self):STRING
LOW…om/bytedance/danmaku/render/engine/data/DataManager.kt28class DataManager(controller: DanmakuController) {CODE
Modern AI Meta-Vocabulary9 hits · 22 pts
SeverityFileLineSnippetContext
MEDIUM…rebilibili/feature/home/HomePullRefreshUiPolicyTest.kt50 // Overlay chrome height via indicatorTopInset (not scaffold default 0).COMMENT
MEDIUM…rebilibili/feature/settings/ui/SettingsPageScaffold.kt170 // Keep this backdrop in the scaffold chrome. The scroll content is its source,COMMENT
MEDIUM…bili/feature/home/subscription/SubscriptionFeedPage.kt1187 // The scaffold records its content for both progressive blur and Haze.COMMENT
MEDIUM…oid/purebilibili/feature/message/MessageAppScaffold.kt58 // This subtree is inside the scaffold's source; top chrome is its sibling.COMMENT
MEDIUM…com/android/purebilibili/feature/message/ChatScreen.kt286 // Capture wallpaper and messages together, excluding the scaffold's top bar.COMMENT
MEDIUM…com/android/purebilibili/feature/message/ChatScreen.kt588 // scaffold body so the external chrome source includes message content as well.COMMENT
MEDIUM…om/android/purebilibili/feature/search/SearchScreen.kt1009 // zero here leaves only Search's opaque scaffold background for the remainder of theCOMMENT
MEDIUM…om/android/purebilibili/feature/search/SearchScreen.kt1057 // Keep the top chrome on the same semantic plane as the Miuix list scaffold.COMMENT
MEDIUM…om/android/purebilibili/feature/search/SearchScreen.kt2411 // Landing keeps an overlay search bar; results pin it in the scaffold chromeCOMMENT
Over-Commented Block18 hits · 18 pts
SeverityFileLineSnippetContext
LOW…bilibili/core/ui/lint/StyleLintAllowlistRatchetTest.kt141 private companion object {COMMENT
LOW…droid/purebilibili/core/ui/perf/FrameBudgetLintTest.kt201 const val MAX_COMPOSED = 23COMMENT
LOW…/purebilibili/core/cooldown/PlaybackCooldownManager.kt101 if (consecutiveFailures > 0) {COMMENT
LOW…oid/purebilibili/feature/settings/SettingsViewModel.kt1061 // [新增] 首页展示模式COMMENT
LOW…ebilibili/feature/home/components/FloatingBottomBar.kt1// Floating bottom bar structure and interactions. Liquid effects use project-localCOMMENT
LOW…i/feature/audio/lyrics/halcyon/AppleMusicLyricsView.kt341 }COMMENT
LOW…droid/purebilibili/feature/profile/ProfileViewModel.kt821 // 为了演示,这里先留空或模拟一些数据,或者如果 SearchApi 返回结构匹配的话COMMENT
LOW…/android/purebilibili/feature/profile/ProfileScreen.kt3361 }COMMENT
LOW…/android/purebilibili/feature/profile/ProfileScreen.kt3381 // LoggedOut wrapper passes guestUser to MobileProfileContent.COMMENT
LOWplugins/tools/create-plugin.js61// BiliPai.http.get(url, headers) / BiliPai.http.post(url, body, headers)COMMENT
LOWscripts/generate_rovniced_skin_catalog.sh1#!/usr/bin/env bashCOMMENT
LOW…main/java/top/yukonga/miuix/kmp/nav/core/NavDisplay.kt381 // below). Snapshot map, written only on actual change: a pure back-stack reorder changesCOMMENT
LOW…main/java/top/yukonga/miuix/kmp/nav/core/NavDisplay.kt461 // Wire the platform predictive back gesture to the single driver. Enabled only when there isCOMMENT
LOW…main/java/top/yukonga/miuix/kmp/nav/core/NavDisplay.kt681 ),COMMENT
LOW…main/java/top/yukonga/miuix/kmp/nav/core/NavDisplay.kt741 // Boundary ownership (§4.3): the entry's own transition governs while it is at theCOMMENT
LOW…a/top/yukonga/miuix/kmp/nav/gesture/NavSwipeDismiss.kt341 val releaseAnchor = if (anchor.isNaN()) topIndex - animatedTop.value else anchorCOMMENT
LOW…a/top/yukonga/miuix/kmp/nav/gesture/NavSwipeDismiss.kt361 if (settleSink != null) {COMMENT
LOW…a/top/yukonga/miuix/kmp/nav/gesture/NavSwipeDismiss.kt381 animatedTop.settleTo(COMMENT
Cross-File Repetition3 hits · 15 pts
SeverityFileLineSnippetContext
HIGH…ebilibili/feature/video/ui/section/VideoInfoSection.kt0((https?|ftp|file)://[-a-za-z0-9+&@#/%?=~_|!:,.;]*[-a-za-z0-9+&@#/%=~_|])STRING
HIGH…ilibili/feature/video/ui/components/ReplyComponents.kt0((https?|ftp|file)://[-a-za-z0-9+&@#/%?=~_|!:,.;]*[-a-za-z0-9+&@#/%=~_|])STRING
HIGH…li/feature/dynamic/components/DynamicRichTextPolicy.kt0((https?|ftp|file)://[-a-za-z0-9+&@#/%?=~_|!:,.;]*[-a-za-z0-9+&@#/%=~_|])STRING
Deep Nesting8 hits · 8 pts
SeverityFileLineSnippetContext
LOWartwork/brand-motion/generate.py306CODE
LOWartwork/brand-motion/render-cleaning-frames.py24CODE
LOWartwork/brand-motion/render-cleaning-frames.py54CODE
LOWscripts/augment_skin_catalog_effects.py29CODE
LOWscripts/augment_skin_catalog_effects.py40CODE
LOWscripts/video_card_transition_curve_probe.py68CODE
LOWscripts/video_card_transition_curve_probe.py107CODE
LOWscripts/video_card_transition_report.py115CODE
AI Slop Vocabulary3 hits · 8 pts
SeverityFileLineSnippetContext
MEDIUM…i/feature/video/screen/VideoDetailScreenStateHolder.kt772 // 🔄 [Seamless Playback] Internal BVID state to support seamless switching in portrait modeCOMMENT
MEDIUM…ature/audio/lyrics/halcyon/AppleCoverFlowBackground.kt120 // single-layer blurred cover (issue #621), keeping the 3-layer fluid flow seamless.COMMENT
MEDIUM…ature/audio/lyrics/halcyon/AppleCoverFlowBackground.kt120 // single-layer blurred cover (issue #621), keeping the 3-layer fluid flow seamless.COMMENT
Unused Imports6 hits · 6 pts
SeverityFileLineSnippetContext
LOWartwork/brand-motion/validate.py2CODE
LOWplugins/tools/bilibili_skin_to_bpskin.py9CODE
LOWscripts/augment_skin_catalog_effects.py4CODE
LOWscripts/video_card_transition_curve_probe.py7CODE
LOWscripts/port_halcyon_lyrics.py3CODE
LOWscripts/video_card_transition_report.py6CODE
Cross-Language Confusion1 hit · 5 pts
SeverityFileLineSnippetContext
HIGHscripts/video_card_transition_report.py225 "Missing phase data is null, never a zero-jank measurement."]}CODE
Empty Error Handlers1 hit · 5 pts
SeverityFileLineSnippetContext
HIGHscripts/video_card_transition_report.py154except (KeyError, ValueError):CODE
AI Structural Patterns2 hits · 2 pts
SeverityFileLineSnippetContext
LOWartwork/brand-motion/generate.py41CODE
LOWscripts/video_card_transition_report.py197CODE
Fake / Example Data1 hit · 1 pts
SeverityFileLineSnippetContext
LOW…d/purebilibili/feature/login/LoginAppAuthPolicyTest.kt106 username = "user@example.com",CODE
Excessive Try-Catch Wrapping1 hit · 1 pts
SeverityFileLineSnippetContext
LOWscripts/tv_smoke.py131 except Exception as error:CODE