Repository Analysis

huangxd-/danmu_api

一个人人都能部署的基于 js 的弹幕 API 服务器,支持爱优腾芒哔咪人韩巴狐乐西埋帆红弹幕直接获取,兼容弹弹play的搜索、详情查询和弹幕获取接口规范,并提供日志记录,支持vercel/netlify/edgeone/cloudflare/docker/hf等部署方式,不用提前下载弹幕,没有nas或小鸡也能一键部署。

5.3 Low AI signal View on GitHub

Analysis Overview

This report presents the forensic synthetic code analysis of huangxd-/danmu_api, a JavaScript project with 2,920 GitHub stars. SynthScan v2.0 examined 53,067 lines of code across 100 source files, recording 230 pattern matches distributed across 6 syntactic categories. The overall adjusted score of 5.3 places this repository in the Low AI signal band.

The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).

5.3
Adjusted Score
5.3
Raw Score
100%
Time Factor
2026-08-09
Last Push
2.9K
Stars
JavaScript
Language
53.1K
Lines of Code
100
Files
230
Pattern Hits
2026-08-09
Scan Date
0.00
HC Hit Rate

What These Metrics Mean

Adjusted Score
Primary synthetic code indicator. Raw score normalised per 1,000 lines of code and multiplied by the temporal discount factor. This is the definitive comparative metric — use it to rank repositories by AI authorship density.
Raw Score
The unmodified sum of all severity-weighted, context-multiplied pattern match scores before temporal discounting. Reflects the absolute signal strength independent of when the repository was last active.
Time Factor
The temporal discount multiplier (0–100%) applied to the raw score. Repositories last updated before ChatGPT's launch (Nov 2022) receive a 5% factor. Full signal is only assigned to repositories active in the post-adoption era (Jan 2024+).
Pattern Hits
Total count of individual pattern matches across all files and categories. A high hit count with a low score may indicate a very large codebase with isolated AI snippets; a low count with a high score indicates dense, concentrated AI signatures.
HC Hit Rate
High+Critical pattern hits per file, averaged across the repository. This orthogonal signal catches repositories where a few files are densely packed with high-severity AI tells — a strong indicator even when the normalised score appears moderate due to codebase size.
Lines of Code / Files
Total lines and files analysed. The scanner examines 94 file extensions. These denominators are used to normalise the score, enabling fair comparison between repositories of vastly different sizes.

Score History

Longitudinal tracking requires multiple scan runs. Once this repository is re-scanned after new commits land, this chart will visualise how the synthetic code signal evolves over time — enabling you to detect whether AI authorship is growing, stabilising, or being actively corrected by human engineers.

No multi-scan history yet — run the scanner again to build trend data.

Severity Breakdown

Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.

CRITICAL 0HIGH 0MEDIUM 50LOW 180

Directory Score Breakdown

This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.

Pattern Findings

The scanner identified 230 distinct pattern matches across 6 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. 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 diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.

Decorative Section Separators50 hits · 130 pts
SeverityFileLineSnippetContext
MEDIUMdanmu_api/utils/merge-util.js53 // ── 标题与结构 ──────────────────────────────────────────COMMENT
MEDIUMdanmu_api/utils/merge-util.js58 // ── 日期 ─────────────────────────────────────────────────COMMENT
MEDIUMdanmu_api/utils/merge-util.js61 // ── 集数对齐 (Episode Alignment) ─────────────────────────COMMENT
MEDIUMdanmu_api/utils/merge-util.js1368 // ── 类型判断 ──────────────────────────────────────────────COMMENT
MEDIUMdanmu_api/utils/merge-util.js1374 // ── 语言对齐 ──────────────────────────────────────────────COMMENT
MEDIUMdanmu_api/utils/merge-util.js1380 // ── 季度编号 & 特殊类型 ───────────────────────────────────COMMENT
MEDIUMdanmu_api/utils/merge-util.js1389 // ── 季度偏移精确匹配奖励 ──────────────────────────────────COMMENT
MEDIUMdanmu_api/utils/merge-util.js1397 // ── 文本相似度(核心评分) ────────────────────────────────COMMENT
MEDIUMdanmu_api/utils/merge-util.js2061 // ── 评分修正 ─────────────────────────────────────────────────────COMMENT
MEDIUMdanmu_api/utils/merge-util.js2069 // ── Probe 覆盖逻辑 ──────────────────────────────────────────────COMMENT
MEDIUMdanmu_api/utils/merge-util.js2078 // ── 阈值过滤 ─────────────────────────────────────────────────────COMMENT
MEDIUMdanmu_api/utils/merge-util.js1414 // ── 数字严格相等奖励 ──────────────────────────────────────COMMENT
MEDIUMdanmu_api/utils/merge-util.js1418 // ── 断层惩罚(防异构/占位区污染) ─────────────────────────COMMENT
MEDIUMdanmu_api/utils/merge-util.js1433 // ── 数字差分布统计(支持规律性检测) ─────────────────────COMMENT
MEDIUMdanmu_api/utils/merge-util.js1948 // ── 之字结构强阻断 ───────────────────────────────────────────────COMMENT
MEDIUMdanmu_api/utils/merge-util.js1959 // ── 媒体类型冲突检测 ─────────────────────────────────────────────COMMENT
MEDIUMdanmu_api/utils/merge-util.js1970 // ── 上下文续作阻断 ───────────────────────────────────────────────COMMENT
MEDIUMdanmu_api/utils/merge-util.js1999 // ── 剧场版标题阻断 ───────────────────────────────────────────────COMMENT
MEDIUMdanmu_api/utils/merge-util.js2016 // ── 日期匹配校验 ─────────────────────────────────────────────────COMMENT
MEDIUMdanmu_api/utils/merge-util.js2033 // ── 季度标记冲突校验 ─────────────────────────────────────────────COMMENT
MEDIUMdanmu_api/utils/merge-util.js2043 // ── 主副别名交叉比对 ─────────────────────────────────────────────COMMENT
MEDIUMdanmu_api/utils/merge-util.js2093 // ── Tier 筛选:梯度过滤,保留合理竞争者 ─────────────────────────────COMMENT
MEDIUMdanmu_api/utils/merge-util.js2365 // ── 隔离检索 ────────────────────────────────────────────────────────────COMMENT
MEDIUMdanmu_api/utils/merge-util.js2418 // ── 跨源合集时序接管 ─────────────────────────────────────────────────────COMMENT
MEDIUMdanmu_api/utils/merge-util.js2458 // ── 小数集数预处理 ───────────────────────────────────────────────COMMENT
MEDIUMdanmu_api/utils/merge-util.js2476 // ── 合集切片 ─────────────────────────────────────────────────────COMMENT
MEDIUMdanmu_api/utils/merge-util.js2556 // ── 智能对齐策略(特权映射表介入) ─────────────────────────────COMMENT
MEDIUMdanmu_api/utils/merge-util.js2620 // ── 执行 URL 合并 ────────────────────────────────────────COMMENT
MEDIUMdanmu_api/utils/merge-util.js2629 // ── 合并标题标签 ─────────────────────────────────────────COMMENT
MEDIUMdanmu_api/utils/merge-util.js2654 // ── 对齐偏移计算 ─────────────────────────────────────────────────COMMENT
MEDIUMdanmu_api/utils/merge-util.js2659 // ── 智能对齐策略(共识差计算) ───────────────────────────────────COMMENT
MEDIUMdanmu_api/utils/merge-util.js2781 // ── 执行 URL 合并 ────────────────────────────────────────COMMENT
MEDIUMdanmu_api/utils/merge-util.js2790 // ── 合并标题标签 ─────────────────────────────────────────COMMENT
MEDIUMdanmu_api/utils/merge-util.js2824 // ── 覆盖率校验 ────────────────────────────────────────────────COMMENT
MEDIUMdanmu_api/utils/merge-util.js2841 // ── 别名合并 ─────────────────────────────────────────────COMMENT
MEDIUMdanmu_api/utils/merge-util.js2862 // ── 记录合并层级 ──────────────────────────────────────COMMENT
MEDIUMdanmu_api/utils/merge-util.js2879 // ── 合集进度双向写入 ──────────────────────────────────────COMMENT
MEDIUMdanmu_api/utils/merge-util.js2932 // ── 番外沉底排序 ──────────────────────────────────────────COMMENT
MEDIUMdanmu_api/utils/merge-util.js2956 // ── 重复签名检测 ──────────────────────────────────────────────────────COMMENT
MEDIUMdanmu_api/utils/merge-util.js3059 // ── 前置全局计算 ────────────────────────────────────────────────────────COMMENT
MEDIUMdanmu_api/utils/merge-util.js3126 // ── Phase 1: CN Primary Isolation ──────────────────────────────────COMMENT
MEDIUMdanmu_api/utils/merge-util.js3163 // ── Phase 1.5: Secondary CN Self-Organization ───────────────────────COMMENT
MEDIUMdanmu_api/utils/merge-util.js3194 // ── Phase 2: Standard Fallback ──────────────────────────────────────COMMENT
MEDIUMdanmu_api/utils/merge-util.js3246 // ── 最终整理 ─────────────────────────────────────────────────────────────COMMENT
MEDIUMdanmu_api/sources/hanjutv.js128 // ── 数据规范化 ──────────────────────────────────────────────COMMENT
MEDIUMdanmu_api/sources/hanjutv.js203 // ── 搜索候选合并 ─────────────────────────────────────────────COMMENT
MEDIUMdanmu_api/sources/hanjutv.js474 // ── 搜索接口 ─────────────────────────────────────────────────COMMENT
MEDIUMdanmu_api/sources/hanjutv.js590 // ── 详情 & 剧集 ──────────────────────────────────────────────COMMENT
MEDIUMdanmu_api/sources/hanjutv.js839 // ── 番剧处理 ─────────────────────────────────────────────────COMMENT
MEDIUMdanmu_api/sources/hanjutv.js906 // ── 弹幕 ─────────────────────────────────────────────────────COMMENT
Hyper-Verbose Identifiers89 hits · 90 pts
SeverityFileLineSnippetContext
LOWdanmu_api/server.js56function resolvePublicRequestProtocol(req) {CODE
LOWdanmu_api/server.js524async function initializeFavoriteScheduler(mainPort) {CODE
LOWdanmu_api/ui/js/apitest.js126function updateCommentDurationFieldVisibility() {CODE
LOWdanmu_api/ui/js/apitest.js144function bindCommentDurationFieldVisibility() {CODE
LOWdanmu_api/ui/js/apitest.js518function estimateVideoDurationFromComments(comments) {CODE
LOWdanmu_api/ui/js/apitest.js672function showDanmuCallTraceFailure(trace, title, message, source) {CODE
LOWdanmu_api/ui/js/apitest.js679function getDanmuCallTraceTotalSeconds(trace, fallbackSeconds) {CODE
LOWdanmu_api/ui/js/apitest.js698function isCurrentDanmuFlowRequest(requestId) {CODE
LOWdanmu_api/ui/js/apitest.js702function startManualBangumiRequest() {CODE
LOWdanmu_api/ui/js/apitest.js710function isCurrentManualBangumiRequest(requestId) {CODE
LOWdanmu_api/ui/js/apitest.js714function invalidateActiveDanmuRequest() {CODE
LOWdanmu_api/ui/js/apitest.js718function setDanmuFlowButtonLoading(btn, requestId, loading) {CODE
LOWdanmu_api/ui/js/apitest.js734function resetManualFavoriteButton() {CODE
LOWdanmu_api/ui/js/apitest.js748function renderManualFavoriteButton() {CODE
LOWdanmu_api/ui/js/apitest.js951function toggleFavoriteScheduleWeekday() {CODE
LOWdanmu_api/ui/js/apitest.js957function openFavoriteScheduleModal(keyword) {CODE
LOWdanmu_api/ui/js/apitest.js974function closeFavoriteScheduleModal() {CODE
LOWdanmu_api/ui/js/apitest.js1661function updateDanmuHeatmapTooltip(event, interactive, bars, tooltip, indicator, segs, segLen, maxTime) {CODE
LOWdanmu_api/ui/js/preview.js225function renderPreviewSearchResults(query) {CODE
LOWdanmu_api/ui/js/requestrecords.js73function initRequestRecordsInterface() {CODE
LOWdanmu_api/ui/js/pushdanmu.js139function displayEpisodeListForPush(animeTitle, episodes, pushUrl) {CODE
LOWdanmu_api/ui/js/pushdanmu.js181function jumpToEpisodeForPushDanmu() {CODE
LOWdanmu_api/ui/js/systemsettings.js225function updateLocalImportedConfig(key, value) {CODE
LOWdanmu_api/ui/js/systemsettings.js600async function checkDeployPlatformConfig() {CODE
LOWdanmu_api/ui/js/systemsettings.js2043function handleDelegatedTouchStart(e) {CODE
LOWdanmu_api/ui/js/systemsettings.js2112function handleSelectedTagsContainerDragOver(e) {CODE
LOWdanmu_api/ui/js/systemsettings.js2118function handleSelectedTagsContainerDrop(e) {CODE
LOWdanmu_api/ui/js/systemsettings.js2279function cleanupSelectedTagsTouchDrag() {CODE
LOWdanmu_api/ui/js/systemsettings.js2832async function autoCheckBilibiliCookieStatus() {CODE
LOWdanmu_api/ui/js/systemsettings.js2892function showBilibiliCookieSaveHint(text) {CODE
LOWdanmu_api/apis/dandan-api.js93function shouldIncludeVideoDuration(queryFormat, includeDuration = false) {CODE
LOWdanmu_api/apis/dandan-api.js104function extractDurationFromSegments(segmentResult) {CODE
LOWdanmu_api/apis/dandan-api.js1241function findCrossSeasonEpisodeMap(searchData, title, year, season, episode, platform, detailStore) {CODE
LOWdanmu_api/apis/dandan-api.js1693export async function extractTitleSeasonEpisode(cleanFileName) {CODE
LOWdanmu_api/apis/dandan-api.js1906function findSeasonPreferenceTitle(titles, season) {CODE
LOWdanmu_api/apis/dandan-api.js1914function findLegacySeasonPreferenceTitle(titles, season) {CODE
LOWdanmu_api/apis/favorite-api.js59function removeRelatedSearchCaches(keyword) {CODE
LOWdanmu_api/apis/clients/fongmi-api.js85function normalizeFongmiTitleByRegex(name) {CODE
LOWdanmu_api/apis/clients/fongmi-api.js99function normalizeFongmiEpisodeByRegex(episode) {CODE
LOWdanmu_api/apis/clients/fongmi-api.js114function extractFongmiEpisodeNumber(episode) {CODE
LOWdanmu_api/apis/clients/fongmi-api.js166function buildFongmiSearchKeywords(name) {CODE
LOWdanmu_api/utils/cache-util.js80function collectUniqueAnimeDetails(detailStore) {CODE
LOWdanmu_api/utils/cache-util.js88function getActiveSearchCacheEntries() {CODE
LOWdanmu_api/utils/cache-util.js211export function resolveAnimeByIdFromDetailStore(id, detailStore = null, source = null) {CODE
LOWdanmu_api/utils/cache-util.js216export function resolveEpisodeContextById(id, detailStore = null) {CODE
LOWdanmu_api/utils/cache-util.js725export function hasSeasonSpecificPreference(title, season) {CODE
LOWdanmu_api/utils/cache-util.js733export function hasLegacySeasonPreference(title, season) {CODE
LOWdanmu_api/utils/merge-util.js753function checkTitleSubtitleConflict(titleA, titleB, isDateValid = true) {CODE
LOWdanmu_api/utils/merge-util.js2139function detectCollectionCandidates(curAnimes) {CODE
LOWdanmu_api/utils/aiyifan-util.js41function extractAssignedObjectLiteral(html, variableName) {CODE
LOWdanmu_api/utils/aiyifan-util.js118export function extractPConfigFromInjectJson(injectJson) {CODE
LOWdanmu_api/utils/aiyifan-util.js274function isSignedRequestSuccessful(payload) {CODE
LOWdanmu_api/utils/cookie-util.js278function extractLoginCookieFromResponse(response) {CODE
LOWdanmu_api/utils/common-util.js168export function createDynamicPlatformOrder(preferredPlatform) {CODE
LOWdanmu_api/utils/common-util.js397export function extractSeasonNumberFromAnimeTitle(animeTitle) {CODE
LOWdanmu_api/utils/common-util.js458export function extractEpisodeNumberFromTitle(episodeTitle) {CODE
LOWdanmu_api/utils/redis-util.js198export async function getFavoriteCachesFromRedis() {CODE
LOWdanmu_api/utils/codec-util.js525function aesDecryptBlockForKeySize(input, w) {CODE
LOWdanmu_api/utils/hanjutv-util.js3function normalizePositiveTimestamp(value, fallbackValue = Date.now()) {CODE
LOWdanmu_api/utils/hanjutv-util.js188export async function buildHanjutvSearchHeaders(sessionInitTs = Date.now(), uid = createHanjutvUid()) {CODE
29 more matches not shown…
Over-Commented Block88 hits · 54 pts
SeverityFileLineSnippetContext
LOWdanmu_api/worker.test.js941 // const originalTencentGetComments = TencentSource.prototype.getComments;COMMENT
LOWdanmu_api/worker.test.js961 // ];COMMENT
LOWdanmu_api/worker.test.js981 // } finally {COMMENT
LOWdanmu_api/worker.test.js1001 // return {COMMENT
LOWdanmu_api/worker.test.js1021 // };COMMENT
LOWdanmu_api/worker.test.js1041 // };COMMENT
LOWdanmu_api/worker.test.js1061 // }COMMENT
LOWdanmu_api/worker.test.js1081 // { type: 'bilibili1', segment_start: 1080, segment_end: 1440, url: 'mock-bili-4' }COMMENT
LOWdanmu_api/worker.test.js1101 // BilibiliSource.prototype.getComments = originalBilibiliGetComments;COMMENT
LOWdanmu_api/worker.test.js1121 // type: 'tvseries',COMMENT
LOWdanmu_api/worker.test.js1141 // type: cachedAnime.type,COMMENT
LOWdanmu_api/worker.test.js1161 // assert.equal(body.bangumi.animeTitle, cachedAnime.animeTitle);COMMENT
LOWdanmu_api/worker.test.js1181 // bangumiId: '500002',COMMENT
LOWdanmu_api/worker.test.js1201 // animeTitle: cachedAnime.animeTitle,COMMENT
LOWdanmu_api/worker.test.js1221 // assert.equal(url, cachedAnime.links[0].url);COMMENT
LOWdanmu_api/worker.test.js1241 // TencentSource.prototype.getComments = originalTencentGetComments;COMMENT
LOWdanmu_api/worker.test.js1261 // { id: 32001, url: "https://v.qq.com/x/cover/cache-old/ep1.html", title: "【qq】 旧快照 第1集" }COMMENT
LOWdanmu_api/worker.test.js1281 // results: [createSearchResult(latestAnime)],COMMENT
LOWdanmu_api/worker.test.js1301 // const renrenAnime = {COMMENT
LOWdanmu_api/worker.test.js1321 // animeTitle: "缓存冲突番剧B",COMMENT
LOWdanmu_api/worker.test.js1341COMMENT
LOWdanmu_api/worker.test.js1361 // });COMMENT
LOWdanmu_api/worker.test.js1381 // };COMMENT
LOWdanmu_api/worker.test.js1401COMMENT
LOWdanmu_api/worker.test.js1421 // const correctLinks = Array.from({ length: 50 }, (_, index) => ({COMMENT
LOWdanmu_api/worker.test.js1441COMMENT
LOWdanmu_api/worker.test.js1461 // async json() {COMMENT
LOWdanmu_api/worker.test.js1481COMMENT
LOWdanmu_api/worker.test.js1501 // rating: 0,COMMENT
LOWdanmu_api/worker.test.js1521 // { url: "https://www.iqiyi.com/v_collision_extra.html", title: "【qiyi】 花絮" }COMMENT
LOWdanmu_api/worker.test.js1541 // try {COMMENT
LOWdanmu_api/worker.test.js1561 // }COMMENT
LOWdanmu_api/worker.test.js1581COMMENT
LOWdanmu_api/worker.test.js1601 // assert(res.length > 2, `Expected res.length > 2, but got ${res.length}`);COMMENT
LOWdanmu_api/worker.test.js1621 // });COMMENT
LOWdanmu_api/worker.test.js1641 // "segment_end": 60,COMMENT
LOWdanmu_api/worker.test.js1661 // "type": "bilibili1",COMMENT
LOWdanmu_api/worker.test.js1681 // await t.test('GET youku segment danmu', async () => {COMMENT
LOWdanmu_api/worker.test.js1701 // const res = await miguSource.getComments("https://www.miguvideo.com/p/detail/725117610", "migu", true);COMMENT
LOWdanmu_api/worker.test.js1721 // });COMMENT
LOWdanmu_api/worker.test.js1741 // const res = await leshiSource.getComments("https://www.le.com/ptv/vplay/1578861.html");COMMENT
LOWdanmu_api/worker.test.js1761COMMENT
LOWdanmu_api/worker.test.js1781 // assert(res.length >= 0, `Expected res.length >= 0, but got ${res.length}`);COMMENT
LOWdanmu_api/worker.test.js1801 // url: 'https://www.mddcloud.com.cn/video/ff8080817410d5a5017490f5f4d311de.html?num=2&uuid=ff8080817410d5a5017490COMMENT
LOWdanmu_api/worker.test.js1821 // type: 'aiyifan',COMMENT
LOWdanmu_api/worker.test.js1841 // cursor: `cursor-${startMs}`,COMMENT
LOWdanmu_api/worker.test.js1861 // });COMMENT
LOWdanmu_api/worker.test.js1881 // });COMMENT
LOWdanmu_api/worker.test.js1901 // source.getEpisodes = async (seriesId) => {COMMENT
LOWdanmu_api/worker.test.js1921COMMENT
LOWdanmu_api/worker.test.js1941 // const requestedUrls = [];COMMENT
LOWdanmu_api/worker.test.js1961 // data_list: [{COMMENT
LOWdanmu_api/worker.test.js1981 // assert(requestedUrls.some((url) => url.includes(`/novel/commentapi/comment/list/${vid}/v1/`)));COMMENT
LOWdanmu_api/worker.test.js2001 // await new Promise(resolve => setImmediate(resolve));COMMENT
LOWdanmu_api/worker.test.js2021 // resolvers.set(anime.sid, resolve);COMMENT
LOWdanmu_api/worker.test.js2041 // } finally {COMMENT
LOWdanmu_api/worker.test.js2061 // { sid: 't2', name: '模范出租车2' },COMMENT
LOWdanmu_api/worker.test.js2081 // ];COMMENT
LOWdanmu_api/worker.test.js2101 // ]), [['s-upcoming', 't-upcoming']]);COMMENT
LOWdanmu_api/worker.test.js2121 // assert.equal(source.getSearchPairYear({ publishTime: 888768000000 }), 1998);COMMENT
28 more matches not shown…
Verbosity Indicators1 hit · 2 pts
SeverityFileLineSnippetContext
LOWdanmu_api/sources/aiyifan.js252 // Step 1: 搜索,拿到剧目列表COMMENT
Structural Annotation Overuse1 hit · 2 pts
SeverityFileLineSnippetContext
LOWdanmu_api/sources/aiyifan.js252 // Step 1: 搜索,拿到剧目列表COMMENT
Overly Generic Function Names1 hit · 1 pts
SeverityFileLineSnippetContext
LOWdanmu_api/worker.js26async function handleRequest(req, env, deployPlatform, clientIp, ctx) {CODE