AI Slop Code Risk Monitor

czy0729/Bangumi

SlopCodeMonitor badge for czy0729/Bangumi Adjusted legacy signal; badge bands: 25 / 50 / 75 (different from dashboard bands).

:electron: An unofficial https://bgm.tv ui first app client for Android and iOS, built with React Native. 一个无广告、以爱好为驱动、不以盈利为目的、专门做 ACG 的类似豆瓣的追番记录,bgm.tv 第三方客户端。为移动端重新设计,内置大量加强的网页端难以实现的功能,且提供了相当的自定义选项。 目前已适配 iOS / Android。

0.4 Low pattern signal View on GitHub

Open-Source Code Quality, Security and Technical Debt Review

This report summarizes scanner evidence for czy0729/Bangumi, a TypeScript project with 6,208 GitHub stars. SynthScan examined 421,902 lines of code across 7479 source files, recording 99 pattern matches distributed across 10 syntactic categories. The legacy adjusted pattern signal is 0.4 (Low 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.

0.4
Adjusted Signal
0.4
Raw Pattern Score
100%
Time Factor
2026-10-31
Last Push
6.2K
Stars
TypeScript
Language
421.9K
Lines of Code
7.5K
Files
99
Pattern Hits
2026-10-31
Scan Date
0.00
HC Hit Rate

Risk Review · Payload v1

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

Payload schema: 1.0.0 · Engine: 2.0.0 · Scoring: heuristic-density-v1 · Scan date: 2026-10-31.

Cognitive Ownership Risk 0.8/100 · LOW

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

Hallucinated Dependency & Supply Chain Risk 0.2/100 · LOW

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

Agent Over-Engineering Ratio 1.2/100 · LOW

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

PR Review Velocity Impact 1.8/100 · LOW

Which changes need focused human review? 99 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 1HIGH 3MEDIUM 17LOW 78

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 99 distinct pattern matches across 10 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.

Decorative Section Separators17 hits · 51 pts
SeverityFileLineSnippetContext
MEDIUMweb/fontmin/subset.sh24# ── Step 1: 生成常用字表 ──────────────────────────────────────────────COMMENT
MEDIUMweb/fontmin/subset.sh60# ── Step 2: 使用 pyftsubset 裁剪字体 ──────────────────────────────────COMMENT
MEDIUMweb/fontmin/subset.sh89# ── Step 3: 汇总 ─────────────────────────────────────────────────────COMMENT
MEDIUMandroid/rust/build-android.sh4# ============================================================COMMENT
MEDIUMandroid/rust/build-android.sh10# ============================================================COMMENT
MEDIUMandroid/rust/build-android.sh28# ============================================================COMMENT
MEDIUMandroid/rust/build-android.sh37# ============================================================COMMENT
MEDIUMandroid/rust/build-android.sh65# ============================================================COMMENT
MEDIUMandroid/rust/build-android.sh67# ============================================================COMMENT
MEDIUMandroid/rust/build-android.sh92# ============================================================COMMENT
MEDIUMandroid/rust/build-android.sh94# ============================================================COMMENT
MEDIUMandroid/rust/build-android.sh117# ============================================================COMMENT
MEDIUMandroid/rust/build-android.sh123# ============================================================COMMENT
MEDIUMandroid/rust/build-android.sh217# ============================================================COMMENT
MEDIUMandroid/rust/build-android.sh219# ============================================================COMMENT
MEDIUMandroid/rust/build-android.sh240# ============================================================COMMENT
MEDIUMandroid/rust/build-android.sh242# ============================================================COMMENT
Hyper-Verbose Identifiers39 hits · 39 pts
SeverityFileLineSnippetContext
LOWsrc/stores/rakuen/common.ts561export function convertGroupTopicsToUserTopics(CODE
LOWsrc/stores/collection/common.ts36export function cheerioUserCollectionsTags(html: string) {CODE
LOWsrc/stores/subject/common.ts185export function cheerioSubjectEpsFromHTML(html: string) {CODE
LOWsrc/utils/calendar/index.ts22export async function calendarEventsRequestPermissions(): Promise<CODE
LOWsrc/utils/calendar/index.ts83export async function calendarEventsSaveGameReleaseDate(CODE
LOWsrc/utils/calendar/index.ts105export function resetCalendarCacheForTest() {CODE
LOWsrc/utils/kv/index.ts793export function searchEncoreSubjectTopics(options?: SearchOptions) {CODE
LOWsrc/utils/app/ages.ts127function getCurrentYearWithDecimal(): number {CODE
LOWsrc/utils/hooks/useCachedResources.ts93 async function loadResourcesAndDataAsync() {CODE
LOWsrc/utils/hooks/useAnimatedSensor.android.ts46function adjustRotationToInterfaceOrientation(data: ValueRotation) {CODE
LOWsrc/utils/hooks/useAnimatedSensor.android.ts71function adjustVectorToInterfaceOrientation(data: Value3D) {CODE
LOWsrc/utils/thirdParty/axios.js2(function webpackUniversalModuleDefinition(root, factory) {CODE
LOWsrc/utils/thirdParty/axios.js540 this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {CODE
LOWsrc/utils/thirdParty/axios.js736 function throwIfCancellationRequested(config) {CODE
LOWsrc/utils/thirdParty/ja.ts296function removeFirstBracketContent(input: string) {CODE
LOWsrc/utils/thirdParty/open-cc/converter.ts33function getIdeographicDescriptionArity(cp: number): number {CODE
LOWsrc/utils/thirdParty/open-cc/converter.ts40function getIdeographicDescriptionSequenceEnd(s: string, i: number): number {CODE
LOWsrc/utils/thirdParty/pinyin/index.ts8function syncGetPinYinFirstCharacter(): typeof import('./dict')['getPinYinFirstCharacter'] {CODE
LOWsrc/screens/user/smb/utils/directory.ts168function getSecondLastPathComponent(input: string) {CODE
LOW…nent/tinygrail/avatar-alert-tinygrail-assets/index.tsx20function AvatarAlertTinygrailAssets({ filter }: WithFilterProps) {CODE
LOW…/_/base/name/vertical-align-with-remove-spec/index.tsx15function VerticalAlignWithRemoveSpec({CODE
LOWsrc/screens/_/base/vertical-align/hooks.ts20export function useVerticalAlignDetection({ text, onHit }: UseVerticalAlignDetectionParams) {CODE
LOWsrc/screens/tinygrail/transaction/hooks.ts14export function useTinygrailTransactionPage(props: NavigationProps) {CODE
LOWsrc/screens/tinygrail/advance-auction/hooks.ts14export function useTinygrailAdvanceAuctionPage(props: NavigationProps) {CODE
LOWsrc/screens/tinygrail/advance-bid/hooks.ts14export function useTinygrailAdvanceBidPage(props: NavigationProps) {CODE
LOWsrc/screens/tinygrail/sacrifice/hooks.ts15export function useTinygrailSacrificePage(props: NavigationProps) {CODE
LOWsrc/screens/tinygrail/wiki/utils.ts11export function startsWithNumberDotNumber(str: string) {CODE
LOWsrc/screens/tinygrail/advance-state/hooks.ts14export function useTinygrailAdvanceStatePage(props: NavigationProps) {CODE
LOWsrc/screens/tinygrail/advance-ask/hooks.ts15export function useTinygrailAdvanceAskPage(props: NavigationProps) {CODE
LOWsrc/screens/tinygrail/logs/component/item/utils.ts55export function insertNewlineBeforeSecondBracket(text: string) {CODE
LOWsrc/screens/tinygrail/advance-sacrifice/hooks.tsx14export function useTinygrailAdvanceSacrificePage(props: NavigationProps) {CODE
LOWsrc/screens/tinygrail/lottery-rank/hooks.ts15export function useTinygrailLotteryRankPage(props: NavigationProps) {CODE
LOWsrc/screens/tinygrail/chara-assets/hooks.ts15export function useTinygrailCharaAssetsPage(props: NavigationProps) {CODE
LOWsrc/screens/tinygrail/clipboard/hooks.ts14export function useTinygrailClipboardPage(props: NavigationProps) {CODE
LOWsrc/components/katakana/provider/layout.ts28export function getLineHeightCompensation(line: TextLayoutLine, fullLineHeight: number): number {CODE
LOWsrc/components/squircle/native.ts28export function isNativeSquircleAvailable(): boolean {CODE
LOWsrc/components/hold-menu/index.tsx17function HoldMenuProviderComponent({ children }: React.PropsWithChildren<{}>) {CODE
LOWsrc/components/text/utils.ts19export function setComponentsDefaultProps() {CODE
LOWsrc/components/@/react-native-render-html/src/utils.ts16export function optimizeComputeTextStyles(styles: TextStyle) {CODE
Overly Generic Function Names16 hits · 16 pts
SeverityFileLineSnippetContext
LOWsrc/stores/system/utils.ts12export async function getData() {CODE
LOWsrc/utils/subject/onair.ts14function getData() {CODE
LOWsrc/utils/subject/music/index.ts39function getData() {CODE
LOWsrc/utils/subject/nsfw/index.ts33function getData() {CODE
LOWsrc/utils/subject/real/index.ts39function getData() {CODE
LOWsrc/utils/subject/hentai/index.ts44function getData() {CODE
LOWsrc/utils/subject/game/index.ts92function getData(): Item[] {CODE
LOWsrc/utils/subject/manga/index.ts96function getData() {CODE
LOWsrc/utils/subject/adv/index.ts63function getData(): Item[] {CODE
LOWsrc/utils/subject/anime/index.ts42function getData() {CODE
LOWsrc/utils/subject/album/index.ts72function getData() {CODE
LOWsrc/utils/subject/wenku/index.ts92function getData() {CODE
LOWsrc/screens/discovery/vib/utils.ts64export async function getData(): Promise<Data> {CODE
LOW…screens/discovery/calendar/component/tool-bar/utils.ts43export function getData(data: Calendar['list']): Data {CODE
LOWsrc/screens/discovery/bi-weekly/utils.ts15export async function getData(): Promise<Data> {CODE
LOWsrc/screens/user/zone/component/menu/menu/ds.ts131function getData({ $ }: Ctx) {CODE
Empty Error Handlers3 hits · 15 pts
SeverityFileLineSnippetContext
HIGHweb/fontmin/scan-chars.py31except Exception:CODE
HIGHweb/fontmin/gen-common-chars.py139except UnicodeDecodeError:CODE
HIGHweb/fontmin/gen-common-chars.py158except UnicodeDecodeError:CODE
Over-Commented Block13 hits · 13 pts
SeverityFileLineSnippetContext
LOWweb/fontmin/subset.sh1#!/bin/bashCOMMENT
LOW.github/workflows/build-ipa.yml1name: Build unsigned IPACOMMENT
LOWsrc/config/routes.ts21 // id: 68522148COMMENT
LOWsrc/constants/model/rank.ts321 // label: 'PC98',COMMENT
LOWsrc/constants/data/menu.ts201 }COMMENT
LOWsrc/stores/tinygrail/fetch.ts1861COMMENT
LOWsrc/stores/tinygrail/fetch.ts1881 // ...LIST_EMPTYCOMMENT
LOWsrc/stores/tinygrail/fetch.ts1901 // return nullCOMMENT
LOWsrc/stores/tinygrail/fetch.ts1921 // } catch (error) {COMMENT
LOWsrc/screens/tinygrail/items/store/action.ts141 // price: item.currentPrice,COMMENT
LOWsrc/styles/index.scss1/*COMMENT
LOWsrc/components/@/react-native-render-html/src/HTML.jsx41COMMENT
LOWsrc/components/@/react-native-render-html/src/HTML.jsx61 // containerStyle: ViewPropTypes ? ViewPropTypes.style : View.propTypes.style,COMMENT
Hallucination Indicators1 hit · 10 pts
SeverityFileLineSnippetContext
CRITICAL…om/czy0729/bangumi/doh/BangumiOkHttpClientFactory.java154 .cookieJar(new com.facebook.react.modules.network.ReactCookieJarContainer())CODE
Fake / Example Data6 hits · 6 pts
SeverityFileLineSnippetContext
LOWsrc/screens/_/base/mesume-chat/hooks.ts21}: Pick<Props, 'value' | 'placeholder' | 'onRefresh'>) {CODE
LOWsrc/components/fixed-textarea/textarea/types.ts12 'simple' | 'marks' | 'source' | 'placeholder' | 'onChange' | 'onSubmit'CODE
LOWsrc/components/image/ds.ts57 'placeholder',CODE
LOWsrc/components/image/skeleton/types.ts11export type Props = Pick<ParentProps, 'textOnly' | 'placeholder'> & {CODE
LOWsrc/components/avatar/types.ts41 | 'placeholder'CODE
LOWsrc/components/avatar/avatar-image/types.ts17 | 'placeholder'CODE
Unused Imports2 hits · 2 pts
SeverityFileLineSnippetContext
LOWweb/fontmin/scan-chars.py8CODE
LOWweb/fontmin/gen-common-chars.py16CODE
Excessive Try-Catch Wrapping1 hit · 1 pts
SeverityFileLineSnippetContext
LOWweb/fontmin/scan-chars.py31 except Exception:CODE
Deep Nesting1 hit · 1 pts
SeverityFileLineSnippetContext
LOWweb/fontmin/scan-chars.py18CODE