AI Slop Code RIsk Monitor

ok-oldking/ok-wuthering-waves

鸣潮 后台自动战斗 自动刷声骸 一键日常 Automation for Wuthering Waves

15.4 Elevated pattern signal View on GitHub

Maintenance and Governance Review

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.

15.4
Adjusted Signal
15.4
Raw Pattern Score
100%
Time Factor
2026-10-10
Last Push
7.8K
Stars
Python
Language
41.7K
Lines of Code
197
Files
615
Pattern Hits
2026-10-12
Scan Date
0.04
HC Hit Rate

Risk Review · v3

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

Cognitive Ownership Risk 44.4/100 · MEDIUM

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

Hallucinated Dependency & Supply Chain Risk 6.3/100 · LOW

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

Agent Over-Engineering Ratio 44.1/100 · MEDIUM

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

PR Review Velocity Impact 55.2/100 · HIGH

Which changes need focused human review? 615 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 0HIGH 8MEDIUM 8LOW 599

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 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.

Hyper-Verbose Identifiers407 hits · 386 pts
SeverityFileLineSnippetContext
LOWconfig.py13def _find_most_recently_run_pc_exe():CODE
LOWconfig.py46def _find_pc_exe_from_registry():CODE
LOWconfig.py87def _is_wuthering_waves_registry_entry(subkey_name, display_name):CODE
LOWconfig.py92def _find_pc_exe_near_registered_path(registered_path):CODE
LOWsetup.py24def find_packages_with_init_files(base_dir):CODE
LOWtests/TestMergeEchoTask.py21 def test_ungrouped_tasks_and_global_bag_hotkey_metadata(self):CODE
LOWtests/TestMergeEchoTask.py56 def test_stops_when_selected_echoes_do_not_fill_a_batch(self):CODE
LOWtests/TestMergeEchoTask.py130 def test_alerts_and_stops_when_bag_hotkey_fails(self):CODE
LOWtests/TestMergeEchoTask.py157 def test_quietly_returns_when_not_enough_notification_is_disabled(self):CODE
LOWtests/TestMergeEchoTask.py171 def test_daily_additional_tasks_metadata(self):CODE
LOWtests/TestMergeEchoTask.py196 def test_daily_runs_only_post_daily_selected_tasks(self):CODE
LOWtests/TestMergeEchoTask.py210 def assert_farm_alert_was_sent(task_class):CODE
LOWtests/TestMergeEchoTask.py232 def test_daily_does_not_alert_farm_echo_when_not_selected(self):CODE
LOWtests/TestMergeEchoTask.py245 def test_daily_suppresses_and_restores_not_enough_echo_notification(self):CODE
LOWtests/TestMergeEchoTask.py253 def assert_notification_suppressed(task_class):CODE
LOWtests/TestMergeEchoTask.py264 def test_daily_rejects_farm_echo_without_teleport(self):CODE
LOWtests/TestMergeEchoTask.py278 def test_daily_rejects_nightmare_without_selection(self):CODE
LOWtests/TestMergeEchoTask.py292 def test_daily_accepts_valid_additional_task_configs(self):CODE
LOWtests/TestMergeEchoTask.py312 def test_daily_stops_before_initialization_when_additional_config_is_invalid(self):CODE
LOWtests/TestDeathReentry.py63 def test_stop_after_max_recovery_retries(self):CODE
LOWtests/TestDeathReentry.py72 def test_heal_point_set_only_after_recovery(self):CODE
LOWtests/TestDeathReentry.py110 def test_realm_revive_exits_and_heals_only_when_teleport_enabled(self):CODE
LOW⚡tests/TestDeathReentry.py122 def test_teleport_again_and_do_not_count_death_round(self):CODE
LOW⚡tests/TestDeathReentry.py131 def test_stop_after_max_recovery_retries(self):CODE
LOW⚡tests/TestDeathReentry.py140 def test_revive_without_teleport_still_stops_task(self):CODE
LOW⚡tests/TestDeathReentry.py147 def test_heal_point_set_only_after_recovery(self):CODE
LOW⚡tests/TestDeathReentry.py156 def test_walk_in_boss_entry_clears_heal_point(self):CODE
LOWtests/TestDeathReentry.py176 def test_heal_point_set_only_after_recovery(self):CODE
LOWtests/TestDeathReentry.py207 def test_base_revive_skips_teleport_when_realm_entry_at_heal_point(self):CODE
LOWtests/TestDeathReentry.py217 def test_domain_revive_skips_teleport_when_realm_entry_at_heal_point(self):CODE
LOWtests/TestKey.py37 def test_load_hotkey_skips_set_key_when_short_action_bar_visible(self):CODE
LOWtests/TestSkipDialogWideMode.py15 def test_finds_skip_dialog_icons_with_frame_processor(self):CODE
LOWtests/TestSkipDialogWideMode.py30 def test_finds_and_clicks_wide_mode_confirm_dialog(self):CODE
LOWtests/TestEnhanceEchoStatusBox.py85 def test_drop_search_box_covers_both_drop_templates(self):CODE
LOWtests/TestEnhanceEchoStatusBox.py100 def test_lock_search_box_covers_both_lock_templates(self):CODE
LOWtests/TestEnhanceEchoStatusBox.py122 def test_list_returns_to_top_when_first_visible_card_is_enhanced(self):CODE
LOWtests/TestGameLauncher.py10 def test_windows_config_registers_launch_arguments_callback(self):CODE
LOWtests/TestGameLauncher.py16 def test_launch_arguments_read_current_game_package(self):CODE
LOWtests/TestGameLauncher.py28 def test_launch_arguments_default_to_hd(self):CODE
LOWtests/TestNightmareNestTask.py20 def test_nest_is_checked_before_nightmare_changes_book_scroll(self):CODE
LOWtests/TestNightmareNestTask.py27 def test_capture_success_clears_combat_before_post_combat_waits(self):CODE
LOWtests/TestNightmareNestTask.py48 def test_combat_nest_rechecks_after_pickup_in_team_and_open_world(self):CODE
LOWtests/TestNightmareNestTask.py78 def test_capture_mode_does_not_check_combat_after_pickup(self):CODE
LOWtests/TestNightmareNestTask.py85 def test_unreachable_nest_is_cached_when_travel_does_not_enter_world(self):CODE
LOWtests/TestNightmareNestTask.py110 def test_nest_is_skipped_after_max_deaths(self):CODE
LOWtests/TestNightmareNestTask.py151 def test_find_nest_skips_cached_unreachable_row(self):CODE
LOWtests/TestNightmareNestTask.py180 def test_cache_key_ignores_small_ocr_position_jitter(self):CODE
LOWtests/TestDomainRecoveryLoop.py18 def test_method_has_retry_parameter_with_default(self):CODE
LOWtests/TestDomainRecoveryLoop.py26 def test_method_increments_retries(self):CODE
LOWtests/TestDomainRecoveryLoop.py38 def test_method_stops_when_retry_budget_exceeded(self):CODE
LOWtests/TestDomainRecoveryLoop.py62 def test_loop_unpacks_must_use_from_farm_in_domain(self):CODE
LOWtests/TestMouseResetTask.py31 def test_run_keeps_only_one_callback(self):CODE
LOWtests/TestMouseResetTask.py39 def test_disabled_callback_stops_and_run_restarts_after_enable(self):CODE
LOWtests/TestMouseResetTask.py51 def test_callback_continues_while_enabled(self):CODE
LOWtests/TestMouseResetTask.py63 def test_browser_mode_does_not_start_loop(self):CODE
LOWtests/TestFarmEcho.py15 def test_find_boss_check_mark(self):CODE
LOWtests/TestFarmEchoTeleport.py26 def test_special_nightmare_is_found_after_the_nightmare_nests(self):CODE
LOWtests/TestFarmEchoTeleport.py37 def test_boss_challenge_target_is_unchanged(self):CODE
LOWtests/TestFarmEchoTeleport.py49 def test_weekly_challenge_confirms_low_waveplate_popup_before_team_screen(self):CODE
LOWtests/TestFarmEchoTeleport.py63 def test_reentry_from_f_confirms_low_waveplate_popup_before_starting(self):CODE
347 more matches not shown…
Deep Nesting75 hits · 75 pts
SeverityFileLineSnippetContext
LOWconfig.py13CODE
LOWconfig.py46CODE
LOWtests/TestScheduleSupport.py28CODE
LOW…ents/skills/ok-script-i18n/scripts/task_i18n_helper.py36CODE
LOW.agents/skills/pr-review/scripts/pr_tool.py436CODE
LOW.github/scripts/extract_issue_log.py191CODE
LOW.github/scripts/extract_issue_log.py240CODE
LOWsrc/char/Lucy.py51CODE
LOWsrc/char/Changli.py62CODE
LOWsrc/char/Jinhsi.py82CODE
LOWsrc/char/Xigelika.py24CODE
LOWsrc/char/Cartethyia.py108CODE
LOWsrc/char/Cartethyia.py160CODE
LOWsrc/char/Suisui.py30CODE
LOWsrc/char/BaseChar.py369CODE
LOWsrc/char/BaseChar.py591CODE
LOWsrc/char/BaseChar.py963CODE
LOWsrc/char/Phrolova.py16CODE
LOWsrc/char/YangYangSp.py24CODE
LOWsrc/char/Chisa.py29CODE
LOWsrc/char/Zhezhi.py76CODE
LOWsrc/char/Aemeath.py64CODE
LOWsrc/char/Augusta.py13CODE
LOWsrc/char/Carlotta.py122CODE
LOWsrc/char/Carlotta.py237CODE
LOWsrc/char/Mornye.py11CODE
LOWsrc/char/Mornye.py35CODE
LOWsrc/char/JingRan.py10CODE
LOWsrc/char/Denia.py19CODE
LOWsrc/char/Camellya.py39CODE
LOWsrc/char/Camellya.py171CODE
LOWsrc/char/Camellya.py179CODE
LOWsrc/char/Qingxiao.py16CODE
LOWsrc/char/Qingxiao.py67CODE
LOWsrc/char/Luhesi.py29CODE
LOWsrc/char/Hsin.py37CODE
LOWsrc/char/Hsin.py144CODE
LOWsrc/char/Ciaccona.py29CODE
LOWsrc/char/Rover.py59CODE
LOWsrc/char/Rover.py184CODE
LOWsrc/char/Hiyuki.py37CODE
LOWsrc/char/Hiyuki.py84CODE
LOWsrc/char/Phoebe.py184CODE
LOWsrc/char/Phoebe.py207CODE
LOWsrc/char/Phoebe.py292CODE
LOWsrc/char/Zani.py402CODE
LOWsrc/combat/CombatCheck.py139CODE
LOWsrc/combat/CombatCheck.py299CODE
LOWsrc/task/TacetTask.py48CODE
LOWsrc/task/MultiAccountDailyTask.py177CODE
LOWsrc/task/ChangeEchoTask.py44CODE
LOWsrc/task/AutoPickTask.py33CODE
LOWsrc/task/FiveToOneTask.py74CODE
LOWsrc/task/process_feature.py4CODE
LOWsrc/task/FarmMapTask.py176CODE
LOWsrc/task/DailyTask.py77CODE
LOWsrc/task/FarmEchoTask.py127CODE
LOWsrc/task/FarmEchoTask.py579CODE
LOWsrc/task/AutoCombatTask.py76CODE
LOWsrc/task/BaseCombatTask.py100CODE
15 more matches not shown…
Excessive Try-Catch Wrapping51 hits · 56 pts
SeverityFileLineSnippetContext
MEDIUM.agents/skills/pr-review/scripts/pr_tool.py492 print(f"Error: {exc}", file=sys.stderr)CODE
LOWsrc/OpenVinoYolo8Detect.py38 except Exception:CODE
LOWsrc/OpenVinoYolo8Detect.py55 except Exception as e:CODE
LOWsrc/OpenVinoYolo8Detect.py142 except Exception as e:CODE
MEDIUMsrc/OpenVinoYolo8Detect.py131def detect(self, image, threshold=0.5, label=-1):CODE
LOWsrc/OnnxYolo8Detect.py79 except Exception as e:CODE
LOWsrc/OnnxYolo8Detect.py205 except Exception as e:CODE
LOWsrc/char/Lucy.py20 except Exception:CODE
LOWsrc/char/Lucy.py67 except Exception:CODE
LOWsrc/char/Lucy.py78 except Exception:CODE
LOWsrc/char/Lucy.py91 except Exception:CODE
LOWsrc/char/CustomCharLoader.py110 except Exception:CODE
LOWsrc/char/CustomCharLoader.py171 except Exception:CODE
LOWsrc/char/CustomCharLoader.py285 except Exception as e:CODE
LOWsrc/char/CustomCharLoader.py386 except Exception as e:CODE
LOWsrc/char/CustomCharLoader.py431 except Exception:CODE
LOWsrc/char/CustomCharLoader.py466 except Exception as e:CODE
LOWsrc/char/CustomCharLoader.py592 except Exception:CODE
LOWsrc/char/CustomCharLoader.py647 except Exception as e:CODE
LOWsrc/char/CustomCharLoader.py716 except Exception:CODE
LOWsrc/char/CustomCharLoader.py744 except Exception as e:CODE
LOWsrc/char/Linnai.py92 except Exception as e:CODE
LOWsrc/char/Linnai.py106 except Exception as e:CODE
MEDIUMsrc/char/Linnai.py87def find_target_status_in_box(self, box_name):CODE
LOWsrc/char/Rebecca.py69 except Exception:CODE
LOWsrc/combat/CombatCheck.py191 except Exception as e:CODE
LOWsrc/gui/CharacterCodeTab.py1135 except Exception as e:CODE
LOWsrc/gui/CharacterCodeTab.py1158 except Exception as e:CODE
LOWsrc/gui/CharacterCodeTab.py1205 except Exception as e:CODE
LOWsrc/gui/CharacterCodeTab.py1313 except Exception as e:CODE
LOWsrc/gui/CharacterCodeTab.py1389 except Exception as e:CODE
LOWsrc/gui/CharacterCodeTab.py1456 except Exception as e:CODE
LOWsrc/gui/CharacterCodeTab.py1474 except Exception as e:CODE
LOW⚡src/gui/CharacterCodeTab.py1496 except Exception as e:CODE
LOW⚡src/gui/CharacterCodeTab.py1504 except Exception as e:CODE
LOWsrc/gui/CharacterCodeTab.py1525 except Exception as e:CODE
LOWsrc/gui/CharacterCodeTab.py1605 except Exception as e:CODE
MEDIUMsrc/gui/CharacterCodeTab.py1499def _preview_and_import_archive(self, archive_path, expected_team=None):CODE
LOWsrc/task/ChangeEchoTask.py60 except Exception as e:CODE
LOWsrc/task/DailyTask.py109 except Exception as e:CODE
LOWsrc/task/DailyTask.py181 except Exception as e:CODE
LOWsrc/task/DailyTask.py196 except Exception as e:CODE
LOWsrc/task/DailyTask.py242 except Exception:CODE
LOWsrc/task/FarmEchoTask.py119 except Exception as e:CODE
LOWsrc/task/FarmEchoTask.py225 except Exception as e:CODE
LOW⚡src/task/FarmEchoTask.py259 except Exception as e:CODE
LOWsrc/task/FarmEchoTask.py438 except Exception:CODE
LOWsrc/task/AutoCombatTask.py42 except Exception as e:CODE
LOWsrc/task/BaseCombatTask.py238 except Exception as e:CODE
LOWsrc/task/MouseResetTask.py58 except Exception as e:CODE
LOWsrc/task/EnhanceEchoTask.py86 except Exception as e:CODE
Unused Imports50 hits · 49 pts
SeverityFileLineSnippetContext
LOWtests/TestFarmEcho.py4CODE
LOWtests/TestFarmEcho.py6CODE
LOWtests/TestEnchaneEcho.py1CODE
LOWtests/TestEnchaneEcho.py5CODE
LOWtests/TestEcho.py5CODE
LOWtests/TestWorld.py5CODE
LOWtests/TestOCR.py1CODE
LOWtests/TestOCR.py4CODE
LOWtests/TestCharacterCodeTab.py16CODE
LOWtests/TestCharacterCodeTab.py17CODE
LOW.agents/skills/deploy/scripts/next_tag.py4CODE
LOW.agents/skills/pr-review/scripts/pr_tool.py18CODE
LOW.github/scripts/extract_issue_log.py4CODE
LOWsrc/globals.py3CODE
LOWsrc/globals.py5CODE
LOWsrc/OnnxYolo8Detect.py1CODE
LOWsrc/OnnxYolo8Detect.py2CODE
LOWsrc/OnnxYolo8Detect.py3CODE
LOWsrc/char/Changli.py6CODE
LOWsrc/char/BaseChar.py5CODE
LOWsrc/char/BaseChar.py6CODE
LOWsrc/char/BaseChar.py8CODE
LOWsrc/char/Phoebe.py7CODE
LOWsrc/char/Zani.py9CODE
LOWsrc/combat/CombatCheck.py6CODE
LOWsrc/combat/CombatCheck.py7CODE
LOWsrc/task/ChangeEchoTask.py8CODE
LOWsrc/task/AutoPickTask.py3CODE
LOWsrc/task/AutoPickTask.py5CODE
LOWsrc/task/FiveToOneTask.py1CODE
LOWsrc/task/FiveToOneTask.py2CODE
LOWsrc/task/FiveToOneTask.py5CODE
LOWsrc/task/FiveToOneTask.py5CODE
LOWsrc/task/FarmMapTask.py1CODE
LOWsrc/task/FarmMapTask.py2CODE
LOWsrc/task/FarmMapTask.py4CODE
LOWsrc/task/FarmMapTask.py8CODE
LOWsrc/task/SimulationTask.py1CODE
LOWsrc/task/SkipBaseTask.py1CODE
LOWsrc/task/SkipBaseTask.py2CODE
LOWsrc/task/SkipBaseTask.py6CODE
LOWsrc/task/WWOneTimeTask.py1CODE
LOWsrc/task/DomainTask.py1CODE
LOWsrc/task/AutoCombatTask.py5CODE
LOWsrc/task/BaseCombatTask.py13CODE
LOWsrc/task/AutoLoginTask.py2CODE
LOWsrc/task/BaseWWTask.py5CODE
LOWsrc/task/BaseWWTask.py9CODE
LOWsrc/task/BaseWWTask.py9CODE
LOWsrc/task/EnhanceEchoTask.py9CODE
Empty Error Handlers7 hits · 35 pts
SeverityFileLineSnippetContext
HIGHsrc/OpenVinoYolo8Detect.py38except Exception:CODE
HIGHsrc/char/Lucy.py20except Exception:CODE
HIGHsrc/char/Lucy.py67except Exception:CODE
HIGHsrc/char/Lucy.py78except Exception:CODE
HIGHsrc/char/Lucy.py91except Exception:CODE
HIGHsrc/char/Rebecca.py69except Exception:CODE
HIGHsrc/task/FarmEchoTask.py117except TaskDisabledException as e:CODE
Over-Commented Block13 hits · 13 pts
SeverityFileLineSnippetContext
LOWrequirements.txt1#COMMENT
LOWrequirements.txt21numpy==2.5.2COMMENT
LOWrequirements.txt41 # viaCOMMENT
LOWrequirements.txt61 # viaCOMMENT
LOWrequirements.txt81 # pyside6COMMENT
LOW.github/workflows/issue-triage.lock.yml1# gh-aw-metadata: {"schema_version":"v4","frontmatter_hash":"a86e622821aa0bcaf8d7acf6650f5d4f0ff6a1dc394a919d1367a5129daCOMMENT
LOW.github/workflows/issue-triage.lock.yml21# gh aw compileCOMMENT
LOW.github/workflows/issue-triage.lock.yml41# - actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0COMMENT
LOW.github/workflows/issue-triage.lock.yml981 continue-on-error: trueCOMMENT
LOW.github/workflows/pull-request-review.lock.yml1# gh-aw-metadata: {"schema_version":"v4","frontmatter_hash":"6af59746572fdfe5deac1ff1e1dbbdfd42300dd1d08e9a329075d765294COMMENT
LOW.github/workflows/pull-request-review.lock.yml21# gh aw compileCOMMENT
LOW.github/workflows/pull-request-review.lock.yml41# - actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 (source v9)COMMENT
LOWsrc/task/FarmEchoTask.py621 if ratio > best_ratio:COMMENT
Redundant / Tautological Comments5 hits · 8 pts
SeverityFileLineSnippetContext
LOW.github/workflows/test.yml89 # Check if the previous command succeededCOMMENT
LOWsrc/OnnxYolo8Detect.py171 # Check if indices is not an empty tuple, which can happen if NMSBoxes returns nothing.COMMENT
LOWsrc/char/BaseChar.py796 # # Check if the connected co mponent touches the borderCOMMENT
LOWsrc/task/BaseCombatTask.py1063 # Check if the contour is closed by checking if the start and end points are the sameCOMMENT
LOWsrc/task/BaseCombatTask.py1070 # Check if the polygon is closed (has no gaps) and has a reasonable number of vertices for a ring.COMMENT
Decorative Section Separators2 hits · 6 pts
SeverityFileLineSnippetContext
MEDIUMsrc/char/Zani.py121 # ─── 新增辅助方法 ───────────────────────────────────────────────COMMENT
MEDIUMsrc/char/Zani.py147 # ─── 基线方法(原样保留)──────────────────────────────────────────COMMENT
Cross-Language Confusion1 hit · 5 pts
SeverityFileLineSnippetContext
HIGHtests/test_extract_issue_log.py121 "pyappify app_version:None, app_profile:null, "CODE
Self-Referential Comments1 hit · 3 pts
SeverityFileLineSnippetContext
MEDIUMsrc/task/BaseCombatTask.py1029 # Define the color rangeCOMMENT
AI Slop Vocabulary1 hit · 3 pts
SeverityFileLineSnippetContext
MEDIUMsrc/task/BaseWWTask.py1329 # This is more robust than checking individual R, G, B channels.COMMENT
AI Structural Patterns2 hits · 2 pts
SeverityFileLineSnippetContext
LOWsrc/task/BaseWWTask.py347CODE
LOWsrc/task/BaseWWTask.py575CODE