《明日方舟》小助手,全日常一键长草!| A one-click tool for the daily tasks of Arknights, supporting all clients.
This report summarizes scanner evidence for MaaAssistantArknights/MaaAssistantArknights, a C++ project with 24,135 GitHub stars. SynthScan examined 3,767,585 lines of code across 6529 source files, recording 1074 pattern matches distributed across 14 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.
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.
Can maintainers explain intent, assumptions, and trade-offs? 924 finding(s).
Are imports declared and package/API names verified? 58 finding(s).
Are wrappers, guards, and repeated structures necessary? 129 finding(s).
Which changes need focused human review? 1074 finding(s).
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.
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.
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.
The scanner identified 1074 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.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/OverseasClients/FindMissingJsonTranslate.py | 101 | def main(): | COMMENT |
| LOW | tools/OverseasClients/FindMissingTemplates.py | 1 | # WHAT DOES THIS TOOL DO? | COMMENT |
| LOW | tools/OverseasClients/SortJsonByZHServerOrder.py | 1 | # WHAT DOES THIS TOOL DO? | COMMENT |
| LOW | tools/ResourceUpdater/main.cpp | 1 | #include <algorithm> | COMMENT |
| LOW | tools/ResourceUpdater/main.cpp | 1721 | if (name == "샤미르") { | COMMENT |
| LOW | include/AsstPort.h | 1 | #pragma once | COMMENT |
| LOW | include/AsstPort.h | 21 | #define ASST_DLL_IMPORT __attribute__((visibility("default"))) | COMMENT |
| LOW | include/AsstCallerExtra.h | 21 | #ifdef __cplusplus | COMMENT |
| LOW | include/MaaCore.h | 1 | #pragma once | COMMENT |
| LOW | docs/ja-jp/protocol/base-scheduling-schema.md | 161 | // 名前の要件は operators と同じ(中国大陸サーバー以外でも簡体字中国語名を | COMMENT |
| LOW | docs/ja-jp/protocol/task-schema.md | 21 | { | COMMENT |
| LOW | docs/ja-jp/protocol/task-schema.md | 41 | COMMENT | |
| LOW | docs/ja-jp/protocol/task-schema.md | 81 | "rectMove": [0, 0, 0, 0], // オプション、認識後のターゲット移動、このオプションは推奨されません。 1280 * 720 を基準とした自動スケーリング | COMMENT |
| LOW | docs/ja-jp/protocol/copilot-schema.md | 61 | ] | COMMENT |
| LOW | docs/ja-jp/protocol/copilot-schema.md | 81 | // "SetUnitLocation" は戦場ユニットのマス座標を設定します:"name" と "location" は両方必須で、どちらかが欠けている場合や値が不正 | COMMENT |
| LOW | docs/ja-jp/protocol/copilot-schema.md | 101 | COMMENT | |
| LOW | docs/ja-jp/manual/cli/config.md | 441 | # リソースのホットアップデートのリモートリポジトリに関する設定 | COMMENT |
| LOW | docs/ja-jp/manual/cli/config.md | 461 | # passphrase = { env = "MAA_SSH_PASSPHRASE" } | COMMENT |
| LOW | docs/zh-cn/protocol/task-schema.md | 21 | { | COMMENT |
| LOW | docs/zh-cn/protocol/task-schema.md | 41 | COMMENT | |
| LOW | docs/zh-cn/protocol/task-schema.md | 81 | "rectMove": [0, 0, 0, 0], // 可选项,识别后的目标移动,不建议使用该选项。以 1280 * 720 为基准自动缩放 | COMMENT |
| LOW | docs/zh-cn/protocol/sss-schema.md | 81 | ], | COMMENT |
| LOW | docs/zh-cn/protocol/copilot-schema.md | 61 | ], | COMMENT |
| LOW | docs/zh-cn/protocol/copilot-schema.md | 81 | // "rect" 与 "location" 必须至少填写一个,都不填写会导致作业加载失败(解析期报错);同时填写时优先使用 "rect"(日志输出警告) | COMMENT |
| LOW | docs/zh-cn/protocol/copilot-schema.md | 101 | // 使用前必须执行过 type:ResetStopwatch 的 action 重置计时器,不然会卡住 | COMMENT |
| LOW | docs/zh-cn/manual/cli/config.md | 441 | branch = "main" # 远程仓库的分支,不填时使用远程仓库的默认分支 | COMMENT |
| LOW | docs/zh-tw/protocol/task-schema.md | 21 | { | COMMENT |
| LOW | docs/zh-tw/protocol/task-schema.md | 41 | COMMENT | |
| LOW | docs/zh-tw/protocol/task-schema.md | 81 | "rectMove": [0, 0, 0, 0], // 選填,辨識後的目標移動,不建議使用該選項。以 1280 * 720 為基準自動縮放 | COMMENT |
| LOW | docs/zh-tw/protocol/sss-schema.md | 81 | ], | COMMENT |
| LOW | docs/zh-tw/protocol/copilot-schema.md | 61 | ], | COMMENT |
| LOW | docs/zh-tw/protocol/copilot-schema.md | 81 | // "rect" 與 "location" 必須至少填寫一個,都不填寫會導致作業載入失敗(解析期報錯);同時填寫時優先使用 "rect"(日誌輸出警告) | COMMENT |
| LOW | docs/zh-tw/protocol/copilot-schema.md | 101 | // 使用前必須執行過 type:ResetStopwatch 的 action 重置計時器,不然會卡住 | COMMENT |
| LOW | docs/zh-tw/manual/cli/config.md | 441 | branch = "main" # 遠端倉庫的分支,不填時使用遠端倉庫的預設分支 | COMMENT |
| LOW | docs/ko-kr/protocol/base-scheduling-schema.md | 101 | }, | COMMENT |
| LOW | docs/ko-kr/protocol/base-scheduling-schema.md | 141 | "training": [ // 훈련실, 훈련 슬롯 오퍼레이터와 지원자를 구성 | COMMENT |
| LOW | docs/ko-kr/protocol/task-schema.md | 21 | { | COMMENT |
| LOW | docs/ko-kr/protocol/task-schema.md | 41 | COMMENT | |
| LOW | docs/ko-kr/protocol/task-schema.md | 81 | "rectMove": [0, 0, 0, 0], // 선택 사항, 인식 후 목표 이동 (비권장). 1280 * 720 기준 자동 스케일링 | COMMENT |
| LOW | docs/ko-kr/protocol/sss-schema.md | 61 | { | COMMENT |
| LOW | docs/ko-kr/protocol/copilot-schema.md | 61 | ], | COMMENT |
| LOW | docs/ko-kr/protocol/copilot-schema.md | 81 | // "rect"와 "location" 중 하나는 반드시 지정해야 함. 모두 비워 두면 파싱 오류로 작업 파일 로드에 실패함. 둘 다 지정하면 "rect"가 우선됨 (로그에 경고 출력) | COMMENT |
| LOW | docs/ko-kr/protocol/copilot-schema.md | 101 | // 사용 전 반드시 type:ResetStopwatch action을 실행하여 타이머를 초기화해야 함. 안 그러면 멈춤 | COMMENT |
| LOW | docs/ko-kr/manual/cli/config.md | 441 | branch = "main" # 원격 저장소의 브랜치, 비워두면 원격 저장소의 기본 브랜치 사용 | COMMENT |
| LOW | docs/en-us/protocol/base-scheduling-schema.md | 101 | }, | COMMENT |
| LOW | docs/en-us/protocol/base-scheduling-schema.md | 141 | "training": [ // Training Room, configures the trainee slot and the assistant slot | COMMENT |
| LOW | docs/en-us/protocol/task-schema.md | 21 | { | COMMENT |
| LOW | docs/en-us/protocol/task-schema.md | 41 | COMMENT | |
| LOW | docs/en-us/protocol/task-schema.md | 81 | COMMENT | |
| LOW | docs/en-us/protocol/sss-schema.md | 81 | ], | COMMENT |
| LOW | docs/en-us/protocol/copilot-schema.md | 61 | ], | COMMENT |
| LOW | docs/en-us/protocol/copilot-schema.md | 81 | // At least one of "rect" or "location" must be set; the copilot fails to load (parse-time error) if ne | COMMENT |
| LOW | docs/en-us/protocol/copilot-schema.md | 101 | // You must execute an action with type: ResetStopwatch beforehand to reset the stopwatch; otherwise, it wil | COMMENT |
| LOW | docs/en-us/manual/cli/config.md | 461 | # If your key is password-protected: | COMMENT |
| LOW | docs/.vuepress/plume.config.ts | 41 | // { | COMMENT |
| LOW | docs/.vuepress/plume.config.ts | 61 | // type: "primary", | COMMENT |
| LOW | docs/.vuepress/plume.config.ts | 81 | // { | COMMENT |
| LOW | docs/.vuepress/plume.config.ts | 101 | // link: "/zh-cn/", | COMMENT |
| LOW | .github/issue-checker.yml | 581 | # - name: Check Link | COMMENT |
| LOW | .github/issue-checker.yml | 601 | # - hostname: ^private-user-images\.githubusercontent\.com$ | COMMENT |
| 786 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | …ruitmentTool/roguelike_recruitment_tool/main_window.py | 265 | # ================================================================ | COMMENT |
| MEDIUM | …ruitmentTool/roguelike_recruitment_tool/main_window.py | 267 | # ================================================================ | COMMENT |
| MEDIUM | …ruitmentTool/roguelike_recruitment_tool/main_window.py | 310 | # ================================================================ | COMMENT |
| MEDIUM | …ruitmentTool/roguelike_recruitment_tool/main_window.py | 312 | # ================================================================ | COMMENT |
| MEDIUM⚡ | …RoguelikeRecruitmentTool/roguelike/recruitment/main.py | 39 | # ================================================================================ | COMMENT |
| MEDIUM⚡ | …RoguelikeRecruitmentTool/roguelike/recruitment/main.py | 41 | # ================================================================================ | COMMENT |
| MEDIUM⚡ | …RoguelikeRecruitmentTool/roguelike/recruitment/main.py | 50 | # ================================================================================ | COMMENT |
| MEDIUM⚡ | …RoguelikeRecruitmentTool/roguelike/recruitment/main.py | 52 | # ================================================================================ | COMMENT |
| MEDIUM⚡ | …RoguelikeRecruitmentTool/roguelike/recruitment/main.py | 75 | # ================================================================================ | COMMENT |
| MEDIUM⚡ | …RoguelikeRecruitmentTool/roguelike/recruitment/main.py | 77 | # ================================================================================ | COMMENT |
| MEDIUM⚡ | …RoguelikeRecruitmentTool/roguelike/recruitment/main.py | 83 | # ================================================================================ | COMMENT |
| MEDIUM⚡ | …RoguelikeRecruitmentTool/roguelike/recruitment/main.py | 85 | # ================================================================================ | COMMENT |
| MEDIUM⚡ | …RoguelikeRecruitmentTool/roguelike/recruitment/main.py | 255 | # ================================================================================ | COMMENT |
| MEDIUM⚡ | …RoguelikeRecruitmentTool/roguelike/recruitment/main.py | 257 | # ================================================================================ | COMMENT |
| MEDIUM⚡ | …RoguelikeRecruitmentTool/roguelike/recruitment/main.py | 266 | # ================================================================================ | COMMENT |
| MEDIUM⚡ | …RoguelikeRecruitmentTool/roguelike/recruitment/main.py | 268 | # ================================================================================ | COMMENT |
| MEDIUM⚡ | …RoguelikeRecruitmentTool/roguelike/recruitment/main.py | 324 | # ================================================================================ | COMMENT |
| MEDIUM⚡ | …RoguelikeRecruitmentTool/roguelike/recruitment/main.py | 326 | # ================================================================================ | COMMENT |
| MEDIUM | …RoguelikeRecruitmentTool/roguelike/recruitment/main.py | 24 | # ================================================================================ | COMMENT |
| MEDIUM | …RoguelikeRecruitmentTool/roguelike/recruitment/main.py | 26 | # ================================================================================ | COMMENT |
| MEDIUM | …RoguelikeRecruitmentTool/roguelike/recruitment/main.py | 228 | # ================================================================================ | COMMENT |
| MEDIUM | …RoguelikeRecruitmentTool/roguelike/recruitment/main.py | 230 | # ================================================================================ | COMMENT |
| MEDIUM⚡ | tools/ReleaseDownloadStats/release_download_stats.py | 43 | # ============================================================ | COMMENT |
| MEDIUM⚡ | tools/ReleaseDownloadStats/release_download_stats.py | 45 | # ============================================================ | COMMENT |
| MEDIUM⚡ | tools/ReleaseDownloadStats/release_download_stats.py | 55 | # ============================================================ | COMMENT |
| MEDIUM⚡ | tools/ReleaseDownloadStats/release_download_stats.py | 57 | # ============================================================ | COMMENT |
| MEDIUM | tools/ReleaseDownloadStats/release_download_stats.py | 135 | # ============================================================ | COMMENT |
| MEDIUM | tools/ReleaseDownloadStats/release_download_stats.py | 137 | # ============================================================ | COMMENT |
| MEDIUM | tools/ReleaseDownloadStats/release_download_stats.py | 186 | # ============================================================ | COMMENT |
| MEDIUM | tools/ReleaseDownloadStats/release_download_stats.py | 188 | # ============================================================ | COMMENT |
| MEDIUM | tools/ReleaseDownloadStats/release_download_stats.py | 307 | # ============================================================ | COMMENT |
| MEDIUM | tools/ReleaseDownloadStats/release_download_stats.py | 309 | # ============================================================ | COMMENT |
| MEDIUM | tools/ReleaseDownloadStats/release_download_stats.py | 1046 | # ============================================================ | COMMENT |
| MEDIUM | tools/ReleaseDownloadStats/release_download_stats.py | 1048 | # ============================================================ | COMMENT |
| MEDIUM | tools/ImageCropper/main.py | 55 | # ----------------------------------------------- | COMMENT |
| MEDIUM | tools/ImageCropper/main.py | 343 | # --------------------------------------------------------- | COMMENT |
| MEDIUM | …塔_Abandoned_Lighthouse/SSS_(新)荒废灯塔_圣聆初雪+遥_战地援护无人机.json | 7 | "details": "应急通关视频已上传,求三连\n【MAA保全派驻 荒废灯塔 雪遥双核】 https://www.bilibili.com/video/BV1Nmb66eE58/?share_source=copy_we | CODE |
| MEDIUM | …riesTestPlatform_Logos+Haruka_PortableFirstaidKit.json | 7 | "details": "Emergency one-life-clear video is uploaded, please give it a like, coin, and favorite (三连).\nThis op | CODE |
| MEDIUM | …dustries_Test_Platform/SSS_雷神工业测试平台_逻各斯+遥_便携式医疗设备.json | 7 | "details": "应急一命通关视频已上传,求三连\n本作业可以完成竞技记录分析仪的两个任务,将工具人替换成瑕光,远牙,白金,流星,正义骑士号中的四个,并在普通难度开始\n════════════════════════ | CODE |
| MEDIUM | …艺术馆旧址_Galeria_Ruins/SSS_任务专用_艺术馆旧址_维什戴尔_遥_能量扰动放大器.json | 7 | "details": "作业视频已上传,求三连\n做任务用,别在应急难度开始\n本作业可完成能量扰动放大器的两个任务\n═══════════════════════════════════\n作业代码:maa://6557 | CODE |
| MEDIUM | …/艺术馆旧址_Galeria_Ruins/SSS_艺术馆旧址_维什戴尔_斩业星熊_遥_反制装甲套组.json | 7 | "details": "应急一命通关视频已上传,求三连\n═══════════════════════════════════\n作业代码:maa://65329\n目前只能手动编队,所有工具人请尽量选择费用低的干员,练度 | CODE |
| MEDIUM | …ture_Platform/SSS_(新)阿尔斯特甜品制作平台_怒潮凛冬+圣聆初雪_溢能回收转化器.json | 7 | "details": "应急一命通关视频已上传,求三连\n═══════════════════════════════════\n作业代码:maa://90706\n目前只能手动编队,所有工具人请尽量选择费用低的干员,练度 | CODE |
| MEDIUM | …oles_Plate/SSS_多索雷斯在建地块_维什戴尔+荒芜拉普兰德+浊心斯卡蒂_镀膜装置导能阀.json | 8 | "details": "作业站代码:maa://44406\n应急一命通关视频已上传,求三连!!!\n目前只能手动编队,所有工具人请尽量选择费用低的干员,练度最好精二,最低精一满级\n所有工具人技能不要选只能开一次的技能(类 | CODE |
| MEDIUM | …_Platform/SSS_(新)塔山农业实验平台_荒芜拉普兰德+澄闪+浊心斯卡蒂_智能空域控制机.json | 8 | "details": "应急一命通关视频已上传,求三连\n═══════════════════════════════════\n作业代码:maa://90793\n目前只能手动编队,所有工具人请尽量选择费用低的干员,练度 | CODE |
| MEDIUM | …_Johns_New_Plate/SSS_约翰老妈新建地块_维什戴尔_荒芜拉普兰德_自适应补给元件.json | 7 | "details": "应急一命通关视频已上传,求三连\n本作业可完成自适应补给元件的两个任务+招募8次重装医疗任务\n已知问题如下\n①EW容易开了就关,不过应该不影响过,至少我这边不影响\n②MAA可能会在技能界面卡半天 | CODE |
| MEDIUM | …late/SSS_任务专用_约翰老妈新建地块_逻各斯_荒芜拉普兰德_黍_浊心斯卡蒂_战术装备整理箱.json | 7 | "details": "作业视频已上传,求三连\n做任务用,别在应急难度开始\n本作业可完成战术装备整理箱的任务,有条件的带天有四时(余年夕)更稳\n═══════════════════════════════════\n | CODE |
| MEDIUM | …an_Jungle/SSS_阿卡胡拉丛林_澄闪+荒芜拉普兰德+Mon3tr+逻各斯_丛林用示踪信标.json | 8 | "details": "\n应急一命通关视频已上传,求三连\n═══════════════════════════════════\n作业代码:maa://50393\n目前只能手动编队,所有工具人请尽量选择费用低的干员, | CODE |
| MEDIUM | …allan_Jungle/SSS_任务专用_阿卡胡拉丛林_维什戴尔+乌尔比安+安哲拉_阿戈尔示波器.json | 8 | "details": "做任务用,别在应急难度开始\n本作业可完成阿戈尔示波器的两个任务\n一命通关视频已上传,求三连\n═══════════════════════════════════\n作业代码:\n目前只能手动编 | CODE |
| MEDIUM | …卡胡拉丛林_Acahuallan_Jungle/SSS_阿卡胡拉丛林_维什戴尔单核_丛林用示踪信标.json | 8 | "details": "应急一命通关视频已上传,求三连\n═══════════════════════════════════\n作业代码:maa://50548\n目前只能手动编队,所有工具人请尽量选择费用低的干员,练度 | CODE |
| MEDIUM | …le_Wisadel+Ulpianus+Andreana_Ægirian_Oscilloscope.json | 8 | "details": "Task-only: do NOT start on Emergency difficulty.\nThis job completes two tasks for the Ægirian Oscil | CODE |
| MEDIUM | …_BarrenBeastsConcertHall_LightweightRangeFinder_2.json | 8 | "details": "作业站代码:maa://44374\n应急一命通关视频已上传,求三连!!!\n目前只能手动编队,所有工具人请尽量选择费用低的干员,练度最好精二,最低精一满级\n所有工具人技能不要选只能开一次的技能(类 | CODE |
| MEDIUM | …shu_Night_Market/SSS_尚蜀夜市_维什戴尔+阿斯卡纶+Mon3tr_天工夜行套装.json | 8 | "details": "应急一命通关视频已上传,求三连\n═══════════════════════════════════\n作业代码:maa://50469\n目前只能手动编队,所有工具人请尽量选择费用低的干员,练度 | CODE |
| MEDIUM | …angshu_Night_Market/SSS_任务专用_尚蜀夜市_阿斯卡纶+伊桑_自适应补给元件.json | 8 | "details": "做任务用,别在应急难度开始\n本作业可完成自适应补给元件的两个任务+招募8次术师任务+招募8次特种任务\n如果后面两个任务完成慢就把这个作业的blacklist里面的干员删掉,就算后面他打不过也能完成 | CODE |
| MEDIUM | …ht_Market_Ascalon_Ethan_Adaptive_Supply_Component.json | 8 | "details": "Task-only: do NOT start on Emergency difficulty.\nThis job can complete two Adaptive Supply Componen | CODE |
| MEDIUM | …t_Market_Wisadel+Ascalon+Mon3tr_Nightwalkers_Gear.json | 8 | "details": "Emergency one-life clear video uploaded — please like/share/subscribe!\n════════════════════════════ | CODE |
| MEDIUM | …rce/copilot/日达诺夫园区/SSS_日达诺夫园区_圣聆初雪+遥+斩业星熊_可充能督战音响.json | 7 | "details": "这次保全比较难,写了一天才写出个基本可以稳过的,来个三连支持一下\n作业视频:【MAA保全派驻 日达诺夫园区 雪熊遥三核】 https://www.bilibili.com/video/BV14QbY | CODE |
| MEDIUM | …佩尔山脚_Spier_Foothills/SSS_施佩尔山脚_逻各斯+圣聆初雪+浊心斯卡蒂_冷爆机.json | 7 | "details": "应急一命通关视频已上传,求三连\n═══════════════════════════════════\n作业代码:maa://77751\n目前只能手动编队,所有工具人请尽量选择费用低的干员,练度 | CODE |
| MEDIUM | …hePrerita+SkaditheCorruptingHeart_IceBlastMachine.json | 7 | "details": "The emergency one-life-clear video is now uploaded. Please give it a like, coin, and favorite!\n════ | CODE |
| MEDIUM | …oothills/SSS_任务专用_施佩尔山脚_荒芜拉普兰德+圣聆初雪+浊心斯卡蒂_能量扰动放大器.json | 7 | "details": "做任务用,在普通难度开始即可\n本作业可以完成能量扰动放大器的两个任务和招募辅助任务\n═══════════════════════════════════\n作业代码:maa://77848\n目 | CODE |
| MEDIUM | …NLY_Caster_Recruit_SpierFoothills_IceBlastMachine.json | 7 | "details": "This operation is for farming the \"Recruit 8 Casters\" mission. You need to set the loop count. MAA | CODE |
| 2 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL⚡ | src/MaaWpfGui/Helper/ConfigConverter.cs | 603 | ConfigFactory.CurrentConfig.Gui.ExternalNotification.Configs.Add(new ServerChan(sendKey)); | CODE |
| CRITICAL⚡ | src/MaaWpfGui/Helper/ConfigConverter.cs | 612 | ConfigFactory.CurrentConfig.Gui.ExternalNotification.Configs.Add(new Telegram(botToken, chatId, topi | CODE |
| CRITICAL⚡ | src/MaaWpfGui/Helper/ConfigConverter.cs | 622 | ConfigFactory.CurrentConfig.Gui.ExternalNotification.Configs.Add(new Discord(botToken, userId)); | CODE |
| CRITICAL⚡ | src/MaaWpfGui/Helper/ConfigConverter.cs | 630 | ConfigFactory.CurrentConfig.Gui.ExternalNotification.Configs.Add(new CustomWebhook(webhookUrl, Body: | CODE |
| CRITICAL⚡ | src/MaaWpfGui/Helper/ConfigConverter.cs | 638 | ConfigFactory.CurrentConfig.Gui.ExternalNotification.Configs.Add(new DingTalk(accessToken, secret)); | CODE |
| CRITICAL | src/MaaWpfGui/Helper/ConfigConverter.cs | 653 | ConfigFactory.CurrentConfig.Gui.ExternalNotification.Configs.Add(new Smtp(server, port, user, passwo | CODE |
| CRITICAL | src/MaaWpfGui/Helper/ConfigConverter.cs | 668 | ConfigFactory.CurrentConfig.Gui.ExternalNotification.Configs.Add(new Bark(sendKey, server)); | CODE |
| CRITICAL | src/MaaWpfGui/Helper/ConfigConverter.cs | 679 | ConfigFactory.CurrentConfig.Gui.ExternalNotification.Configs.Add(new Qmsg(server, key, user, bot)); | CODE |
| CRITICAL | src/MaaWpfGui/Helper/ConfigConverter.cs | 690 | ConfigFactory.CurrentConfig.Gui.ExternalNotification.Configs.Add(new Gotify(server, token)); | CODE |
| CRITICAL | src/MaaWpfGui/Helper/ConfigConverter.cs | 700 | ConfigFactory.CurrentConfig.Gui.ExternalNotification.Configs.Add(new CustomWebhook(url, headers, bod | CODE |
| CRITICAL | src/MaaWpfGui/Helper/DataHelper.cs | 90 | var characterNamesClientAdd = GetCharacterNamesAddAction(ConfigFactory.CurrentConfig.Gui.RuntimeSettings.ClientT | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/maa_core_eval.py | 310 | def _default_depot_candidates(self): | CODE |
| LOW | tools/CheckLocalizationReferences.py | 169 | def scan_observable_list_keys() -> list[tuple[str, int, str, str]]: | CODE |
| LOW | tools/OverseasClients/FindMissingJsonTranslate.py | 43 | def find_missing_translations(server_name): | CODE |
| LOW⚡ | …RoguelikeRecruitmentTool/roguelike/recruitment/main.py | 327 | def new_recruit_priority_offset( | CODE |
| LOW⚡ | …RoguelikeRecruitmentTool/roguelike/recruitment/main.py | 333 | def new_collection_priority_offset( | CODE |
| LOW | tools/ClangFormatter/test_clang_formatter_paths.py | 46 | def test_posix_relative_directory_boundary(self): | CODE |
| LOW | tools/ClangFormatter/test_clang_formatter_paths.py | 57 | def test_posix_absolute_directory_boundary(self): | CODE |
| LOW | tools/ClangFormatter/test_clang_formatter_paths.py | 75 | def test_posix_root_directories(self): | CODE |
| LOW | tools/ClangFormatter/test_clang_formatter_paths.py | 80 | def test_windows_directory_boundaries(self): | CODE |
| LOW | tools/ClangFormatter/test_clang_formatter_paths.py | 99 | def test_windows_normalization_and_alternate_separator(self): | CODE |
| LOW⚡ | tools/ClangFormatter/test_clang_formatter.py | 49 | def test_similar_sibling_is_not_ignored(self): | CODE |
| LOW⚡ | tools/ClangFormatter/test_clang_formatter.py | 54 | def test_ignored_descendants_are_skipped(self): | CODE |
| LOW⚡ | tools/ClangFormatter/test_clang_formatter.py | 63 | def test_extensions_preserved(self): | CODE |
| LOW⚡ | tools/ClangFormatter/test_clang_formatter.py | 66 | def test_input_directory_ignored(self): | CODE |
| LOW⚡ | tools/ClangFormatter/test_clang_formatter.py | 69 | def test_normalized_ignore_directory(self): | CODE |
| LOW⚡ | tools/ClangFormatter/test_clang_formatter.py | 77 | def test_ignored_descendants_are_not_traversed(self): | CODE |
| LOW | …ols/ClangFormatter/test_clang_formatter_integration.py | 18 | def test_only_requested_directory_is_ignored(self): | CODE |
| LOW | …ols/ClangFormatter/test_clang_formatter_integration.py | 58 | def test_ignored_current_directory_preserves_descendants(self): | CODE |
| LOW | …ols/ClangFormatter/test_clang_formatter_integration.py | 86 | def test_relative_nested_ignore_preserves_sibling(self): | CODE |
| LOW | tools/ChangelogGenerator/changelog_generator.py | 215 | def convert_contributors_name(name: str, commit_hash: str, name_type: str): | CODE |
| LOW | tools/ChangelogGenerator/changelog_generator.py | 303 | def format_commit_info_with_pr(repo_name: str, commit_hash: str, message: str): | CODE |
| LOW | tools/ChangelogGenerator/changelog_generator.py | 323 | def build_maamacgui_changelog(latest: str) -> str: | CODE |
| LOW | tools/ImageCropper/colormatcher.py | 88 | def __count_non_zero_with_connected(bin): | CODE |
| LOW | tools/ImageCropper/main.py | 59 | def set_screenshot_target_side(c: Controller): | CODE |
| LOW | tools/ImageCropper/main.py | 274 | def resize_to_target_short_side( | CODE |
| LOW | tools/ImageCropper/main.py | 311 | def get_amplified_roi_rectangle(roi: Roimage) -> list[int]: | CODE |
| LOW | tools/InfrastEfficientCheck/InfrastEfficientCheck.py | 4 | def find_skills_without_efficient(json_data): | CODE |
| LOW | src/Python/tests/test_updater.py | 87 | def assert_stale_files_removed(self): | CODE |
| LOW | src/Python/tests/test_updater.py | 139 | def test_symlinked_dir_outside_install_is_skipped(self): | CODE |
| LOW⚡ | src/Python/tests/test_updater.py | 156 | def test_scan_error_is_reported(self): | CODE |
| LOW⚡ | src/Python/tests/test_updater.py | 166 | def test_package_without_managed_dirs_removes_nothing(self): | CODE |
| LOW⚡ | src/Python/tests/test_updater.py | 174 | def test_update_installs_package_and_removes_stale_files(self): | CODE |
| LOW⚡ | src/Python/tests/test_asst.py | 36 | def test_insufficient_buffer_returns_none(self): | CODE |
| LOW⚡ | src/Python/tests/test_asst.py | 39 | def test_larger_buffer_returns_only_image_bytes(self): | CODE |
| LOW⚡ | src/Python/tests/test_asst.py | 42 | def test_exact_buffer_returns_image_bytes(self): | CODE |
| LOW⚡ | src/Python/tests/test_asst.py | 45 | def test_empty_image_returns_none(self): | CODE |
| LOW | src/Python/asst/updater.py | 180 | def _remove_stale_resource_files(path, package_files): | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/SortLocalizationKeys.py | 18 | CODE | |
| LOW | tools/CheckLocalizationReferences.py | 25 | CODE | |
| LOW | tools/CheckStubLocalization.py | 9 | CODE | |
| LOW | tools/GenerateExternalResources.py | 17 | CODE | |
| LOW | tools/MaskRangeTool/main.py | 4 | CODE | |
| LOW | …RecruitmentTool/roguelike_recruitment_tool/__init__.py | 1 | CODE | |
| LOW | …mentTool/roguelike_recruitment_tool/models/__init__.py | 1 | CODE | |
| LOW | …entTool/roguelike_recruitment_tool/dialogs/__init__.py | 1 | CODE | |
| LOW | …tTool/roguelike_recruitment_tool/delegates/__init__.py | 1 | CODE | |
| LOW | …tmentTool/roguelike_recruitment_tool/views/__init__.py | 1 | CODE | |
| LOW | …tmentTool/roguelike_recruitment_tool/views/__init__.py | 2 | CODE | |
| LOW | …tmentTool/roguelike_recruitment_tool/views/__init__.py | 3 | CODE | |
| LOW | …tmentTool/roguelike_recruitment_tool/views/__init__.py | 4 | CODE | |
| LOW | …tmentTool/roguelike_recruitment_tool/views/__init__.py | 5 | CODE | |
| LOW | …tmentTool/roguelike_recruitment_tool/views/__init__.py | 6 | CODE | |
| LOW | …/RoguelikeRecruitmentTool/roguelike/config/__init__.py | 1 | CODE | |
| LOW | …elikeRecruitmentTool/roguelike/recruitment/__init__.py | 1 | CODE | |
| LOW | …elikeRecruitmentTool/roguelike/recruitment/__init__.py | 2 | CODE | |
| LOW | …elikeRecruitmentTool/roguelike/recruitment/__init__.py | 2 | CODE | |
| LOW | …elikeRecruitmentTool/roguelike/recruitment/__init__.py | 2 | CODE | |
| LOW | …elikeRecruitmentTool/roguelike/recruitment/__init__.py | 2 | CODE | |
| LOW | …elikeRecruitmentTool/roguelike/recruitment/__init__.py | 2 | CODE | |
| LOW | …elikeRecruitmentTool/roguelike/recruitment/__init__.py | 2 | CODE | |
| LOW | …elikeRecruitmentTool/roguelike/recruitment/__init__.py | 2 | CODE | |
| LOW | …elikeRecruitmentTool/roguelike/recruitment/__init__.py | 2 | CODE | |
| LOW | …elikeRecruitmentTool/roguelike/recruitment/__init__.py | 2 | CODE | |
| LOW | …elikeRecruitmentTool/roguelike/recruitment/__init__.py | 2 | CODE | |
| LOW | …RoguelikeRecruitmentTool/roguelike/recruitment/main.py | 5 | CODE | |
| LOW | …RoguelikeRecruitmentTool/roguelike/recruitment/main.py | 6 | CODE | |
| LOW | …ikeRecruitmentTool/roguelike/recruitment/validation.py | 1 | CODE | |
| LOW | …ikeRecruitmentTool/roguelike/recruitment/validation.py | 1 | CODE | |
| LOW | …ikeRecruitmentTool/roguelike/recruitment/validation.py | 1 | CODE | |
| LOW | …ikeRecruitmentTool/roguelike/recruitment/validation.py | 1 | CODE | |
| LOW | …ikeRecruitmentTool/roguelike/recruitment/validation.py | 1 | CODE | |
| LOW | …ikeRecruitmentTool/roguelike/recruitment/validation.py | 1 | CODE | |
| LOW | tools/GetImageFromROI/updater.py | 2 | CODE | |
| LOW | tools/ReleaseDownloadStats/release_download_stats.py | 15 | CODE | |
| LOW | tools/ChangelogGenerator/changelog_generator.py | 7 | CODE | |
| LOW | tools/ChangelogGenerator/changelog_generator.py | 197 | CODE | |
| LOW | tools/ImageCropper/roi.py | 1 | CODE | |
| LOW | tools/ImageCropper/roimage.py | 1 | CODE | |
| LOW | src/Python/sample.py | 6 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/maa_core_eval.py | 438 | CODE | |
| LOW | tools/maa_core_eval.py | 247 | CODE | |
| LOW | tools/maafw-control-unit-download.py | 77 | CODE | |
| LOW | tools/maafw-control-unit-download.py | 182 | CODE | |
| LOW | tools/CheckLocalizationReferences.py | 111 | CODE | |
| LOW | tools/CheckLocalizationReferences.py | 169 | CODE | |
| LOW | tools/CheckLocalizationReferences.py | 245 | CODE | |
| LOW | tools/GenerateExternalResources.py | 34 | CODE | |
| LOW | tools/RoguelikeOperSearch/RoguelikeOperSearch.py | 16 | CODE | |
| LOW | tools/RoguelikeOperSearch/RoguelikeOperSearch.py | 29 | CODE | |
| LOW | tools/OverseasClients/FindMissingJsonTranslate.py | 43 | CODE | |
| LOW | tools/OptimizeTemplates/optimize_templates.py | 62 | CODE | |
| LOW | …elike_recruitment_tool/models/oper_info_table_model.py | 23 | CODE | |
| LOW | …elike_recruitment_tool/models/oper_info_table_model.py | 44 | CODE | |
| LOW | …mentTool/roguelike_recruitment_tool/common/__init__.py | 29 | CODE | |
| LOW | …guelikeRecruitmentTool/roguelike/recruitment/export.py | 10 | CODE | |
| LOW | …RoguelikeRecruitmentTool/roguelike/recruitment/main.py | 280 | CODE | |
| LOW | tools/TaskSorter/TaskSorter.py | 88 | CODE | |
| LOW | tools/SyncTemplate/SyncTemplate.py | 91 | CODE | |
| LOW | tools/SyncTemplate/SyncTemplate.py | 126 | CODE | |
| LOW | tools/ReleaseDownloadStats/release_download_stats.py | 191 | CODE | |
| LOW | tools/ChangelogGenerator/changelog_generator.py | 134 | CODE | |
| LOW | tools/ChangelogGenerator/changelog_generator.py | 196 | CODE | |
| LOW | tools/ChangelogGenerator/changelog_generator.py | 387 | CODE | |
| LOW | tools/InfrastEfficientCheck/InfrastEfficientCheck.py | 4 | CODE | |
| LOW | src/Python/asst/downloader.py | 47 | CODE | |
| LOW | src/Python/asst/downloader.py | 92 | CODE | |
| LOW | src/Python/asst/updater.py | 180 | CODE | |
| LOW | src/Python/asst/updater.py | 265 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | tools/ReleaseDownloadStats/release_download_stats.py | 913 | let stickyDetailId = null; | CODE |
| HIGH | tools/ReleaseDownloadStats/release_download_stats.py | 919 | if (!detail || detail.style.display === 'none') return; | CODE |
| HIGH | tools/ReleaseDownloadStats/release_download_stats.py | 943 | stickyDetailId = null; | CODE |
| HIGH | tools/ReleaseDownloadStats/release_download_stats.py | 984 | let sortState = {{ key: null, desc: false }}; | CODE |
| HIGH | tools/ReleaseDownloadStats/release_download_stats.py | 992 | allPairs.push([_allRows[i], _allRows[i + 1]]); | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | tools/maa_core_eval.py | 351 | except Exception: | CODE |
| HIGH | tools/SyncTemplate/SyncTemplate.py | 119 | except (OSError, PermissionError): | CODE |
| HIGH | src/Python/asst/downloader.py | 97 | except: | CODE |
| HIGH | src/Python/asst/updater.py | 212 | except OSError: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/maa_core_eval.py | 351 | except Exception: | CODE |
| MEDIUM | tools/maa_core_eval.py | 122 | def _on_callback(self, msg, details): | CODE |
| LOW | tools/OverseasClients/SortJsonByZHServerOrder.py | 40 | except Exception: | CODE |
| LOW | …ruitmentTool/roguelike_recruitment_tool/main_window.py | 292 | except Exception as e: | CODE |
| LOW | …ruitmentTool/roguelike_recruitment_tool/main_window.py | 399 | except Exception as e: | CODE |
| LOW | …ruitmentTool/roguelike_recruitment_tool/main_window.py | 415 | except Exception as e: | CODE |
| LOW | tools/SyncTemplate/SyncTemplate.py | 302 | except Exception as e: | CODE |
| LOW | tools/ReleaseDownloadStats/release_download_stats.py | 97 | except Exception as e: | CODE |
| LOW | tools/ChangelogGenerator/changelog_generator.py | 230 | except Exception as e: | CODE |
| LOW | tools/ChangelogGenerator/changelog_generator.py | 268 | except Exception as e: | CODE |
| LOW | src/Python/asst/downloader.py | 27 | except Exception as e: | CODE |
| LOW | src/Python/asst/downloader.py | 88 | except Exception as e: | CODE |
| LOW | src/Python/asst/updater.py | 109 | except Exception as e: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …RecruitmentTool/roguelike_recruitment_tool/__init__.py | 3 | __all__ = ["RecruitmentTool"] | CODE |
| LOW | …guelike_recruitment_tool/models/visualisation_model.py | 33 | def set_configuration(self, config: Configuration | None) -> None: | CODE |
| LOW | …mentTool/roguelike_recruitment_tool/models/__init__.py | 3 | __all__ = ["VisualisationModel"] | CODE |
| LOW | …/roguelike_recruitment_tool/models/group_list_model.py | 49 | def set_group_list(self, group_list: list[Group] | None) -> None: | CODE |
| LOW | …l/roguelike_recruitment_tool/models/oper_list_model.py | 41 | def set_oper_list(self, oper_list: list[Oper] | None) -> None: | CODE |
| LOW | …mentTool/roguelike_recruitment_tool/common/__init__.py | 81 | __all__ = ["DocRole", "DescriptionRole", "parse_field"] | CODE |
| LOW | …entTool/roguelike_recruitment_tool/dialogs/__init__.py | 3 | __all__ = ["GroupEditDialog"] | CODE |
| LOW | …tTool/roguelike_recruitment_tool/delegates/__init__.py | 3 | __all__ = ["EditableDelegate"] | CODE |
| LOW | …tmentTool/roguelike_recruitment_tool/views/__init__.py | 8 | __all__ = [ | CODE |
| LOW | …ol/roguelike_recruitment_tool/views/group_list_view.py | 92 | def update_group(self, index: int) -> None: | CODE |
| LOW | …/RoguelikeRecruitmentTool/roguelike/config/__init__.py | 3 | __all__ = ["Theme"] | CODE |
| LOW | …elikeRecruitmentTool/roguelike/recruitment/__init__.py | 15 | __all__ = [ | CODE |
| LOW | src/Python/asst/__init__.py | 1 | __all__ = ["asst", "emulator", "updater", "utils"] | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tools/ResourceUpdater/clone_data_repo.sh | 92 | # Define the base URL and parameters | COMMENT |
| MEDIUM | src/Dart/pubspec.yaml | 23 | # The following section is specific to Flutter. | COMMENT |
| MEDIUM | src/Dart/example/pubspec.yaml | 55 | # The following section is specific to Flutter. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | …aaCore/Task/Reclamation/ReclamationCraftTaskPlugin.cpp | 65 | // Step 1: 选择要组装的道具, 若没有找到则在组装台界面向下滑动屏幕后再次检测, 直到识别到要组装的道具后点击 | COMMENT |
| LOW⚡ | …aaCore/Task/Reclamation/ReclamationCraftTaskPlugin.cpp | 71 | // Step 2: 识别加号按钮后点击 99 次增加组装数量 | COMMENT |
| LOW⚡ | …aaCore/Task/Reclamation/ReclamationCraftTaskPlugin.cpp | 75 | // Step 3: 识别组装数量 | COMMENT |
| LOW | …aaCore/Task/Reclamation/ReclamationCraftTaskPlugin.cpp | 94 | // Step 4: 开始组装或取消组装 | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | …aaCore/Task/Reclamation/ReclamationCraftTaskPlugin.cpp | 65 | // Step 1: 选择要组装的道具, 若没有找到则在组装台界面向下滑动屏幕后再次检测, 直到识别到要组装的道具后点击 | COMMENT |
| LOW⚡ | …aaCore/Task/Reclamation/ReclamationCraftTaskPlugin.cpp | 71 | // Step 2: 识别加号按钮后点击 99 次增加组装数量 | COMMENT |
| LOW⚡ | …aaCore/Task/Reclamation/ReclamationCraftTaskPlugin.cpp | 75 | // Step 3: 识别组装数量 | COMMENT |
| LOW | …aaCore/Task/Reclamation/ReclamationCraftTaskPlugin.cpp | 94 | // Step 4: 开始组装或取消组装 | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | src/Dart/example/pubspec.yaml | 58 | # included with your application, so that you can use the icons in | COMMENT |