深度学习辅助漫画翻译工具, 支持一键机翻和简单的图像/文本编辑 | Yet another computer-aided comic/manga translation tool powered by deeplearning
This report summarizes scanner evidence for dmMaze/BallonsTranslator, a Python project with 5,202 GitHub stars. SynthScan examined 245,397 lines of code across 421 source files, recording 3541 pattern matches distributed across 18 syntactic categories. The legacy adjusted pattern signal is 16.8 (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? 2672 finding(s).
Are imports declared and package/API names verified? 392 finding(s).
Are wrappers, guards, and repeated structures necessary? 2781 finding(s).
Which changes need focused human review? 3541 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 3541 distinct pattern matches across 18 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 | tests/test_text_style_preset_reordering.py | 65 | def test_reordering_moves_widget_and_saved_style_together(self) -> None: | CODE |
| LOW | tests/test_text_style_preset_reordering.py | 101 | def test_drop_in_row_gap_uses_horizontal_insertion_point(self) -> None: | CODE |
| LOW | tests/test_ruby_furigana.py | 98 | def test_group_html_round_trip_keeps_nested_format_entities_and_rp(self): | CODE |
| LOW | tests/test_ruby_furigana.py | 126 | def test_old_html_and_save_load_save_keep_semantic_content(self): | CODE |
| LOW | tests/test_ruby_furigana.py | 156 | def test_mono_round_trip_keeps_pair_order_and_distinct_identical_units(self): | CODE |
| LOW | tests/test_ruby_furigana.py | 173 | def test_malformed_and_nested_ruby_preserve_only_base_text(self): | CODE |
| LOW | tests/test_ruby_furigana.py | 226 | def test_custom_clipboard_round_trip_remaps_both_id_levels(self): | CODE |
| LOW | tests/test_ruby_furigana.py | 286 | def test_creation_validation_rejects_empty_paragraph_mismatch_and_tate(self): | CODE |
| LOW | tests/test_ruby_furigana.py | 303 | def test_partial_overlap_is_rejected_without_changing_existing_ruby(self): | CODE |
| LOW | tests/test_ruby_furigana.py | 314 | def test_caret_update_conversion_remove_undo_and_redo(self): | CODE |
| LOW | tests/test_ruby_furigana.py | 334 | def test_group_interior_insertion_extends_but_boundaries_do_not(self): | CODE |
| LOW | tests/test_ruby_furigana.py | 358 | def test_group_deletion_and_creation_undo_redo_remain_native(self): | CODE |
| LOW | tests/test_ruby_furigana.py | 374 | def test_side_editor_propagation_obeys_group_and_mono_boundaries(self): | CODE |
| LOW | tests/test_ruby_furigana.py | 396 | def test_production_replacement_never_transfers_mono_reading(self): | CODE |
| LOW | tests/test_ruby_furigana.py | 413 | def test_non_text_keys_use_native_editor(self): | CODE |
| LOW | tests/test_ruby_furigana.py | 436 | def test_navigation_keys_do_not_edit_or_add_undo_steps(self): | CODE |
| LOW | tests/test_ruby_furigana.py | 463 | def test_ime_replacement_range_never_transfers_mono_reading(self): | CODE |
| LOW | tests/test_ruby_furigana.py | 486 | def test_custom_rich_paste_obeys_group_replacement_and_break_rules(self): | CODE |
| LOW | tests/test_ruby_furigana.py | 530 | def test_break_insertion_removes_group_in_every_plain_text_path(self): | CODE |
| LOW | tests/test_ruby_furigana.py | 578 | def test_mono_boundary_insertion_and_unit_deletion_are_structural(self): | CODE |
| LOW | tests/test_ruby_furigana.py | 594 | def test_ruby_and_tate_reject_overlap_in_both_application_orders(self): | CODE |
| LOW | tests/test_ruby_furigana.py | 613 | def test_ordinary_formatting_preserves_container_and_unit_ids(self): | CODE |
| LOW | tests/test_ruby_furigana.py | 625 | def test_horizontal_long_ruby_expands_inline_positions_bounds_and_hit(self): | CODE |
| LOW | tests/test_ruby_furigana.py | 650 | def test_horizontal_wrap_keeps_group_and_pairs_indivisible(self): | CODE |
| LOW | tests/test_ruby_furigana.py | 672 | def test_horizontal_wrap_settles_final_ruby_cell_membership(self): | CODE |
| LOW | tests/test_ruby_furigana.py | 711 | def test_horizontal_wrap_queries_only_grapheme_endpoints(self): | CODE |
| LOW | tests/test_ruby_furigana.py | 745 | def test_paint_span_fragment_lookup_is_single_pass_for_many_mono_units(self): | CODE |
| LOW | tests/test_ruby_furigana.py | 837 | def test_horizontal_placement_spacing_and_selection_share_ruby_cell(self): | CODE |
| LOW | tests/test_ruby_furigana.py | 873 | def test_vertical_group_and_mono_keep_units_and_annotation_hit_geometry(self): | CODE |
| LOW | tests/test_ruby_furigana.py | 900 | def test_vertical_ruby_cells_include_only_selected_whitespace(self) -> None: | CODE |
| LOW | tests/test_ruby_furigana.py | 978 | def test_vertical_ruby_keeps_horizontal_alignment_after_space_insertion(self) -> None: | CODE |
| LOW | tests/test_ruby_furigana.py | 1031 | def test_space_around_expands_latin_and_mixed_but_not_bopomofo(self): | CODE |
| LOW | tests/test_ruby_furigana.py | 1151 | def test_vertical_group_and_mono_use_complete_selected_range(self): | CODE |
| LOW | tests/test_ruby_furigana.py | 1205 | def test_vertical_mono_expands_latin_and_mixed_readings_per_pair(self): | CODE |
| LOW | tests/test_ruby_furigana.py | 1254 | def test_horizontal_latin_base_expands_native_geometry_and_paint(self): | CODE |
| LOW | tests/test_ruby_furigana.py | 1332 | def test_long_annotation_distributes_shorter_cjk_and_latin_base(self): | CODE |
| LOW | tests/test_ruby_furigana.py | 1387 | def test_vertical_item_resize_uses_actual_one_sided_annotation_width(self): | CODE |
| LOW | tests/test_ruby_furigana.py | 1460 | def test_vertical_wrap_and_both_placements_use_settled_columns(self): | CODE |
| LOW | tests/test_ruby_furigana.py | 1504 | def test_wrapped_ruby_keeps_its_font_width_and_side_margins(self) -> None: | CODE |
| LOW | tests/test_ruby_furigana.py | 1543 | def test_ruby_and_emphasis_accumulate_same_side_margin(self): | CODE |
| LOW | tests/test_ruby_furigana.py | 1563 | def test_ruby_uses_cached_native_documents_without_mutating_live_document(self): | CODE |
| LOW | tests/test_ruby_furigana.py | 1670 | def test_vertical_glyph_slant_stroke_keeps_ruby_out_of_dilation(self): | CODE |
| LOW | tests/test_ruby_furigana.py | 1761 | def test_effects_glyph_slant_mode_switch_and_paint_share_ruby_geometry(self): | CODE |
| LOW | tests/test_ruby_furigana.py | 1893 | def test_panel_editor_emits_apply_shows_errors_and_exposes_remove(self): | CODE |
| LOW | tests/test_image_effect.py | 81 | def test_image_placements_use_source_over_and_destination_over(self): | CODE |
| LOW | tests/test_image_effect.py | 116 | def test_all_image_prefix_nodes_remain_in_application_order(self): | CODE |
| LOW | tests/test_image_effect.py | 151 | def test_image_keeps_canonical_and_generated_rasterization(self): | CODE |
| LOW | tests/test_image_effect.py | 182 | def test_image_prefix_cache_tracks_nodes_before_bottom_filter(self): | CODE |
| LOW | tests/test_image_effect.py | 240 | def test_strict_image_resolves_missing_prefix(self): | CODE |
| LOW | tests/test_image_effect.py | 277 | def test_strict_canvas_export_keeps_filter_before_image(self): | CODE |
| LOW | tests/test_image_effect.py | 305 | def test_image_preserves_generated_padding_after_project_attachment(self): | CODE |
| LOW | tests/test_image_effect.py | 334 | def test_distorted_glow_uses_canonical_stroke_bounds(self): | CODE |
| LOW | tests/test_image_effect.py | 379 | def test_distorted_image_then_expanding_filter_uses_logical_bounds(self): | CODE |
| LOW | tests/test_image_effect.py | 438 | def test_missing_image_does_not_expand_distorted_filter_bounds(self): | CODE |
| LOW | tests/test_image_effect.py | 483 | def test_sole_missing_image_is_an_interactive_neutral(self): | CODE |
| LOW | tests/test_image_effect.py | 511 | def test_raster_memory_failure_stays_inside_callback_and_is_strict(self): | CODE |
| LOW | tests/test_image_effect.py | 559 | def test_settled_image_paint_resolves_project_raster_once(self): | CODE |
| LOW | tests/test_image_effect.py | 598 | def test_repaint_and_asset_refresh_resolve_project_raster_once(self): | CODE |
| LOW | tests/test_image_effect.py | 625 | def test_suppressed_repaint_does_not_resolve_project_raster(self): | CODE |
| LOW | tests/test_image_effect.py | 654 | def test_image_mode_preview_resolves_project_raster_once(self): | CODE |
| 2229 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | …llontranslator/ui/framelesswindow/mac_window_effect.py | 0 | set acrylic effect for window parameter ---------- hwnd: int or `sip.voidptr` window handle gradientcolor: str hexadecim | STRING |
| HIGH | …ontranslator/ui/framelesswindow/linux_window_effect.py | 0 | set acrylic effect for window parameter ---------- hwnd: int or `sip.voidptr` window handle gradientcolor: str hexadecim | STRING |
| HIGH | …lator/ui/framelesswindow/fw_qt5/linux/window_effect.py | 0 | set acrylic effect for window parameter ---------- hwnd: int or `sip.voidptr` window handle gradientcolor: str hexadecim | STRING |
| HIGH | …llontranslator/ui/framelesswindow/mac_window_effect.py | 0 | set the border color of the window parameters ---------- hwnd: int or `sip.voidptr` window handle color: qcolor border a | STRING |
| HIGH | …llontranslator/ui/framelesswindow/win_window_effect.py | 0 | set the border color of the window parameters ---------- hwnd: int or `sip.voidptr` window handle color: qcolor border a | STRING |
| HIGH | …ontranslator/ui/framelesswindow/linux_window_effect.py | 0 | set the border color of the window parameters ---------- hwnd: int or `sip.voidptr` window handle color: qcolor border a | STRING |
| HIGH | …llontranslator/ui/framelesswindow/mac_window_effect.py | 0 | remove the border color of the window parameters ---------- hwnd: int or `sip.voidptr` window handle | STRING |
| HIGH | …llontranslator/ui/framelesswindow/win_window_effect.py | 0 | remove the border color of the window parameters ---------- hwnd: int or `sip.voidptr` window handle | STRING |
| HIGH | …ontranslator/ui/framelesswindow/linux_window_effect.py | 0 | remove the border color of the window parameters ---------- hwnd: int or `sip.voidptr` window handle | STRING |
| HIGH | …llontranslator/ui/framelesswindow/mac_window_effect.py | 0 | add the mica effect to the window (win11 only) parameters ---------- hwnd: int or `sip.voidptr` window handle isdarkmode | STRING |
| HIGH | …ontranslator/ui/framelesswindow/linux_window_effect.py | 0 | add the mica effect to the window (win11 only) parameters ---------- hwnd: int or `sip.voidptr` window handle isdarkmode | STRING |
| HIGH | …llontranslator/ui/framelesswindow/win_window_effect.py | 0 | add the mica effect to the window (win11 only) parameters ---------- hwnd: int or `sip.voidptr` window handle isdarkmode | STRING |
| HIGH | …llontranslator/ui/framelesswindow/mac_window_effect.py | 0 | add the aero effect to the window parameters ---------- hwnd: int or `sip.voidptr` window handle | STRING |
| HIGH | …ontranslator/ui/framelesswindow/linux_window_effect.py | 0 | add the aero effect to the window parameters ---------- hwnd: int or `sip.voidptr` window handle | STRING |
| HIGH | …lator/ui/framelesswindow/fw_qt5/linux/window_effect.py | 0 | add the aero effect to the window parameters ---------- hwnd: int or `sip.voidptr` window handle | STRING |
| HIGH | …llontranslator/ui/framelesswindow/win_window_effect.py | 0 | add the aero effect to the window parameters ---------- hwnd: int or `sip.voidptr` window handle | STRING |
| HIGH | …llontranslator/ui/framelesswindow/mac_window_effect.py | 0 | set transparent effect for window parameters ---------- hwnd : int or `sip.voidptr` window handle | STRING |
| HIGH | …ontranslator/ui/framelesswindow/linux_window_effect.py | 0 | set transparent effect for window parameters ---------- hwnd : int or `sip.voidptr` window handle | STRING |
| HIGH | …lator/ui/framelesswindow/fw_qt5/linux/window_effect.py | 0 | set transparent effect for window parameters ---------- hwnd : int or `sip.voidptr` window handle | STRING |
| HIGH | …llontranslator/ui/framelesswindow/mac_window_effect.py | 0 | remove background effect parameters ---------- hwnd : int or `sip.voidptr` window handle | STRING |
| HIGH | …ontranslator/ui/framelesswindow/linux_window_effect.py | 0 | remove background effect parameters ---------- hwnd : int or `sip.voidptr` window handle | STRING |
| HIGH | …lator/ui/framelesswindow/fw_qt5/linux/window_effect.py | 0 | remove background effect parameters ---------- hwnd : int or `sip.voidptr` window handle | STRING |
| HIGH | …llontranslator/ui/framelesswindow/mac_window_effect.py | 0 | add shadow to menu parameter ---------- hwnd: int or `sip.voidptr` window handle | STRING |
| HIGH | …ontranslator/ui/framelesswindow/linux_window_effect.py | 0 | add shadow to menu parameter ---------- hwnd: int or `sip.voidptr` window handle | STRING |
| HIGH | …lator/ui/framelesswindow/fw_qt5/linux/window_effect.py | 0 | add shadow to menu parameter ---------- hwnd: int or `sip.voidptr` window handle | STRING |
| HIGH | …llontranslator/ui/framelesswindow/mac_window_effect.py | 0 | remove shadow from pop-up menu parameters ---------- hwnd: int or `sip.voidptr` window handle | STRING |
| HIGH | …llontranslator/ui/framelesswindow/win_window_effect.py | 0 | remove shadow from pop-up menu parameters ---------- hwnd: int or `sip.voidptr` window handle | STRING |
| HIGH | …ontranslator/ui/framelesswindow/linux_window_effect.py | 0 | remove shadow from pop-up menu parameters ---------- hwnd: int or `sip.voidptr` window handle | STRING |
| HIGH | …lator/ui/framelesswindow/fw_qt5/linux/window_effect.py | 0 | remove shadow from pop-up menu parameters ---------- hwnd: int or `sip.voidptr` window handle | STRING |
| HIGH | …llontranslator/ui/framelesswindow/mac_window_effect.py | 0 | remove dwm shadow from the window parameters ---------- hwnd: int or `sip.voidptr` window handle | STRING |
| HIGH | …ontranslator/ui/framelesswindow/linux_window_effect.py | 0 | remove dwm shadow from the window parameters ---------- hwnd: int or `sip.voidptr` window handle | STRING |
| HIGH | …lator/ui/framelesswindow/fw_qt5/linux/window_effect.py | 0 | remove dwm shadow from the window parameters ---------- hwnd: int or `sip.voidptr` window handle | STRING |
| HIGH | …llontranslator/ui/framelesswindow/win_window_effect.py | 0 | remove dwm shadow from the window parameters ---------- hwnd: int or `sip.voidptr` window handle | STRING |
| HIGH | …llontranslator/ui/framelesswindow/mac_window_effect.py | 0 | enables the maximize and minimize animation of the window parameters ---------- hwnd : int or `sip.voidptr` window handl | STRING |
| HIGH | …ontranslator/ui/framelesswindow/linux_window_effect.py | 0 | enables the maximize and minimize animation of the window parameters ---------- hwnd : int or `sip.voidptr` window handl | STRING |
| HIGH | …lator/ui/framelesswindow/fw_qt5/linux/window_effect.py | 0 | enables the maximize and minimize animation of the window parameters ---------- hwnd : int or `sip.voidptr` window handl | STRING |
| HIGH | …llontranslator/ui/framelesswindow/mac_window_effect.py | 0 | disable the maximize button of window parameters ---------- hwnd : int or `sip.voidptr` window handle | STRING |
| HIGH | …llontranslator/ui/framelesswindow/win_window_effect.py | 0 | disable the maximize button of window parameters ---------- hwnd : int or `sip.voidptr` window handle | STRING |
| HIGH | …ontranslator/ui/framelesswindow/linux_window_effect.py | 0 | disable the maximize button of window parameters ---------- hwnd : int or `sip.voidptr` window handle | STRING |
| HIGH | …llontranslator/ui/framelesswindow/mac_window_effect.py | 0 | enable the blur effect behind the whole client parameters ---------- hwnd: int or `sip.voidptr` window handle | STRING |
| HIGH | …llontranslator/ui/framelesswindow/win_window_effect.py | 0 | enable the blur effect behind the whole client parameters ---------- hwnd: int or `sip.voidptr` window handle | STRING |
| HIGH | …ontranslator/ui/framelesswindow/linux_window_effect.py | 0 | enable the blur effect behind the whole client parameters ---------- hwnd: int or `sip.voidptr` window handle | STRING |
| HIGH | ballontranslator/ui/framelesswindow/win32_utils.py | 0 | get the accent color of system returns ------- color: qcolor accent color | STRING |
| HIGH | ballontranslator/ui/framelesswindow/linux_utils.py | 0 | get the accent color of system returns ------- color: qcolor accent color | STRING |
| HIGH | ballontranslator/ui/framelesswindow/mac_utils.py | 0 | get the accent color of system returns ------- color: qcolor accent color | STRING |
| HIGH | ballontranslator/ui/framelesswindow/win32_utils.py | 0 | resize window parameters ---------- window: qwidget window globalpos: qpoint the global point of mouse release event edg | STRING |
| HIGH | ballontranslator/ui/framelesswindow/linux_utils.py | 0 | resize window parameters ---------- window: qwidget window globalpos: qpoint the global point of mouse release event edg | STRING |
| HIGH | ballontranslator/ui/framelesswindow/mac_utils.py | 0 | resize window parameters ---------- window: qwidget window globalpos: qpoint the global point of mouse release event edg | STRING |
| HIGH | …nslator/ui/framelesswindow/fw_qt5/utils/linux_utils.py | 0 | resize window parameters ---------- window: qwidget window globalpos: qpoint the global point of mouse release event edg | STRING |
| HIGH | …ator/ui/framelesswindow/fw_qt5/win_frameless_window.py | 0 | set custom title bar # parameters # ---------- # titlebar: titlebar # title bar # | STRING |
| HIGH | …translator/ui/framelesswindow/fw_qt5/linux/__init__.py | 0 | set custom title bar # parameters # ---------- # titlebar: titlebar # title bar # | STRING |
| HIGH | …ator/ui/framelesswindow/fw_qt6/win_frameless_window.py | 0 | set custom title bar # parameters # ---------- # titlebar: titlebar # title bar # | STRING |
| HIGH | …ator/ui/framelesswindow/fw_qt6/mac_frameless_window.py | 0 | set custom title bar # parameters # ---------- # titlebar: titlebar # title bar # | STRING |
| HIGH | …or/ui/framelesswindow/fw_qt6/linux_frameless_window.py | 0 | set custom title bar # parameters # ---------- # titlebar: titlebar # title bar # | STRING |
| HIGH | …ator/ui/framelesswindow/fw_qt5/win_frameless_window.py | 0 | returns whether the system title bar button is visible | STRING |
| HIGH | …ator/ui/framelesswindow/fw_qt6/win_frameless_window.py | 0 | returns whether the system title bar button is visible | STRING |
| HIGH | …or/ui/framelesswindow/fw_qt6/linux_frameless_window.py | 0 | returns whether the system title bar button is visible | STRING |
| HIGH | …ator/ui/framelesswindow/fw_qt5/win_frameless_window.py | 0 | set the visibility of system title bar button, only works for macos | STRING |
| HIGH | …ator/ui/framelesswindow/fw_qt6/win_frameless_window.py | 0 | set the visibility of system title bar button, only works for macos | STRING |
| HIGH | …or/ui/framelesswindow/fw_qt6/linux_frameless_window.py | 0 | set the visibility of system title bar button, only works for macos | STRING |
| 3 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH⚡ | tests/test_text_transform_undo.py | 2713 | stack.push( | CODE |
| HIGH⚡ | tests/test_text_transform_undo.py | 2717 | stack.push( | CODE |
| HIGH⚡ | tests/test_text_transform_undo.py | 2726 | stack.push( | CODE |
| HIGH⚡ | tests/test_text_transform_undo.py | 2729 | stack.push( | CODE |
| HIGH⚡ | tests/test_text_transform_undo.py | 2782 | stack.push( | CODE |
| HIGH⚡ | tests/test_text_transform_undo.py | 2787 | stack.push( | CODE |
| HIGH⚡ | tests/test_text_transform_undo.py | 2792 | stack.push( | CODE |
| HIGH⚡ | tests/test_text_transform_undo.py | 2797 | stack.push( | CODE |
| HIGH | tests/test_text_transform_undo.py | 243 | stack.push(TextEditCommand(edit, num_steps, item)) | CODE |
| HIGH | tests/test_text_transform_undo.py | 2540 | stack.push(command) | CODE |
| HIGH | tests/test_text_transform_undo.py | 2561 | stack.push(SetTextTransformCommand( | CODE |
| HIGH | tests/test_text_transform_undo.py | 2743 | stack.push( | CODE |
| HIGH | tests/test_text_transform_undo.py | 4576 | stack.push(ReshapeItemCommand(item)) | CODE |
| HIGH | tests/test_text_transform_undo.py | 4577 | stack.push( | CODE |
| HIGH | tests/test_text_transform_undo.py | 4604 | stack.push(MoveBlkItemsCommand( | CODE |
| HIGH | tests/test_text_transform_undo.py | 4620 | stack.push(ReshapeItemCommand(item)) | CODE |
| HIGH | tests/test_rich_text_annotations.py | 3607 | stack.push(TextItemEditCommand(item, None, num_steps, panel)) | CODE |
| HIGH | tests/test_rich_text_annotations.py | 3717 | stack.push(TextItemEditCommand(item, None, num_steps, panel)) | CODE |
| HIGH | tests/test_horizontal_whitespace.py | 181 | for position in range(actual.length()): | CODE |
| HIGH | tests/test_text_effect_preview.py | 68 | self.stack.push(command) | CODE |
| HIGH | tests/test_llm_translation_contract.py | 335 | '{"translations":{"1":"heart"},"page_summary":null}', | CODE |
| HIGH | tests/test_text_effect_panel.py | 113 | self.stack.push(command) | CODE |
| HIGH | ballontranslator/ui/page_search_widget.py | 89 | block_end = block_start + block.length() | CODE |
| HIGH⚡ | ballontranslator/ui/canvas.py | 1867 | self.draw_undo_stack.push(command) | CODE |
| HIGH⚡ | ballontranslator/ui/canvas.py | 1874 | self.text_undo_stack.push(command) | CODE |
| HIGH | ballontranslator/ui/text_engine/horizontal_layout.py | 1239 | bllen = block.length() | CODE |
| HIGH | ballontranslator/ui/text_engine/horizontal_layout.py | 1254 | min(block.length() - 1, selEnd), | CODE |
| HIGH | ballontranslator/ui/text_engine/layout.py | 69 | block_length = max(0, block.length() - 1) | CODE |
| HIGH | ballontranslator/ui/text_engine/layout.py | 133 | if block_position <= cursor_position < block_position + block.length(): | CODE |
| HIGH | ballontranslator/ui/text_engine/layout.py | 432 | char_idx += fragment.length() | CODE |
| HIGH | ballontranslator/ui/text_engine/vertical_layout.py | 949 | line_position + leading, max(0, block.length() - 2), | CODE |
| HIGH | ballontranslator/ui/text_engine/font_family.py | 208 | fragment.length(), | CODE |
| HIGH⚡ | ballontranslator/ui/text_engine/annotations.py | 1535 | if fragment.isValid() and fragment.length() > 0: | CODE |
| HIGH⚡ | ballontranslator/ui/text_engine/annotations.py | 1541 | length = fragment.length() | CODE |
| HIGH | ballontranslator/ui/text_engine/annotations.py | 741 | fragment_end = fragment_start + fragment.length() | CODE |
| HIGH | ballontranslator/ui/text_engine/annotations.py | 1627 | if fragment.isValid() and fragment.length() > 0: | CODE |
| HIGH | ballontranslator/ui/text_engine/annotations.py | 1631 | length = fragment.length() | CODE |
| HIGH | ballontranslator/ui/text_engine/annotations.py | 1729 | if fragment.isValid() and fragment.length() > 0: | CODE |
| HIGH | ballontranslator/ui/text_engine/annotations.py | 1741 | fragment.length(), | CODE |
| HIGH | ballontranslator/ui/text_engine/item.py | 1814 | frag_end = frag_start + fragment.length() | CODE |
| HIGH | ballontranslator/ui/text_engine/item.py | 2187 | pos2 = pos1 + fragment.length() | CODE |
| HIGH | ballontranslator/ui/text_engine/editing/manager.py | 758 | # command construction can capture or mutate items before stack.push(). | COMMENT |
| HIGH | ballontranslator/ui/text_engine/formatting/panel.py | 265 | icon_key = (ratio, font.toString(), color.rgba()) | CODE |
| HIGH | ballontranslator/ui/text_engine/rendering/glyph.py | 319 | and absolute < fragment.position() + fragment.length() | CODE |
| HIGH | ballontranslator/ui/text_engine/rendering/glyph.py | 354 | block_length = max(0, block.length() - 1) | CODE |
| HIGH | ballontranslator/ui/text_engine/rendering/glyph.py | 392 | end = start + fragment.length() | CODE |
| HIGH | …llontranslator/ui/text_engine/rendering/glyph_slant.py | 278 | block_end = block_start + block.length() - 1 | CODE |
| HIGH | …llontranslator/ui/text_engine/rendering/glyph_slant.py | 515 | if fragment.isValid() and fragment.length() > 0: | CODE |
| HIGH | ballontranslator/ui/text_engine/rendering/ruby.py | 103 | if fragment.isValid() and fragment.length() > 0: | CODE |
| HIGH | ballontranslator/ui/text_engine/rendering/ruby.py | 106 | ends.append(start + fragment.length()) | CODE |
| HIGH | ballontranslator/ui/text_engine/rendering/ruby.py | 439 | and absolute < fragment.position() + fragment.length() | CODE |
| HIGH | ballontranslator/ui/text_engine/effects/renderer.py | 1809 | fragment.position() + fragment.length(), | CODE |
| HIGH | ballontranslator/ui/text_engine/effects/renderer.py | 2005 | fragment.position() + fragment.length(), | CODE |
| HIGH | ballontranslator/ui/text_engine/effects/renderer.py | 2236 | fragment.length(), | CODE |
| HIGH | ballontranslator/utils/download_util.py | 250 | f.write(buffer) # type: ignore[possibly-undefined] | STRING |
| HIGH | ballontranslator/utils/download_util.py | 252 | sha256.update(buffer) # type: ignore[possibly-undefined] | STRING |
| HIGH | ballontranslator/utils/download_util.py | 266 | digest = sha256.hexdigest() # type: ignore[possibly-undefined] | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_codex_storage.py | 1 | CODE | |
| LOW | tests/test_app_event_filters.py | 10 | CODE | |
| LOW | tests/test_app_event_filters.py | 46 | CODE | |
| LOW | tests/test_text_alpha_mask.py | 4 | CODE | |
| LOW | tests/test_update_dialog.py | 7 | CODE | |
| LOW | tests/test_update_dialog.py | 8 | CODE | |
| LOW | tests/test_update_dialog.py | 8 | CODE | |
| LOW | tests/test_update_dialog.py | 10 | CODE | |
| LOW | tests/test_update_dialog.py | 10 | CODE | |
| LOW | tests/test_module_run_errors.py | 7 | CODE | |
| LOW | tests/test_module_run_errors.py | 11 | CODE | |
| LOW | tests/test_module_run_errors.py | 14 | CODE | |
| LOW | tests/test_font_refresh.py | 1 | CODE | |
| LOW | tests/ui/text_rendering.py | 20 | CODE | |
| LOW | tests/ui/text_rendering.py | 20 | CODE | |
| LOW | tests/ui/render_ruby_furigana_fixture.py | 3 | CODE | |
| LOW | tests/ui/render_emphasis_native_fixture.py | 3 | CODE | |
| LOW | tests/ui/render_vertical_roman_overflow_fixture.py | 3 | CODE | |
| LOW | ballontranslator/launch.py | 7 | CODE | |
| LOW | ballontranslator/ui/misc.py | 10 | CODE | |
| LOW | ballontranslator/ui/misc.py | 10 | CODE | |
| LOW | ballontranslator/ui/misc.py | 10 | CODE | |
| LOW | ballontranslator/ui/font_refresh.py | 2 | CODE | |
| LOW | ballontranslator/ui/codex_account.py | 3 | CODE | |
| LOW | ballontranslator/ui/drawing_commands.py | 1 | CODE | |
| LOW | ballontranslator/ui/drawing_commands.py | 1 | CODE | |
| LOW | ballontranslator/ui/drawing_commands.py | 1 | CODE | |
| LOW | ballontranslator/ui/drawing_commands.py | 1 | CODE | |
| LOW | ballontranslator/ui/drawing_commands.py | 1 | CODE | |
| LOW | ballontranslator/ui/drawing_commands.py | 1 | CODE | |
| LOW | ballontranslator/ui/drawing_commands.py | 1 | CODE | |
| LOW | ballontranslator/ui/drawing_commands.py | 2 | CODE | |
| LOW | ballontranslator/ui/drawing_commands.py | 2 | CODE | |
| LOW | ballontranslator/ui/drawing_commands.py | 2 | CODE | |
| LOW | ballontranslator/ui/drawing_commands.py | 2 | CODE | |
| LOW | ballontranslator/ui/drawing_commands.py | 2 | CODE | |
| LOW | ballontranslator/ui/drawing_commands.py | 2 | CODE | |
| LOW | ballontranslator/ui/drawing_commands.py | 8 | CODE | |
| LOW | ballontranslator/ui/drawing_commands.py | 8 | CODE | |
| LOW | ballontranslator/ui/drawing_commands.py | 11 | CODE | |
| LOW | ballontranslator/ui/drawing_commands.py | 13 | CODE | |
| LOW | ballontranslator/ui/drawing_commands.py | 13 | CODE | |
| LOW | ballontranslator/ui/drawing_commands.py | 13 | CODE | |
| LOW | ballontranslator/ui/global_search_widget.py | 1 | CODE | |
| LOW | ballontranslator/ui/global_search_widget.py | 1 | CODE | |
| LOW | ballontranslator/ui/global_search_widget.py | 2 | CODE | |
| LOW | ballontranslator/ui/global_search_widget.py | 5 | CODE | |
| LOW | ballontranslator/ui/global_search_widget.py | 5 | CODE | |
| LOW | ballontranslator/ui/global_search_widget.py | 6 | CODE | |
| LOW | ballontranslator/ui/global_search_widget.py | 8 | CODE | |
| LOW | ballontranslator/ui/codex_sign_in.py | 3 | CODE | |
| LOW | ballontranslator/ui/spellcheck.py | 8 | CODE | |
| LOW | ballontranslator/ui/spellcheck.py | 333 | CODE | |
| LOW | ballontranslator/ui/mainwindow.py | 2 | CODE | |
| LOW | ballontranslator/ui/mainwindow.py | 1236 | CODE | |
| LOW | ballontranslator/ui/mainwindow.py | 1237 | CODE | |
| LOW | ballontranslator/ui/adaptive_wrap_layout.py | 3 | CODE | |
| LOW | ballontranslator/ui/funcmaps.py | 1 | CODE | |
| LOW | ballontranslator/ui/image_edit.py | 1 | CODE | |
| LOW | ballontranslator/ui/image_edit.py | 7 | CODE | |
| 261 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | tests/test_codex_runtime.py | 104 | except LLMUserActionRequiredError: | CODE |
| HIGH | tests/test_text_alpha_mask_edit_session.py | 80 | except RuntimeError: | CODE |
| HIGH | tests/test_codex_websocket.py | 642 | except ConnectionClosed: | CODE |
| HIGH | tests/test_codex_websocket.py | 749 | except ConnectionClosed: | CODE |
| HIGH | ballontranslator/launch.py | 123 | except Exception: | CODE |
| HIGH | ballontranslator/ui/ps_bridge_dialog.py | 277 | except Exception: | CODE |
| HIGH | ballontranslator/ui/ps_bridge_dialog.py | 235 | except OSError: | CODE |
| HIGH | ballontranslator/ui/ps_bridge_dialog.py | 222 | except OSError: | CODE |
| HIGH | ballontranslator/ui/ps_bridge_dialog.py | 231 | except OSError: | CODE |
| HIGH | ballontranslator/ui/codex_account.py | 59 | except LLMRequestStopped: | CODE |
| HIGH | ballontranslator/ui/spellcheck.py | 525 | except RuntimeError: | CODE |
| HIGH | ballontranslator/ui/spellcheck.py | 531 | except RuntimeError: | CODE |
| HIGH | ballontranslator/ui/mainwindow.py | 1507 | except: | CODE |
| HIGH | ballontranslator/ui/mainwindowbars.py | 228 | except ValueError: | CODE |
| HIGH | ballontranslator/ui/llm_profile_widgets.py | 1198 | except Exception: | CODE |
| HIGH | ballontranslator/ui/llm_profile_widgets.py | 1264 | except Exception: | CODE |
| HIGH | ballontranslator/ui/llm_profile_widgets.py | 1342 | except Exception: | CODE |
| HIGH | ballontranslator/ui/text_engine/shape_control.py | 429 | except (RuntimeError, TypeError): | CODE |
| HIGH | ballontranslator/ui/text_engine/editing/widgets.py | 86 | except RuntimeError: | CODE |
| HIGH | ballontranslator/ui/text_engine/editing/widgets.py | 98 | except RuntimeError: | CODE |
| HIGH | ballontranslator/ui/text_engine/editing/widgets.py | 488 | except RuntimeError: | CODE |
| HIGH | ballontranslator/ui/text_engine/editing/widgets.py | 921 | except RuntimeError: | CODE |
| HIGH | ballontranslator/ui/text_engine/editing/widgets.py | 320 | except Exception: | CODE |
| HIGH | …slator/ui/text_engine/transforms/projective_control.py | 234 | except (RuntimeError, TypeError): | CODE |
| HIGH | …ontranslator/ui/text_engine/transforms/grid_control.py | 351 | except RASTER_BOUNDARY_FAILURES: | CODE |
| HIGH | …ontranslator/ui/text_engine/transforms/grid_control.py | 208 | except (RuntimeError, TypeError): | CODE |
| HIGH | ballontranslator/ui/text_engine/formatting/presets.py | 278 | except RuntimeError: | CODE |
| HIGH | …ator/ui/text_engine/effects/alpha_mask_edit_session.py | 208 | except RuntimeError: | CODE |
| HIGH | …ator/ui/text_engine/effects/alpha_mask_edit_session.py | 175 | except (AttributeError, RuntimeError, TypeError): | CODE |
| HIGH | …ator/ui/text_engine/effects/alpha_mask_edit_session.py | 388 | except RuntimeError: | CODE |
| HIGH | ballontranslator/ui/text_engine/effects/renderer.py | 2174 | except RASTER_BOUNDARY_FAILURES: | CODE |
| HIGH | ballontranslator/utils/network_mirrors.py | 169 | except Exception: | CODE |
| HIGH | ballontranslator/utils/network_mirrors.py | 178 | except Exception: | CODE |
| HIGH | ballontranslator/utils/network_mirrors.py | 182 | except Exception: | CODE |
| HIGH | ballontranslator/utils/version.py | 57 | except Exception: | CODE |
| HIGH | ballontranslator/utils/download_util.py | 278 | except Exception: | CODE |
| HIGH | ballontranslator/utils/download_util.py | 283 | except Exception: | CODE |
| HIGH | ballontranslator/utils/updater.py | 294 | except OSError: | CODE |
| HIGH | ballontranslator/utils/fontformat.py | 549 | except ValueError: | CODE |
| HIGH | ballontranslator/utils/split_text_region.py | 182 | except: | CODE |
| HIGH | ballontranslator/modules/responses_ws.py | 116 | except RuntimeError: | CODE |
| HIGH | ballontranslator/modules/codex.py | 518 | except (ValueError, UnicodeDecodeError, asyncio.TimeoutError): | CODE |
| HIGH | ballontranslator/modules/codex.py | 431 | except FileNotFoundError: | CODE |
| HIGH | ballontranslator/modules/codex.py | 573 | except FileNotFoundError: | CODE |
| HIGH | ballontranslator/modules/base.py | 426 | except Exception: | CODE |
| HIGH | ballontranslator/modules/base.py | 458 | except Exception: | CODE |
| HIGH | ballontranslator/modules/llm_image.py | 383 | except (AttributeError, RuntimeError): | CODE |
| HIGH | ballontranslator/modules/llm_image.py | 305 | except Exception: | CODE |
| HIGH | ballontranslator/modules/llm_image.py | 705 | except Exception: | CODE |
| HIGH | ballontranslator/modules/translators/trans_google.py | 55 | except json.JSONDecodeError: | CODE |
| HIGH | ballontranslator/modules/translators/base.py | 376 | except: | CODE |
| HIGH | ballontranslator/modules/context/errors.py | 21 | except Exception: | CODE |
| HIGH | ballontranslator/modules/textdetector/detector_ctbd.py | 613 | except Exception: | CODE |
| HIGH | ballontranslator/modules/textdetector/yolov5/yolo.py | 220 | except NameError: | CODE |
| HIGH | ballontranslator/modules/ocr/ocr_lens_proto.py | 94 | except Exception: | CODE |
| HIGH | ballontranslator/modules/ocr/ocr_screen_ai.py | 326 | except: | CODE |
| HIGH | ballontranslator/modules/ocr/ocr_screen_ai.py | 126 | except Exception: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_ruby_furigana.py | 745 | CODE | |
| LOW | tests/test_ruby_furigana.py | 900 | CODE | |
| LOW | tests/test_ruby_furigana.py | 978 | CODE | |
| LOW | tests/test_ruby_furigana.py | 1031 | CODE | |
| LOW | tests/test_ruby_furigana.py | 1332 | CODE | |
| LOW | tests/test_ruby_furigana.py | 1504 | CODE | |
| LOW | tests/test_ruby_furigana.py | 1563 | CODE | |
| LOW | tests/test_image_effect.py | 240 | CODE | |
| LOW | tests/test_image_effect.py | 379 | CODE | |
| LOW | tests/test_image_effect.py | 438 | CODE | |
| LOW | tests/test_image_effect.py | 511 | CODE | |
| LOW | tests/test_image_effect.py | 625 | CODE | |
| LOW | tests/test_image_effect.py | 681 | CODE | |
| LOW | tests/test_text_transform_undo.py | 446 | CODE | |
| LOW | tests/test_text_transform_undo.py | 1656 | CODE | |
| LOW | tests/test_text_transform_undo.py | 1994 | CODE | |
| LOW | tests/test_text_transform_undo.py | 2142 | CODE | |
| LOW | tests/test_text_transform_undo.py | 2697 | CODE | |
| LOW | tests/test_text_transform_undo.py | 2772 | CODE | |
| LOW | tests/test_text_transform_undo.py | 3216 | CODE | |
| LOW | tests/test_text_transform_undo.py | 3500 | CODE | |
| LOW | tests/test_text_transform_undo.py | 3741 | CODE | |
| LOW | tests/test_text_transform_undo.py | 4102 | CODE | |
| LOW | tests/test_text_transform_undo.py | 4628 | CODE | |
| LOW | tests/test_text_transform_undo.py | 5769 | CODE | |
| LOW | tests/test_text_transform_undo.py | 5933 | CODE | |
| LOW | tests/test_rich_text_annotations.py | 1749 | CODE | |
| LOW | tests/test_rich_text_annotations.py | 1948 | CODE | |
| LOW | tests/test_horizontal_whitespace.py | 165 | CODE | |
| LOW | tests/test_horizontal_whitespace.py | 170 | CODE | |
| LOW | tests/test_codex_storage.py | 174 | CODE | |
| LOW | tests/test_image_effect_rendering.py | 235 | CODE | |
| LOW | tests/test_image_effect_rendering.py | 344 | CODE | |
| LOW | tests/test_image_effect_rendering.py | 386 | CODE | |
| LOW | tests/test_llm_key_dialog.py | 486 | CODE | |
| LOW | tests/test_llm_key_dialog.py | 673 | CODE | |
| LOW | tests/test_updater.py | 140 | CODE | |
| LOW | tests/test_codex_settings.py | 123 | CODE | |
| LOW | tests/test_codex_auth.py | 88 | CODE | |
| LOW | tests/test_codex_auth.py | 202 | CODE | |
| LOW | tests/test_codex_auth.py | 326 | CODE | |
| LOW | tests/test_llm_translator.py | 93 | CODE | |
| LOW | tests/test_llm_translator.py | 222 | CODE | |
| LOW | tests/test_text_filter_renderer.py | 307 | CODE | |
| LOW | tests/test_text_filter_renderer.py | 484 | CODE | |
| LOW | tests/test_text_filter_renderer.py | 952 | CODE | |
| LOW | tests/test_text_filter_renderer.py | 1044 | CODE | |
| LOW | tests/test_llm_translation_contract.py | 51 | CODE | |
| LOW | tests/test_llm_translation_contract.py | 98 | CODE | |
| LOW | tests/test_text_effect_persistence.py | 244 | CODE | |
| LOW | tests/test_shape_fill.py | 476 | CODE | |
| LOW | tests/test_shape_fill.py | 500 | CODE | |
| LOW | tests/test_shape_fill.py | 551 | CODE | |
| LOW | tests/test_codex_runtime.py | 62 | CODE | |
| LOW | tests/test_vertical_alignment.py | 119 | CODE | |
| LOW | tests/test_vertical_alignment.py | 466 | CODE | |
| LOW | tests/test_llm_translation_summary.py | 32 | CODE | |
| LOW | tests/test_llm_translation_summary.py | 405 | CODE | |
| LOW | tests/test_codex.py | 116 | CODE | |
| LOW | tests/test_codex.py | 257 | CODE | |
| 278 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_codex_auth.py | 357 | except Exception as error: | CODE |
| LOW | tests/test_codex_auth.py | 366 | except Exception as error: | CODE |
| MEDIUM | tests/test_codex_auth.py | 354 | def request() -> None: | CODE |
| MEDIUM | tests/test_codex.py | 688 | def run(): | CODE |
| MEDIUM | tests/test_codex.py | 794 | def run(): | CODE |
| LOW | tests/test_codex.py | 692 | except Exception as error: | CODE |
| LOW | tests/test_codex.py | 797 | except Exception as error: | CODE |
| MEDIUM | tests/test_llm_inpaint.py | 141 | def reserve(requester) -> None: | CODE |
| LOW | tests/test_llm_inpaint.py | 146 | except Exception as error: | CODE |
| LOW | ballontranslator/launch.py | 36 | except Exception: | CODE |
| LOW | ballontranslator/launch.py | 41 | except Exception: | CODE |
| LOW | ballontranslator/launch.py | 123 | except Exception: | CODE |
| LOW | ballontranslator/ui/torch_install_dialog.py | 149 | except Exception as e: | STRING |
| MEDIUM | ballontranslator/ui/torch_install_dialog.py | 142 | def update_command_preview(self): | CODE |
| MEDIUM | ballontranslator/ui/module_manager.py | 388 | def run(self): | CODE |
| MEDIUM | ballontranslator/ui/module_manager.py | 1338 | def run(self): | CODE |
| LOW | ballontranslator/ui/module_manager.py | 236 | except Exception as e: | CODE |
| LOW | ballontranslator/ui/module_manager.py | 288 | except Exception as e: | CODE |
| LOW | ballontranslator/ui/module_manager.py | 402 | except Exception as e: | CODE |
| LOW | ballontranslator/ui/module_manager.py | 474 | except Exception as e: | CODE |
| LOW | ballontranslator/ui/module_manager.py | 576 | except Exception as e: | CODE |
| LOW | ballontranslator/ui/module_manager.py | 674 | except Exception as e: | CODE |
| LOW | ballontranslator/ui/module_manager.py | 711 | except Exception as e: | CODE |
| LOW | ballontranslator/ui/module_manager.py | 904 | except Exception as e: | CODE |
| LOW | ballontranslator/ui/module_manager.py | 1087 | except Exception as error: | CODE |
| LOW | ballontranslator/ui/module_manager.py | 1276 | except Exception as e: | CODE |
| LOW | ballontranslator/ui/module_manager.py | 1353 | except Exception as e: | CODE |
| LOW | ballontranslator/ui/module_manager.py | 1811 | except Exception: | CODE |
| LOW | ballontranslator/ui/font_refresh.py | 63 | except Exception as error: | CODE |
| LOW | ballontranslator/ui/font_refresh.py | 201 | except Exception as error: | CODE |
| LOW | ballontranslator/ui/ps_bridge_dialog.py | 277 | except Exception: | CODE |
| LOW | ballontranslator/ui/ps_bridge_dialog.py | 292 | except Exception: | CODE |
| LOW | ballontranslator/ui/ps_bridge_dialog.py | 709 | except Exception as ctx_err: | STRING |
| LOW | ballontranslator/ui/ps_bridge_dialog.py | 721 | except Exception as e: | STRING |
| LOW | ballontranslator/ui/ps_bridge_dialog.py | 727 | except Exception as e: | STRING |
| LOW | ballontranslator/ui/codex_account.py | 67 | except Exception: | CODE |
| MEDIUM | ballontranslator/ui/codex_account.py | 51 | def run(self) -> None: | CODE |
| LOW | ballontranslator/ui/module_tool_button.py | 122 | except Exception: | CODE |
| MEDIUM⚡ | ballontranslator/ui/spellcheck.py | 180 | print(f"Error saving custom dictionary: {e}") | CODE |
| MEDIUM | ballontranslator/ui/spellcheck.py | 166 | print(f"Error loading custom dictionary: {e}") | CODE |
| MEDIUM | ballontranslator/ui/spellcheck.py | 182 | def _parse_and_load_file_to_set(self, path, target_set): | CODE |
| MEDIUM | ballontranslator/ui/spellcheck.py | 528 | def rehighlight(self): | CODE |
| LOW⚡ | ballontranslator/ui/spellcheck.py | 179 | except Exception as e: | CODE |
| LOW | ballontranslator/ui/spellcheck.py | 165 | except Exception as e: | CODE |
| LOW | ballontranslator/ui/spellcheck.py | 203 | except Exception as e: | CODE |
| LOW | ballontranslator/ui/spellcheck.py | 238 | except Exception as e: | CODE |
| LOW | ballontranslator/ui/spellcheck.py | 277 | except Exception as e: | CODE |
| LOW | ballontranslator/ui/spellcheck.py | 310 | except Exception as e: | CODE |
| LOW | ballontranslator/ui/spellcheck.py | 358 | except Exception as e: | CODE |
| LOW | ballontranslator/ui/spellcheck.py | 384 | except Exception: | CODE |
| LOW | ballontranslator/ui/spellcheck.py | 404 | except Exception: | CODE |
| LOW | ballontranslator/ui/spellcheck.py | 587 | except Exception as e: | CODE |
| MEDIUM | ballontranslator/ui/mainwindow.py | 2366 | def on_export_txt(self, dump_target, suffix='.txt'): | CODE |
| MEDIUM | ballontranslator/ui/mainwindow.py | 2373 | def on_import_trans_txt(self): | CODE |
| LOW⚡ | ballontranslator/ui/mainwindow.py | 623 | except Exception as e: | CODE |
| LOW⚡ | ballontranslator/ui/mainwindow.py | 630 | except Exception as e: | CODE |
| LOW⚡ | ballontranslator/ui/mainwindow.py | 637 | except Exception as e: | CODE |
| LOW | ballontranslator/ui/mainwindow.py | 807 | except Exception as e: | CODE |
| LOW | ballontranslator/ui/mainwindow.py | 832 | except Exception as e: | CODE |
| LOW | ballontranslator/ui/mainwindow.py | 853 | except Exception as e: | CODE |
| 184 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL⚡ | ballontranslator/ui/mainwindow.py | 342 | self.textPanel.formatpanel.foldTextBtn.checkStateChanged.connect(self.fold_textarea) | CODE |
| CRITICAL⚡ | ballontranslator/ui/mainwindow.py | 343 | self.textPanel.formatpanel.sourceBtn.checkStateChanged.connect(self.show_source_text) | CODE |
| CRITICAL⚡ | ballontranslator/ui/mainwindow.py | 344 | self.textPanel.formatpanel.transBtn.checkStateChanged.connect(self.show_trans_text) | CODE |
| CRITICAL⚡ | ballontranslator/ui/mainwindow.py | 345 | self.textPanel.formatpanel.textstyle_panel.export_style.connect(self.export_tstyles) | CODE |
| CRITICAL⚡ | ballontranslator/ui/mainwindow.py | 346 | self.textPanel.formatpanel.textstyle_panel.import_style.connect(self.import_tstyles) | CODE |
| CRITICAL⚡ | ballontranslator/ui/mainwindow.py | 504 | self.bottomBar.textdet_selector.selector.currentTextChanged.connect(self.on_textdet_changed) | CODE |
| CRITICAL⚡ | ballontranslator/ui/mainwindow.py | 505 | self.bottomBar.inpaint_selector.selector.currentTextChanged.connect(self.on_inpaint_changed) | CODE |
| CRITICAL⚡ | ballontranslator/ui/mainwindow.py | 508 | self.bottomBar.trans_selector.selector.currentTextChanged.connect(self.on_trans_changed) | CODE |
| CRITICAL⚡ | ballontranslator/ui/mainwindow.py | 510 | self.bottomBar.trans_selector.tgt_selector.currentTextChanged.connect(self.on_trans_tgt_changed) | CODE |
| CRITICAL⚡ | ballontranslator/ui/mainwindow.py | 511 | self.bottomBar.trans_selector.src_selector.currentTextChanged.connect(self.on_trans_src_changed) | CODE |
| CRITICAL⚡ | ballontranslator/ui/mainwindow.py | 518 | self.bottomBar.ocr_selector.selector.currentTextChanged.connect(self.on_ocr_changed) | CODE |
| CRITICAL | ballontranslator/ui/mainwindow.py | 1161 | self.textPanel.formatpanel.formatBtnGroup.italicBtn.click() | CODE |
| CRITICAL | ballontranslator/ui/mainwindow.py | 1165 | self.textPanel.formatpanel.formatBtnGroup.underlineBtn.click() | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_vertical_interaction.py | 458 | def set_position(position: int) -> None: | CODE |
| LOW | tests/test_vertical_interaction.py | 508 | def set_position(position: int) -> None: | CODE |
| LOW | tests/test_codex_storage.py | 39 | def set_password(self, service: str, username: str, password: str) -> None: | CODE |
| LOW | tests/test_image_effect_rendering.py | 85 | def _set_image(item: TextBlkItem, image: ImageEffect) -> None: | CODE |
| LOW | ballontranslator/__init__.py | 1 | __all__ = [] | CODE |
| LOW | ballontranslator/ui/ps_bridge_dialog.py | 486 | def _set_sync_status(self, message: str, color: str) -> None: | STRING |
| LOW | ballontranslator/ui/llm_context_editor.py | 212 | def set_context_visible(self, visible: bool) -> None: | CODE |
| LOW⚡ | ballontranslator/ui/llm_context_editor.py | 247 | def set_project(self, project: Optional[ProjImgTrans]) -> None: | CODE |
| LOW | ballontranslator/ui/llm_context_editor.py | 295 | def set_page(self, page_key: Optional[str]) -> None: | CODE |
| LOW | ballontranslator/ui/bulk_page_summary_editor.py | 167 | def update_palette(self) -> None: | STRING |
| LOW⚡ | ballontranslator/ui/bulk_page_summary_editor.py | 231 | def _update_line_number_area_width(self, _count: int = 0) -> None: | STRING |
| LOW⚡ | ballontranslator/ui/bulk_page_summary_editor.py | 234 | def _update_line_number_area(self, rect: QRect, dy: int) -> None: | STRING |
| LOW⚡ | ballontranslator/ui/run_pipeline_dialog.py | 891 | def _set_llm_ocr_settings_visible(self, module_name: str) -> None: | CODE |
| LOW | ballontranslator/ui/llm_profile_widgets.py | 1315 | def _setVisionModelText(self, text: str, emit_changed: bool) -> None: | CODE |
| LOW | ballontranslator/ui/llm_profile_widgets.py | 1390 | def _setImageModelText(self, text: str, emit_changed: bool) -> None: | CODE |
| LOW⚡ | ballontranslator/ui/drawingpanel.py | 1599 | def _update_rect_mask_preview(self) -> None: | CODE |
| LOW | ballontranslator/ui/drawingpanel.py | 378 | def set_fill_mode(self, mode: int) -> None: | CODE |
| LOW | ballontranslator/ui/drawingpanel.py | 550 | def set_border_width(self, value: int) -> None: | CODE |
| LOW | ballontranslator/ui/drawingpanel.py | 1138 | def set_config(self, config: DrawPanelConfig) -> None: | CODE |
| LOW | ballontranslator/ui/drawingpanel.py | 1545 | def _update_rect_mask(self) -> None: | CODE |
| LOW⚡ | ballontranslator/ui/canvas.py | 1877 | def _update_history_save_state(self) -> None: | CODE |
| LOW | ballontranslator/ui/canvas.py | 885 | def set_active_layer_transparency(self, value: int) -> None: | CODE |
| LOW | ballontranslator/ui/canvas.py | 936 | def update_brush_line_preview(self, scene_pos: QPointF, modifiers: Qt.KeyboardModifier) -> None: | CODE |
| LOW | ballontranslator/ui/canvas.py | 1022 | def set_order_badges_visible(self, visible: bool) -> None: | CODE |
| LOW | ballontranslator/ui/canvas.py | 1649 | def set_magic_wand_hover_tracking(self, enabled: bool) -> None: | CODE |
| LOW | ballontranslator/ui/canvas.py | 1944 | def update_saved_undostep(self) -> None: | CODE |
| LOW | ballontranslator/ui/text_engine/shape_control.py | 136 | def _updateVisibleRect(self) -> None: | CODE |
| LOW | ballontranslator/ui/text_engine/annotations.py | 2360 | def set_oldstyle_nums(char_format: QTextCharFormat, state: str) -> None: | CODE |
| LOW⚡ | ballontranslator/ui/text_engine/item.py | 427 | def _update_nonlinear_editing_ui(self) -> None: | CODE |
| LOW⚡ | ballontranslator/ui/text_engine/item.py | 685 | def _set_effective_opacity(self, opacity: float) -> None: | CODE |
| LOW | ballontranslator/ui/text_engine/item.py | 121 | def set_number(self, number: int) -> None: | CODE |
| LOW | ballontranslator/ui/text_engine/item.py | 162 | def set_selected(self, selected: bool) -> None: | CODE |
| LOW | ballontranslator/ui/text_engine/item.py | 1194 | def set_order_badge_visible(self, visible: bool) -> None: | CODE |
| LOW | ballontranslator/ui/text_engine/item.py | 1253 | def set_order_number_override(self, order_number: Optional[int]) -> None: | CODE |
| LOW | ballontranslator/ui/text_engine/item.py | 1293 | def set_ui_guide_suppressed(self, suppressed: bool) -> None: | CODE |
| LOW | ballontranslator/ui/text_engine/editing/widgets.py | 1081 | def set_selected_list(self, selection_indices: List[int]) -> None: | STRING |
| LOW | ballontranslator/ui/text_engine/editing/move_session.py | 92 | def _update_indicator(self) -> None: | CODE |
| LOW⚡ | ballontranslator/ui/text_engine/transforms/controls.py | 757 | def set_index(self, index: int) -> None: | CODE |
| LOW⚡ | ballontranslator/ui/text_engine/transforms/controls.py | 760 | def set_move_enabled(self, can_move_up: bool, can_move_down: bool) -> None: | CODE |
| LOW⚡ | ballontranslator/ui/text_engine/transforms/controls.py | 764 | def set_selected(self, selected: bool) -> None: | CODE |
| LOW⚡ | ballontranslator/ui/text_engine/transforms/controls.py | 774 | def set_values(self, transforms) -> None: | CODE |
| LOW | …ontranslator/ui/text_engine/transforms/edit_session.py | 186 | def _set_global_state(self, state: TextTransformStack) -> None: | CODE |
| LOW⚡ | ballontranslator/ui/text_engine/transforms/panel.py | 308 | def set_active_format(self, font_format: FontFormat) -> None: | CODE |
| LOW⚡ | ballontranslator/ui/text_engine/transforms/panel.py | 311 | def set_transform_items(self, items) -> None: | CODE |
| LOW | …ontranslator/ui/text_engine/transforms/grid_control.py | 389 | def _set_modal_cursor(self) -> None: | CODE |
| LOW | …ontranslator/ui/text_engine/transforms/grid_control.py | 409 | def _update_modal_indicator(self) -> None: | CODE |
| LOW | ballontranslator/ui/text_engine/formatting/advanced.py | 181 | def set_error(self, message: str) -> None: | CODE |
| LOW⚡ | ballontranslator/ui/text_engine/formatting/advanced.py | 574 | def set_active_format(self, font_format: FontFormat) -> None: | CODE |
| LOW⚡ | ballontranslator/ui/text_engine/formatting/advanced.py | 577 | def set_line_spacing_type(self, spacing_type: int) -> None: | CODE |
| LOW⚡ | ballontranslator/ui/text_engine/formatting/advanced.py | 581 | def set_ligature_axis(self, axis: str, value: str) -> None: | CODE |
| LOW | ballontranslator/ui/text_engine/formatting/panel.py | 259 | def _update_menu_icons(self) -> None: | CODE |
| LOW | ballontranslator/ui/text_engine/formatting/panel.py | 287 | def set_values(self, style: str, position: str) -> None: | CODE |
| LOW | ballontranslator/ui/text_engine/formatting/panel.py | 424 | def set_committed_text(self, text: str) -> None: | CODE |
| LOW | ballontranslator/ui/text_engine/formatting/panel.py | 597 | def set_weight(self, weight: FontWeight) -> None: | CODE |
| LOW | ballontranslator/ui/text_engine/formatting/panel.py | 758 | def update_font_entries(self, entries: Iterable[FontEntry]) -> None: | CODE |
| LOW | ballontranslator/ui/text_engine/formatting/panel.py | 780 | def set_current_family(self, family: str) -> None: | CODE |
| LOW | ballontranslator/ui/text_engine/formatting/panel.py | 1163 | def update_font_entries(self, entries: Iterable[FontEntry]) -> None: | CODE |
| LOW | ballontranslator/ui/text_engine/formatting/panel.py | 1478 | def set_tate_chu_yoko_enabled(self, enabled: bool) -> None: | CODE |
| LOW | …nslator/ui/text_engine/formatting/size_edit_session.py | 54 | def _set_defaults(self, index: int, redo: bool) -> None: | CODE |
| LOW | …ator/ui/text_engine/effects/alpha_mask_edit_session.py | 127 | def set_editing(self, enabled: bool) -> None: | CODE |
| 42 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | …ator/ui/framelesswindow/fw_qt5/win_frameless_window.py | 61 | # ---------- | COMMENT |
| MEDIUM | …translator/ui/framelesswindow/fw_qt5/linux/__init__.py | 42 | # ---------- | COMMENT |
| MEDIUM | …ator/ui/framelesswindow/fw_qt6/win_frameless_window.py | 57 | # ---------- | COMMENT |
| MEDIUM | …ator/ui/framelesswindow/fw_qt6/mac_frameless_window.py | 67 | # ---------- | COMMENT |
| MEDIUM | …or/ui/framelesswindow/fw_qt6/linux_frameless_window.py | 57 | # ---------- | COMMENT |
| MEDIUM | …or/ui/framelesswindow/fw_qt6/linux_frameless_window.py | 83 | # ---------- | COMMENT |
| MEDIUM | ballontranslator/modules/ocr/ocr_ppv6_onnx.py | 16 | # ── Paths ──────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | ballontranslator/modules/ocr/ocr_ppv6_onnx.py | 297 | # ── Model lifecycle ───────────────────────────────────────────────── | COMMENT |
| MEDIUM | ballontranslator/modules/ocr/ocr_ppv6_onnx.py | 411 | # ── GPU uniform-batch recognition ─────────────────────────────────── | COMMENT |
| MEDIUM | ballontranslator/modules/ocr/ocr_ppv6_onnx.py | 448 | # ── OCRBase interface — crop-based recognition ────────────────────── | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | …ator/ui/_generated/module_param_dialog_i18n_catalog.py | 1 | # This file is auto-generated by scripts/update_translation.py. | COMMENT |
| MEDIUM | …ntranslator/modules/translators/trans_yandex_foswly.py | 1 | # This module is a Python port of the TypeScript library: https://github.com/FOSWLY/translate | COMMENT |
| MEDIUM⚡ | ballontranslator/modules/textdetector/panel_finder.py | 58 | # Create a new list to store the filtered polygons. | COMMENT |
| MEDIUM | ballontranslator/modules/textdetector/panel_finder.py | 329 | # Create a drawing object | COMMENT |
| MEDIUM | scripts/update_translation.py | 99 | '# This file is auto-generated by scripts/update_translation.py.', | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | ballontranslator/utils/py_package_manager.py | 652 | # Check if it is a corrupted package (e.g. folder exists but missing __init__.py, | COMMENT |
| LOW | ballontranslator/modules/translators/trans_deepl.py | 99 | # Check if the target language supports formality | COMMENT |
| LOW⚡ | ballontranslator/modules/textdetector/panel_finder.py | 63 | # Check if the polygon contains any of the other polygons. | COMMENT |
| LOW⚡ | ballontranslator/modules/textdetector/panel_finder.py | 66 | # Check if the polygon contains the other polygon and that the polygons | COMMENT |
| LOW⚡ | ballontranslator/modules/textdetector/panel_finder.py | 71 | # Check if rect2 is completely within rect1 | COMMENT |
| LOW | ballontranslator/modules/textdetector/panel_finder.py | 253 | # Check if range1 is before range2 | COMMENT |
| LOW | ballontranslator/modules/textdetector/panel_finder.py | 256 | # Check if range1 is after range2 | COMMENT |
| LOW | ballontranslator/modules/ocr/ocr_paddleVL_manga.py | 136 | # Set pad_token_id to avoid warning during generation | COMMENT |
| LOW | ballontranslator/modules/ocr/mit48px.py | 758 | finished = (out_idx[:, -1] == end_tok) # Check if the last token is the end token | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | ballontranslator/ui/text_engine/annotations.py | 2759 | CODE | |
| LOW | ballontranslator/ui/custom_widget/__init__.py | 16 | CODE | |
| LOW | ballontranslator/utils/package_installer.py | 102 | CODE | |
| LOW | ballontranslator/utils/download_util.py | 332 | CODE | |
| LOW | ballontranslator/utils/download_util.py | 391 | CODE | |
| LOW | ballontranslator/utils/split_text_region.py | 216 | CODE | |
| LOW | ballontranslator/modules/ocr/mit48px_ctc.py | 63 | CODE | |
| LOW | …lontranslator/modules/inpaint/flux_inpaint_pipeline.py | 617 | CODE | |
| LOW | ballontranslator/modules/inpaint/aot.py | 64 | CODE | |
| LOW | ballontranslator/modules/inpaint/ffc.py | 49 | CODE | |
| LOW | ballontranslator/modules/inpaint/ffc.py | 183 | CODE | |
| LOW | ballontranslator/modules/inpaint/ffc.py | 188 | CODE | |
| LOW | ballontranslator/modules/inpaint/ffc.py | 250 | CODE | |
| LOW | ballontranslator/modules/inpaint/lama.py | 65 | CODE | |
| LOW | ballontranslator/modules/inpaint/lama.py | 232 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …ator/ui/framelesswindow/fw_qt6/mac_frameless_window.py | 61 | self.setStayOnTop(True) | COMMENT |
| LOW | ballontranslator/modules/textdetector/ctd/textmask.py | 161 | # bx1, by1, bx2, by2 = expand_textwindow(img.shape, blk.xyxy, expand_r=16) | COMMENT |
| LOW | ballontranslator/modules/textdetector/ctd/textmask.py | 181 | # if neg_thresh: | COMMENT |
| LOW | ballontranslator/modules/textdetector/ctd/textmask.py | 201 | # tmp_merged[label_cordinates] = 255 | COMMENT |
| LOW | ballontranslator/modules/textdetector/ctd/textmask.py | 221 | # brect = cv2.boundingRect(contours[ii]) | COMMENT |
| LOW | ballontranslator/modules/textdetector/ctd/textmask.py | 241 | # best_xorpix_sum = np.inf | COMMENT |
| LOW | ballontranslator/modules/textdetector/ctd/textmask.py | 261 | # continue | COMMENT |
| LOW | ballontranslator/modules/ocr/ocr_macos.py | 101 | 'language': { | COMMENT |
| LOW | ballontranslator/modules/ocr/ocr_ppv6_onnx.py | 381 | # and triggers full kernel recompilation (~1.8 s per batch). | COMMENT |
| LOW | ballontranslator/modules/ocr/mit48px_ctc.py | 481 | textblk_lst[block_index].update_font_colors(fg_total, bg_total) | COMMENT |
| LOW | ballontranslator/modules/ocr/mit48px_ctc.py | 501 | # model = OCR(dictionary, 32) | COMMENT |
| LOW | …lontranslator/modules/inpaint/flux_inpaint_pipeline.py | 1 | # Copyright 2025 Black Forest Labs and The HuggingFace Team. All rights reserved. | COMMENT |
| LOW | ballontranslator/modules/inpaint/patch_match.py | 1 | #! /usr/bin/env python3 | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | ballontranslator/ui/text_engine/editing/widgets.py | 129 | # Stylize borders and round corners so they form a single seamless block | COMMENT |
| MEDIUM | …ntranslator/modules/translators/trans_yandex_foswly.py | 192 | # A comprehensive language map based on Google's list | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | …lontranslator/modules/inpaint/flux_inpaint_pipeline.py | 640 | Function invoked when calling the pipeline for generation. Args: image (`torch.Tensor`, `P | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tests/test_codex_auth.py | 436 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | ballontranslator/modules/llm_chat.py | 200 | dummy_api_key = 'dummy-key' | CODE |