鸣潮 后台自动战斗 自动刷声骸 一键日常 Automation for Wuthering Waves
This report summarizes scanner evidence for ok-oldking/ok-wuthering-waves, a Python project with 7,750 GitHub stars. SynthScan examined 41,720 lines of code across 197 source files, recording 615 pattern matches distributed across 12 syntactic categories. The legacy adjusted pattern signal is 15.4 (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.
Use each vector to guide manual verification of the underlying findings.
Can maintainers explain intent, assumptions, and trade-offs? 504 finding(s).
Are imports declared and package/API names verified? 51 finding(s).
Are wrappers, guards, and repeated structures necessary? 469 finding(s).
Which changes need focused human review? 615 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 615 distinct pattern matches across 12 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 | config.py | 13 | def _find_most_recently_run_pc_exe(): | CODE |
| LOW | config.py | 46 | def _find_pc_exe_from_registry(): | CODE |
| LOW | config.py | 87 | def _is_wuthering_waves_registry_entry(subkey_name, display_name): | CODE |
| LOW | config.py | 92 | def _find_pc_exe_near_registered_path(registered_path): | CODE |
| LOW | setup.py | 24 | def find_packages_with_init_files(base_dir): | CODE |
| LOW | tests/TestMergeEchoTask.py | 21 | def test_ungrouped_tasks_and_global_bag_hotkey_metadata(self): | CODE |
| LOW | tests/TestMergeEchoTask.py | 56 | def test_stops_when_selected_echoes_do_not_fill_a_batch(self): | CODE |
| LOW | tests/TestMergeEchoTask.py | 130 | def test_alerts_and_stops_when_bag_hotkey_fails(self): | CODE |
| LOW | tests/TestMergeEchoTask.py | 157 | def test_quietly_returns_when_not_enough_notification_is_disabled(self): | CODE |
| LOW | tests/TestMergeEchoTask.py | 171 | def test_daily_additional_tasks_metadata(self): | CODE |
| LOW | tests/TestMergeEchoTask.py | 196 | def test_daily_runs_only_post_daily_selected_tasks(self): | CODE |
| LOW | tests/TestMergeEchoTask.py | 210 | def assert_farm_alert_was_sent(task_class): | CODE |
| LOW | tests/TestMergeEchoTask.py | 232 | def test_daily_does_not_alert_farm_echo_when_not_selected(self): | CODE |
| LOW | tests/TestMergeEchoTask.py | 245 | def test_daily_suppresses_and_restores_not_enough_echo_notification(self): | CODE |
| LOW | tests/TestMergeEchoTask.py | 253 | def assert_notification_suppressed(task_class): | CODE |
| LOW | tests/TestMergeEchoTask.py | 264 | def test_daily_rejects_farm_echo_without_teleport(self): | CODE |
| LOW | tests/TestMergeEchoTask.py | 278 | def test_daily_rejects_nightmare_without_selection(self): | CODE |
| LOW | tests/TestMergeEchoTask.py | 292 | def test_daily_accepts_valid_additional_task_configs(self): | CODE |
| LOW | tests/TestMergeEchoTask.py | 312 | def test_daily_stops_before_initialization_when_additional_config_is_invalid(self): | CODE |
| LOW | tests/TestDeathReentry.py | 63 | def test_stop_after_max_recovery_retries(self): | CODE |
| LOW | tests/TestDeathReentry.py | 72 | def test_heal_point_set_only_after_recovery(self): | CODE |
| LOW | tests/TestDeathReentry.py | 110 | def test_realm_revive_exits_and_heals_only_when_teleport_enabled(self): | CODE |
| LOW⚡ | tests/TestDeathReentry.py | 122 | def test_teleport_again_and_do_not_count_death_round(self): | CODE |
| LOW⚡ | tests/TestDeathReentry.py | 131 | def test_stop_after_max_recovery_retries(self): | CODE |
| LOW⚡ | tests/TestDeathReentry.py | 140 | def test_revive_without_teleport_still_stops_task(self): | CODE |
| LOW⚡ | tests/TestDeathReentry.py | 147 | def test_heal_point_set_only_after_recovery(self): | CODE |
| LOW⚡ | tests/TestDeathReentry.py | 156 | def test_walk_in_boss_entry_clears_heal_point(self): | CODE |
| LOW | tests/TestDeathReentry.py | 176 | def test_heal_point_set_only_after_recovery(self): | CODE |
| LOW | tests/TestDeathReentry.py | 207 | def test_base_revive_skips_teleport_when_realm_entry_at_heal_point(self): | CODE |
| LOW | tests/TestDeathReentry.py | 217 | def test_domain_revive_skips_teleport_when_realm_entry_at_heal_point(self): | CODE |
| LOW | tests/TestKey.py | 37 | def test_load_hotkey_skips_set_key_when_short_action_bar_visible(self): | CODE |
| LOW | tests/TestSkipDialogWideMode.py | 15 | def test_finds_skip_dialog_icons_with_frame_processor(self): | CODE |
| LOW | tests/TestSkipDialogWideMode.py | 30 | def test_finds_and_clicks_wide_mode_confirm_dialog(self): | CODE |
| LOW | tests/TestEnhanceEchoStatusBox.py | 85 | def test_drop_search_box_covers_both_drop_templates(self): | CODE |
| LOW | tests/TestEnhanceEchoStatusBox.py | 100 | def test_lock_search_box_covers_both_lock_templates(self): | CODE |
| LOW | tests/TestEnhanceEchoStatusBox.py | 122 | def test_list_returns_to_top_when_first_visible_card_is_enhanced(self): | CODE |
| LOW | tests/TestGameLauncher.py | 10 | def test_windows_config_registers_launch_arguments_callback(self): | CODE |
| LOW | tests/TestGameLauncher.py | 16 | def test_launch_arguments_read_current_game_package(self): | CODE |
| LOW | tests/TestGameLauncher.py | 28 | def test_launch_arguments_default_to_hd(self): | CODE |
| LOW | tests/TestNightmareNestTask.py | 20 | def test_nest_is_checked_before_nightmare_changes_book_scroll(self): | CODE |
| LOW | tests/TestNightmareNestTask.py | 27 | def test_capture_success_clears_combat_before_post_combat_waits(self): | CODE |
| LOW | tests/TestNightmareNestTask.py | 48 | def test_combat_nest_rechecks_after_pickup_in_team_and_open_world(self): | CODE |
| LOW | tests/TestNightmareNestTask.py | 78 | def test_capture_mode_does_not_check_combat_after_pickup(self): | CODE |
| LOW | tests/TestNightmareNestTask.py | 85 | def test_unreachable_nest_is_cached_when_travel_does_not_enter_world(self): | CODE |
| LOW | tests/TestNightmareNestTask.py | 110 | def test_nest_is_skipped_after_max_deaths(self): | CODE |
| LOW | tests/TestNightmareNestTask.py | 151 | def test_find_nest_skips_cached_unreachable_row(self): | CODE |
| LOW | tests/TestNightmareNestTask.py | 180 | def test_cache_key_ignores_small_ocr_position_jitter(self): | CODE |
| LOW | tests/TestDomainRecoveryLoop.py | 18 | def test_method_has_retry_parameter_with_default(self): | CODE |
| LOW | tests/TestDomainRecoveryLoop.py | 26 | def test_method_increments_retries(self): | CODE |
| LOW | tests/TestDomainRecoveryLoop.py | 38 | def test_method_stops_when_retry_budget_exceeded(self): | CODE |
| LOW | tests/TestDomainRecoveryLoop.py | 62 | def test_loop_unpacks_must_use_from_farm_in_domain(self): | CODE |
| LOW | tests/TestMouseResetTask.py | 31 | def test_run_keeps_only_one_callback(self): | CODE |
| LOW | tests/TestMouseResetTask.py | 39 | def test_disabled_callback_stops_and_run_restarts_after_enable(self): | CODE |
| LOW | tests/TestMouseResetTask.py | 51 | def test_callback_continues_while_enabled(self): | CODE |
| LOW | tests/TestMouseResetTask.py | 63 | def test_browser_mode_does_not_start_loop(self): | CODE |
| LOW | tests/TestFarmEcho.py | 15 | def test_find_boss_check_mark(self): | CODE |
| LOW | tests/TestFarmEchoTeleport.py | 26 | def test_special_nightmare_is_found_after_the_nightmare_nests(self): | CODE |
| LOW | tests/TestFarmEchoTeleport.py | 37 | def test_boss_challenge_target_is_unchanged(self): | CODE |
| LOW | tests/TestFarmEchoTeleport.py | 49 | def test_weekly_challenge_confirms_low_waveplate_popup_before_team_screen(self): | CODE |
| LOW | tests/TestFarmEchoTeleport.py | 63 | def test_reentry_from_f_confirms_low_waveplate_popup_before_starting(self): | CODE |
| 347 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | config.py | 13 | CODE | |
| LOW | config.py | 46 | CODE | |
| LOW | tests/TestScheduleSupport.py | 28 | CODE | |
| LOW | …ents/skills/ok-script-i18n/scripts/task_i18n_helper.py | 36 | CODE | |
| LOW | .agents/skills/pr-review/scripts/pr_tool.py | 436 | CODE | |
| LOW | .github/scripts/extract_issue_log.py | 191 | CODE | |
| LOW | .github/scripts/extract_issue_log.py | 240 | CODE | |
| LOW | src/char/Lucy.py | 51 | CODE | |
| LOW | src/char/Changli.py | 62 | CODE | |
| LOW | src/char/Jinhsi.py | 82 | CODE | |
| LOW | src/char/Xigelika.py | 24 | CODE | |
| LOW | src/char/Cartethyia.py | 108 | CODE | |
| LOW | src/char/Cartethyia.py | 160 | CODE | |
| LOW | src/char/Suisui.py | 30 | CODE | |
| LOW | src/char/BaseChar.py | 369 | CODE | |
| LOW | src/char/BaseChar.py | 591 | CODE | |
| LOW | src/char/BaseChar.py | 963 | CODE | |
| LOW | src/char/Phrolova.py | 16 | CODE | |
| LOW | src/char/YangYangSp.py | 24 | CODE | |
| LOW | src/char/Chisa.py | 29 | CODE | |
| LOW | src/char/Zhezhi.py | 76 | CODE | |
| LOW | src/char/Aemeath.py | 64 | CODE | |
| LOW | src/char/Augusta.py | 13 | CODE | |
| LOW | src/char/Carlotta.py | 122 | CODE | |
| LOW | src/char/Carlotta.py | 237 | CODE | |
| LOW | src/char/Mornye.py | 11 | CODE | |
| LOW | src/char/Mornye.py | 35 | CODE | |
| LOW | src/char/JingRan.py | 10 | CODE | |
| LOW | src/char/Denia.py | 19 | CODE | |
| LOW | src/char/Camellya.py | 39 | CODE | |
| LOW | src/char/Camellya.py | 171 | CODE | |
| LOW | src/char/Camellya.py | 179 | CODE | |
| LOW | src/char/Qingxiao.py | 16 | CODE | |
| LOW | src/char/Qingxiao.py | 67 | CODE | |
| LOW | src/char/Luhesi.py | 29 | CODE | |
| LOW | src/char/Hsin.py | 37 | CODE | |
| LOW | src/char/Hsin.py | 144 | CODE | |
| LOW | src/char/Ciaccona.py | 29 | CODE | |
| LOW | src/char/Rover.py | 59 | CODE | |
| LOW | src/char/Rover.py | 184 | CODE | |
| LOW | src/char/Hiyuki.py | 37 | CODE | |
| LOW | src/char/Hiyuki.py | 84 | CODE | |
| LOW | src/char/Phoebe.py | 184 | CODE | |
| LOW | src/char/Phoebe.py | 207 | CODE | |
| LOW | src/char/Phoebe.py | 292 | CODE | |
| LOW | src/char/Zani.py | 402 | CODE | |
| LOW | src/combat/CombatCheck.py | 139 | CODE | |
| LOW | src/combat/CombatCheck.py | 299 | CODE | |
| LOW | src/task/TacetTask.py | 48 | CODE | |
| LOW | src/task/MultiAccountDailyTask.py | 177 | CODE | |
| LOW | src/task/ChangeEchoTask.py | 44 | CODE | |
| LOW | src/task/AutoPickTask.py | 33 | CODE | |
| LOW | src/task/FiveToOneTask.py | 74 | CODE | |
| LOW | src/task/process_feature.py | 4 | CODE | |
| LOW | src/task/FarmMapTask.py | 176 | CODE | |
| LOW | src/task/DailyTask.py | 77 | CODE | |
| LOW | src/task/FarmEchoTask.py | 127 | CODE | |
| LOW | src/task/FarmEchoTask.py | 579 | CODE | |
| LOW | src/task/AutoCombatTask.py | 76 | CODE | |
| LOW | src/task/BaseCombatTask.py | 100 | CODE | |
| 15 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | .agents/skills/pr-review/scripts/pr_tool.py | 492 | print(f"Error: {exc}", file=sys.stderr) | CODE |
| LOW | src/OpenVinoYolo8Detect.py | 38 | except Exception: | CODE |
| LOW | src/OpenVinoYolo8Detect.py | 55 | except Exception as e: | CODE |
| LOW | src/OpenVinoYolo8Detect.py | 142 | except Exception as e: | CODE |
| MEDIUM | src/OpenVinoYolo8Detect.py | 131 | def detect(self, image, threshold=0.5, label=-1): | CODE |
| LOW | src/OnnxYolo8Detect.py | 79 | except Exception as e: | CODE |
| LOW | src/OnnxYolo8Detect.py | 205 | except Exception as e: | CODE |
| LOW | src/char/Lucy.py | 20 | except Exception: | CODE |
| LOW | src/char/Lucy.py | 67 | except Exception: | CODE |
| LOW | src/char/Lucy.py | 78 | except Exception: | CODE |
| LOW | src/char/Lucy.py | 91 | except Exception: | CODE |
| LOW | src/char/CustomCharLoader.py | 110 | except Exception: | CODE |
| LOW | src/char/CustomCharLoader.py | 171 | except Exception: | CODE |
| LOW | src/char/CustomCharLoader.py | 285 | except Exception as e: | CODE |
| LOW | src/char/CustomCharLoader.py | 386 | except Exception as e: | CODE |
| LOW | src/char/CustomCharLoader.py | 431 | except Exception: | CODE |
| LOW | src/char/CustomCharLoader.py | 466 | except Exception as e: | CODE |
| LOW | src/char/CustomCharLoader.py | 592 | except Exception: | CODE |
| LOW | src/char/CustomCharLoader.py | 647 | except Exception as e: | CODE |
| LOW | src/char/CustomCharLoader.py | 716 | except Exception: | CODE |
| LOW | src/char/CustomCharLoader.py | 744 | except Exception as e: | CODE |
| LOW | src/char/Linnai.py | 92 | except Exception as e: | CODE |
| LOW | src/char/Linnai.py | 106 | except Exception as e: | CODE |
| MEDIUM | src/char/Linnai.py | 87 | def find_target_status_in_box(self, box_name): | CODE |
| LOW | src/char/Rebecca.py | 69 | except Exception: | CODE |
| LOW | src/combat/CombatCheck.py | 191 | except Exception as e: | CODE |
| LOW | src/gui/CharacterCodeTab.py | 1135 | except Exception as e: | CODE |
| LOW | src/gui/CharacterCodeTab.py | 1158 | except Exception as e: | CODE |
| LOW | src/gui/CharacterCodeTab.py | 1205 | except Exception as e: | CODE |
| LOW | src/gui/CharacterCodeTab.py | 1313 | except Exception as e: | CODE |
| LOW | src/gui/CharacterCodeTab.py | 1389 | except Exception as e: | CODE |
| LOW | src/gui/CharacterCodeTab.py | 1456 | except Exception as e: | CODE |
| LOW | src/gui/CharacterCodeTab.py | 1474 | except Exception as e: | CODE |
| LOW⚡ | src/gui/CharacterCodeTab.py | 1496 | except Exception as e: | CODE |
| LOW⚡ | src/gui/CharacterCodeTab.py | 1504 | except Exception as e: | CODE |
| LOW | src/gui/CharacterCodeTab.py | 1525 | except Exception as e: | CODE |
| LOW | src/gui/CharacterCodeTab.py | 1605 | except Exception as e: | CODE |
| MEDIUM | src/gui/CharacterCodeTab.py | 1499 | def _preview_and_import_archive(self, archive_path, expected_team=None): | CODE |
| LOW | src/task/ChangeEchoTask.py | 60 | except Exception as e: | CODE |
| LOW | src/task/DailyTask.py | 109 | except Exception as e: | CODE |
| LOW | src/task/DailyTask.py | 181 | except Exception as e: | CODE |
| LOW | src/task/DailyTask.py | 196 | except Exception as e: | CODE |
| LOW | src/task/DailyTask.py | 242 | except Exception: | CODE |
| LOW | src/task/FarmEchoTask.py | 119 | except Exception as e: | CODE |
| LOW | src/task/FarmEchoTask.py | 225 | except Exception as e: | CODE |
| LOW⚡ | src/task/FarmEchoTask.py | 259 | except Exception as e: | CODE |
| LOW | src/task/FarmEchoTask.py | 438 | except Exception: | CODE |
| LOW | src/task/AutoCombatTask.py | 42 | except Exception as e: | CODE |
| LOW | src/task/BaseCombatTask.py | 238 | except Exception as e: | CODE |
| LOW | src/task/MouseResetTask.py | 58 | except Exception as e: | CODE |
| LOW | src/task/EnhanceEchoTask.py | 86 | except Exception as e: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/TestFarmEcho.py | 4 | CODE | |
| LOW | tests/TestFarmEcho.py | 6 | CODE | |
| LOW | tests/TestEnchaneEcho.py | 1 | CODE | |
| LOW | tests/TestEnchaneEcho.py | 5 | CODE | |
| LOW | tests/TestEcho.py | 5 | CODE | |
| LOW | tests/TestWorld.py | 5 | CODE | |
| LOW | tests/TestOCR.py | 1 | CODE | |
| LOW | tests/TestOCR.py | 4 | CODE | |
| LOW | tests/TestCharacterCodeTab.py | 16 | CODE | |
| LOW | tests/TestCharacterCodeTab.py | 17 | CODE | |
| LOW | .agents/skills/deploy/scripts/next_tag.py | 4 | CODE | |
| LOW | .agents/skills/pr-review/scripts/pr_tool.py | 18 | CODE | |
| LOW | .github/scripts/extract_issue_log.py | 4 | CODE | |
| LOW | src/globals.py | 3 | CODE | |
| LOW | src/globals.py | 5 | CODE | |
| LOW | src/OnnxYolo8Detect.py | 1 | CODE | |
| LOW | src/OnnxYolo8Detect.py | 2 | CODE | |
| LOW | src/OnnxYolo8Detect.py | 3 | CODE | |
| LOW | src/char/Changli.py | 6 | CODE | |
| LOW | src/char/BaseChar.py | 5 | CODE | |
| LOW | src/char/BaseChar.py | 6 | CODE | |
| LOW | src/char/BaseChar.py | 8 | CODE | |
| LOW | src/char/Phoebe.py | 7 | CODE | |
| LOW | src/char/Zani.py | 9 | CODE | |
| LOW | src/combat/CombatCheck.py | 6 | CODE | |
| LOW | src/combat/CombatCheck.py | 7 | CODE | |
| LOW | src/task/ChangeEchoTask.py | 8 | CODE | |
| LOW | src/task/AutoPickTask.py | 3 | CODE | |
| LOW | src/task/AutoPickTask.py | 5 | CODE | |
| LOW | src/task/FiveToOneTask.py | 1 | CODE | |
| LOW | src/task/FiveToOneTask.py | 2 | CODE | |
| LOW | src/task/FiveToOneTask.py | 5 | CODE | |
| LOW | src/task/FiveToOneTask.py | 5 | CODE | |
| LOW | src/task/FarmMapTask.py | 1 | CODE | |
| LOW | src/task/FarmMapTask.py | 2 | CODE | |
| LOW | src/task/FarmMapTask.py | 4 | CODE | |
| LOW | src/task/FarmMapTask.py | 8 | CODE | |
| LOW | src/task/SimulationTask.py | 1 | CODE | |
| LOW | src/task/SkipBaseTask.py | 1 | CODE | |
| LOW | src/task/SkipBaseTask.py | 2 | CODE | |
| LOW | src/task/SkipBaseTask.py | 6 | CODE | |
| LOW | src/task/WWOneTimeTask.py | 1 | CODE | |
| LOW | src/task/DomainTask.py | 1 | CODE | |
| LOW | src/task/AutoCombatTask.py | 5 | CODE | |
| LOW | src/task/BaseCombatTask.py | 13 | CODE | |
| LOW | src/task/AutoLoginTask.py | 2 | CODE | |
| LOW | src/task/BaseWWTask.py | 5 | CODE | |
| LOW | src/task/BaseWWTask.py | 9 | CODE | |
| LOW | src/task/BaseWWTask.py | 9 | CODE | |
| LOW | src/task/EnhanceEchoTask.py | 9 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | src/OpenVinoYolo8Detect.py | 38 | except Exception: | CODE |
| HIGH | src/char/Lucy.py | 20 | except Exception: | CODE |
| HIGH | src/char/Lucy.py | 67 | except Exception: | CODE |
| HIGH | src/char/Lucy.py | 78 | except Exception: | CODE |
| HIGH | src/char/Lucy.py | 91 | except Exception: | CODE |
| HIGH | src/char/Rebecca.py | 69 | except Exception: | CODE |
| HIGH | src/task/FarmEchoTask.py | 117 | except TaskDisabledException as e: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | requirements.txt | 1 | # | COMMENT |
| LOW | requirements.txt | 21 | numpy==2.5.2 | COMMENT |
| LOW | requirements.txt | 41 | # via | COMMENT |
| LOW | requirements.txt | 61 | # via | COMMENT |
| LOW | requirements.txt | 81 | # pyside6 | COMMENT |
| LOW | .github/workflows/issue-triage.lock.yml | 1 | # gh-aw-metadata: {"schema_version":"v4","frontmatter_hash":"a86e622821aa0bcaf8d7acf6650f5d4f0ff6a1dc394a919d1367a5129da | COMMENT |
| LOW | .github/workflows/issue-triage.lock.yml | 21 | # gh aw compile | COMMENT |
| LOW | .github/workflows/issue-triage.lock.yml | 41 | # - actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0 | COMMENT |
| LOW | .github/workflows/issue-triage.lock.yml | 981 | continue-on-error: true | COMMENT |
| LOW | .github/workflows/pull-request-review.lock.yml | 1 | # gh-aw-metadata: {"schema_version":"v4","frontmatter_hash":"6af59746572fdfe5deac1ff1e1dbbdfd42300dd1d08e9a329075d765294 | COMMENT |
| LOW | .github/workflows/pull-request-review.lock.yml | 21 | # gh aw compile | COMMENT |
| LOW | .github/workflows/pull-request-review.lock.yml | 41 | # - actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 (source v9) | COMMENT |
| LOW | src/task/FarmEchoTask.py | 621 | if ratio > best_ratio: | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | .github/workflows/test.yml | 89 | # Check if the previous command succeeded | COMMENT |
| LOW | src/OnnxYolo8Detect.py | 171 | # Check if indices is not an empty tuple, which can happen if NMSBoxes returns nothing. | COMMENT |
| LOW | src/char/BaseChar.py | 796 | # # Check if the connected co mponent touches the border | COMMENT |
| LOW | src/task/BaseCombatTask.py | 1063 | # Check if the contour is closed by checking if the start and end points are the same | COMMENT |
| LOW | src/task/BaseCombatTask.py | 1070 | # Check if the polygon is closed (has no gaps) and has a reasonable number of vertices for a ring. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | src/char/Zani.py | 121 | # ─── 新增辅助方法 ─────────────────────────────────────────────── | COMMENT |
| MEDIUM | src/char/Zani.py | 147 | # ─── 基线方法(原样保留)────────────────────────────────────────── | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | tests/test_extract_issue_log.py | 121 | "pyappify app_version:None, app_profile:null, " | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | src/task/BaseCombatTask.py | 1029 | # Define the color range | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | src/task/BaseWWTask.py | 1329 | # This is more robust than checking individual R, G, B channels. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | src/task/BaseWWTask.py | 347 | CODE | |
| LOW | src/task/BaseWWTask.py | 575 | CODE |