一款专注于Ai翻译的工具,一键自动翻译RPG SLG游戏,Epub TXT小说,PDF Word MD文档,Srt Vtt Lrc字幕等等复杂长文本。
This report presents the forensic synthetic code analysis of NEKOparapa/AiNiee, a Python project with 6,107 GitHub stars. SynthScan v2.0 examined 55,748 lines of code across 277 source files, recording 788 pattern matches distributed across 14 syntactic categories. The overall adjusted score of 16.5 places this repository in the Moderate AI signal band.
The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).
Longitudinal tracking requires multiple scan runs. Once this repository is re-scanned after new commits land, this chart will visualise how the synthetic code signal evolves over time — enabling you to detect whether AI authorship is growing, stabilising, or being actively corrected by human engineers.
Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.
This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.
The scanner identified 788 distinct pattern matches across 14 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | AiNiee.py | 172 | except Exception as e: | CODE |
| LOW | ModuleFolders/Config/Config.py | 51 | except Exception as error: | CODE |
| LOW | ModuleFolders/Log/Log.py | 31 | except Exception: | CODE |
| LOW | ModuleFolders/Log/Log.py | 40 | except Exception: | CODE |
| LOW | ModuleFolders/Log/Log.py | 70 | except Exception: | CODE |
| LOW | ModuleFolders/Log/Log.py | 110 | except Exception: | CODE |
| MEDIUM | ModuleFolders/Log/Log.py | 37 | def _safe_str(value) -> str: | CODE |
| MEDIUM | ModuleFolders/Log/LogSystem.py | 312 | def flush(self): | CODE |
| MEDIUM | ModuleFolders/Log/LogSystem.py | 333 | def isatty(self): | CODE |
| MEDIUM | ModuleFolders/Log/LogSystem.py | 414 | def _excepthook(exc_type, exc_value, exc_tb) -> None: | CODE |
| LOW⚡ | ModuleFolders/Log/LogSystem.py | 258 | except Exception: | CODE |
| LOW⚡ | ModuleFolders/Log/LogSystem.py | 262 | except Exception: | CODE |
| LOW⚡ | ModuleFolders/Log/LogSystem.py | 270 | except Exception: | CODE |
| LOW⚡ | ModuleFolders/Log/LogSystem.py | 398 | except Exception: | CODE |
| LOW⚡ | ModuleFolders/Log/LogSystem.py | 406 | except Exception: | CODE |
| LOW⚡ | ModuleFolders/Log/LogSystem.py | 410 | except Exception: | CODE |
| LOW⚡ | ModuleFolders/Log/LogSystem.py | 419 | except Exception: | CODE |
| LOW | ModuleFolders/Log/LogSystem.py | 112 | except Exception: | CODE |
| LOW | ModuleFolders/Log/LogSystem.py | 209 | except Exception: | CODE |
| LOW | ModuleFolders/Log/LogSystem.py | 224 | except Exception: | CODE |
| LOW | ModuleFolders/Log/LogSystem.py | 293 | except Exception: | CODE |
| LOW | ModuleFolders/Log/LogSystem.py | 308 | except Exception: | CODE |
| LOW | ModuleFolders/Log/LogSystem.py | 315 | except Exception: | CODE |
| LOW | ModuleFolders/Log/LogSystem.py | 330 | except Exception: | CODE |
| LOW | ModuleFolders/Log/LogSystem.py | 336 | except Exception: | CODE |
| LOW | ModuleFolders/Log/LogSystem.py | 371 | except Exception: | CODE |
| LOW | ModuleFolders/Log/LogSystem.py | 432 | except Exception: | CODE |
| LOW | ModuleFolders/Log/LogSystem.py | 457 | except Exception: | CODE |
| LOW | ModuleFolders/Log/LogSystem.py | 476 | except Exception: | CODE |
| LOW | ModuleFolders/Log/LogSystem.py | 511 | except Exception as e: | CODE |
| LOW | ModuleFolders/Log/LogSystem.py | 532 | except Exception as e: | CODE |
| LOW | ModuleFolders/Service/Cache/CacheItem.py | 84 | except Exception as e: | CODE |
| LOW | ModuleFolders/Service/Cache/CacheItem.py | 118 | except Exception as e: | CODE |
| MEDIUM | ModuleFolders/Service/Cache/CacheManager.py | 656 | print(f"Error: 找不到文件 {storage_path}") | CODE |
| MEDIUM | ModuleFolders/Service/Cache/CacheManager.py | 682 | print(f"Error: 找不到文件 {storage_path}") | CODE |
| LOW | …eFolders/Service/TranslationChecker/LanguageChecker.py | 261 | except Exception as e: | CODE |
| LOW | ModuleFolders/Service/TranslationChecker/RuleChecker.py | 213 | except Exception: | CODE |
| LOW | ModuleFolders/Service/TranslationChecker/RuleChecker.py | 242 | except Exception: | CODE |
| LOW | ModuleFolders/Service/TranslationChecker/RuleChecker.py | 257 | except Exception: | CODE |
| LOW | ModuleFolders/Service/SimpleExecutor/SimpleExecutor.py | 269 | except Exception as e: | CODE |
| LOW | ModuleFolders/Service/SimpleExecutor/SimpleExecutor.py | 293 | except Exception as e: | CODE |
| LOW | ModuleFolders/Service/SimpleExecutor/SimpleExecutor.py | 438 | except Exception as e: | CODE |
| LOW | ModuleFolders/Service/SimpleExecutor/SimpleExecutor.py | 570 | except Exception as e: | CODE |
| LOW | ModuleFolders/Service/NameExtractor/NameExtractor.py | 242 | except Exception as e: | CODE |
| LOW | ModuleFolders/Service/HttpService/HttpService.py | 95 | except Exception as e: | CODE |
| LOW | ModuleFolders/Service/HttpService/HttpService.py | 293 | except Exception as e: | CODE |
| LOW | ModuleFolders/Service/HttpService/HttpService.py | 337 | except Exception as e: | CODE |
| LOW | ModuleFolders/Service/HttpService/HttpService.py | 374 | except Exception as e: | CODE |
| MEDIUM | ModuleFolders/Service/HttpService/HttpService.py | 199 | def _parse_int(value) -> int: | CODE |
| MEDIUM | ModuleFolders/Service/HttpService/HttpService.py | 350 | def send_request(): | CODE |
| LOW⚡ | ModuleFolders/Service/TaskExecutor/AnalysisTask.py | 251 | except Exception as error: | CODE |
| LOW | ModuleFolders/Service/TaskExecutor/AnalysisTask.py | 211 | except Exception as error: | CODE |
| LOW | ModuleFolders/Service/TaskExecutor/AnalysisTask.py | 358 | except Exception as error: | CODE |
| LOW | ModuleFolders/Service/TaskExecutor/AnalysisTask.py | 690 | except Exception as error: | CODE |
| LOW | ModuleFolders/Service/TaskExecutor/TaskExecutor.py | 59 | except Exception: | CODE |
| LOW | ModuleFolders/Service/TaskExecutor/TaskExecutor.py | 171 | except Exception as error: | CODE |
| LOW | ModuleFolders/Service/TaskExecutor/TaskExecutor.py | 217 | except Exception as error: | CODE |
| LOW | ModuleFolders/Service/TaskExecutor/TaskExecutor.py | 237 | except Exception as error: | CODE |
| LOW | ModuleFolders/Service/TaskExecutor/TaskExecutor.py | 282 | except Exception as error: | CODE |
| LOW | ModuleFolders/Service/TaskExecutor/TaskExecutor.py | 321 | except Exception as e: | CODE |
| 176 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | AiNiee.py | 142 | def prepare_runtime_environment() -> str: | CODE |
| LOW | ModuleFolders/Config/FilePathConfig.py | 100 | def is_windows_installer_build() -> bool: | CODE |
| LOW | ModuleFolders/Config/FilePathConfig.py | 204 | def bundled_tiktoken_cache_dir() -> Path: | CODE |
| LOW | ModuleFolders/Config/FilePathConfig.py | 259 | def default_polish_output_dir() -> Path: | CODE |
| LOW | ModuleFolders/Log/Log.py | 114 | def _gui_rows_from_rich_table(value): | CODE |
| LOW | ModuleFolders/Service/Cache/CacheManager.py | 65 | def on_manual_save_cache_requested(self, event: int, data: dict) -> None: | CODE |
| LOW | ModuleFolders/Service/Cache/CacheManager.py | 116 | def get_project_statistics_path(cls, project_id: str) -> str: | CODE |
| LOW | ModuleFolders/Service/Cache/CacheManager.py | 208 | def _write_project_cache_files(cls, project: CacheProject) -> None: | CODE |
| LOW | ModuleFolders/Service/Cache/CacheManager.py | 267 | def _build_history_entry_from_stats( | CODE |
| LOW | ModuleFolders/Service/Cache/CacheManager.py | 533 | def _reset_project_status_in_memory(self, task_mode: int) -> int: | CODE |
| LOW | ModuleFolders/Service/Cache/CacheManager.py | 671 | def update_generated_translation( | CODE |
| LOW | ModuleFolders/Service/Cache/CacheManager.py | 749 | def generate_analysis_source_chunks(self, limit_type: str, limit_count: int) -> List[List[dict]]: | CODE |
| LOW | …eFolders/Service/TranslationChecker/LanguageChecker.py | 80 | def _collect_lang_errors_from_cache(self) -> List[Dict]: | CODE |
| LOW | …eFolders/Service/TranslationChecker/LanguageChecker.py | 109 | def _build_language_issue_rows_from_results(self, results: List[Dict]) -> List[Dict]: | CODE |
| LOW | …eFolders/Service/TranslationChecker/LanguageChecker.py | 151 | def _build_language_report_rows(self, results: List[Dict]) -> List[Dict]: | CODE |
| LOW | …lders/Service/TranslationChecker/TerminologyChecker.py | 39 | def _get_project_analysis_data(self) -> Dict[str, Any]: | CODE |
| LOW | …lders/Service/TranslationChecker/TerminologyChecker.py | 61 | def _collect_merged_term_rows(self) -> List[Dict[str, str]]: | CODE |
| LOW | ModuleFolders/Service/TranslationChecker/RuleChecker.py | 36 | def _build_missing_preserve_error(self, label: str, src_detail: str) -> str: | CODE |
| LOW | ModuleFolders/Service/TranslationChecker/RuleChecker.py | 47 | def _get_project_analysis_data(self) -> Dict[str, Any]: | CODE |
| LOW | ModuleFolders/Service/TranslationChecker/RuleChecker.py | 54 | def _collect_merged_exclusion_data(self) -> List[Dict[str, str]]: | CODE |
| LOW | ModuleFolders/Service/SimpleExecutor/SimpleExecutor.py | 174 | def glossary_translation_start(self, event: int, data: dict): | CODE |
| LOW | ModuleFolders/Service/SimpleExecutor/SimpleExecutor.py | 330 | def handle_table_translation_start(self, event, data: dict): | CODE |
| LOW | ModuleFolders/Service/SimpleExecutor/SimpleExecutor.py | 335 | def process_table_translation(self, data: dict): | CODE |
| LOW | ModuleFolders/Service/SimpleExecutor/SimpleExecutor.py | 472 | def handle_table_polish_start(self, event, data: dict): | CODE |
| LOW | ModuleFolders/Service/NameExtractor/NameExtractor.py | 203 | def extract_names_from_folder(self,folder_path_str: str) -> list: | CODE |
| LOW | ModuleFolders/Service/HttpService/HttpService.py | 18 | class RequestHandler(BaseHTTPRequestHandler): | CODE |
| LOW | ModuleFolders/Service/TaskExecutor/TranslatorUtil.py | 58 | def map_language_code_to_name(language_code: str) -> str: | CODE |
| LOW | ModuleFolders/Service/TaskExecutor/TranslatorUtil.py | 82 | def map_language_name_to_code(language_name: str) -> str: | CODE |
| LOW | ModuleFolders/Service/TaskExecutor/TranslatorUtil.py | 101 | def get_language_display_names(source_lang, target_lang): | CODE |
| LOW | ModuleFolders/Service/TaskExecutor/TranslatorUtil.py | 173 | def get_source_language_for_file(source_language,target_language, language_stats) -> str: | CODE |
| LOW⚡ | ModuleFolders/Service/TaskExecutor/AnalysisTask.py | 255 | def _get_recommended_translation_language_requirement(self) -> str: | CODE |
| LOW⚡ | ModuleFolders/Service/TaskExecutor/AnalysisTask.py | 264 | def _build_first_stage_prompt(self, source_text: str) -> tuple[str, list[dict]]: | CODE |
| LOW⚡ | ModuleFolders/Service/TaskExecutor/AnalysisTask.py | 502 | def _get_candidate_occurrence_count(self, source: str, candidate_type: str) -> int: | CODE |
| LOW⚡ | ModuleFolders/Service/TaskExecutor/AnalysisTask.py | 606 | def _calculate_progress_percent(self, phase: str, current: int = 0, total: int = 0) -> int: | CODE |
| LOW⚡ | ModuleFolders/Service/TaskExecutor/AnalysisTask.py | 631 | def _execute_analysis_request( | CODE |
| LOW | ModuleFolders/Service/TaskExecutor/AnalysisTask.py | 362 | def _prepare_reduction_batches(self, first_stage_results: list) -> list: | CODE |
| LOW | ModuleFolders/Service/TaskExecutor/AnalysisTask.py | 417 | def _build_second_stage_prompt(self, batch: list) -> tuple[str, list[dict]]: | CODE |
| LOW | ModuleFolders/Service/TaskExecutor/TaskExecutor.py | 143 | def _resolve_output_source_language(self, configured_source: str | None) -> str | None: | CODE |
| LOW | ModuleFolders/Service/TaskExecutor/TaskExecutor.py | 155 | def _resolve_output_target_language(configured_target: str | None) -> str | None: | CODE |
| LOW | ModuleFolders/Service/TaskExecutor/TaskExecutor.py | 159 | def _convert_translated_text_with_opencc(self, preset: str | None) -> bool: | CODE |
| LOW | ModuleFolders/Service/TaskExecutor/TaskExecutor.py | 229 | def table_proofread_start_target(self, data: dict) -> None: | CODE |
| LOW | ModuleFolders/Service/TaskExecutor/ProofreadTask.py | 250 | def _build_single_proofread_prompt(self, item: dict) -> tuple[list[dict], str]: | CODE |
| LOW | ModuleFolders/Infrastructure/Tokener/TiktokenLoader.py | 26 | def _seed_cache_from_bundled_files(cache_dir: str, required_encodings: dict) -> None: | CODE |
| LOW | ModuleFolders/Infrastructure/Tokener/TiktokenLoader.py | 179 | def copy_cache_from_system_temp(): | CODE |
| LOW | …/Infrastructure/LLMRequester/AmazonbedrockRequester.py | 21 | def request_amazonbedrock_anthropic(self, messages, system_prompt, platform_config) -> tuple[bool, str, str, int, in | CODE |
| LOW | …lders/Infrastructure/LLMRequester/ModelConfigHelper.py | 38 | def _extract_claude_version_info(model_name: str) -> tuple[float, str]: | CODE |
| LOW | …lders/Infrastructure/LLMRequester/ModelConfigHelper.py | 83 | def get_thinking_level_options(cls, model_name: str) -> list[str]: | CODE |
| LOW | …lders/Infrastructure/LLMRequester/ModelConfigHelper.py | 95 | def get_claude_max_output_tokens(cls, model_name: str) -> int: | CODE |
| LOW | …lders/Infrastructure/LLMRequester/ModelConfigHelper.py | 132 | def get_google_max_output_tokens(cls, model_name: str) -> int: | CODE |
| LOW | …olders/Infrastructure/LLMRequester/LLMClientFactory.py | 247 | def _create_anthropic_bedrock(self, config): | CODE |
| LOW | …Folders/Infrastructure/LLMRequester/OpenaiRequester.py | 16 | def apply_platform_thinking_params(self, base_params: dict, platform_config: dict) -> dict: | CODE |
| LOW | ModuleFolders/Infrastructure/Platform/AppMetadata.py | 15 | def configure_application_metadata(app, version: str) -> None: | CODE |
| LOW | ModuleFolders/Infrastructure/Platform/RuntimeSetup.py | 29 | def prepare_working_directory(): | CODE |
| LOW | ModuleFolders/Infrastructure/Platform/RuntimeSetup.py | 71 | def _migrate_legacy_user_data() -> bool: | CODE |
| LOW | ModuleFolders/Infrastructure/Platform/RuntimeSetup.py | 118 | def _looks_like_pending_legacy_config() -> bool: | CODE |
| LOW | ModuleFolders/Infrastructure/TaskConfig/TaskConfig.py | 46 | def _normalize_project_table_rows( | CODE |
| LOW | ModuleFolders/Infrastructure/TaskConfig/TaskConfig.py | 103 | def _normalize_interface_role(self, interface_role: str | None) -> str: | CODE |
| LOW | ModuleFolders/Infrastructure/TaskConfig/TaskConfig.py | 147 | def resolve_platform_tag_for_role(self, interface_role: str | None = None) -> str | None: | CODE |
| LOW | ModuleFolders/Infrastructure/TaskConfig/TaskConfig.py | 252 | def sync_active_platform_settings(self) -> None: | CODE |
| LOW | ModuleFolders/Infrastructure/TaskConfig/TaskConfig.py | 258 | def prepare_for_active_platform(self, interface_role: str | None = None) -> None: | CODE |
| 184 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | ModuleFolders/Config/Config.py | 33 | CODE | |
| LOW | ModuleFolders/Config/Config.py | 57 | CODE | |
| LOW | ModuleFolders/Config/Config.py | 120 | CODE | |
| LOW | ModuleFolders/Log/LogSystem.py | 234 | CODE | |
| LOW | ModuleFolders/Service/Cache/CacheProject.py | 75 | CODE | |
| LOW | ModuleFolders/Service/Cache/CacheManager.py | 208 | CODE | |
| LOW | ModuleFolders/Service/Cache/CacheManager.py | 443 | CODE | |
| LOW | ModuleFolders/Service/Cache/CacheManager.py | 533 | CODE | |
| LOW | ModuleFolders/Service/Cache/CacheManager.py | 651 | CODE | |
| LOW | ModuleFolders/Service/Cache/CacheManager.py | 692 | CODE | |
| LOW | ModuleFolders/Service/Cache/CacheManager.py | 734 | CODE | |
| LOW | ModuleFolders/Service/Cache/BaseCache.py | 25 | CODE | |
| LOW | ModuleFolders/Service/Cache/BaseCache.py | 64 | CODE | |
| LOW | …eFolders/Service/TranslationChecker/LanguageChecker.py | 109 | CODE | |
| LOW | …eFolders/Service/TranslationChecker/LanguageChecker.py | 174 | CODE | |
| LOW | …eFolders/Service/TranslationChecker/LanguageChecker.py | 309 | CODE | |
| LOW | …eFolders/Service/TranslationChecker/LanguageChecker.py | 459 | CODE | |
| LOW | …lders/Service/TranslationChecker/TerminologyChecker.py | 185 | CODE | |
| LOW | ModuleFolders/Service/TranslationChecker/RuleChecker.py | 123 | CODE | |
| LOW | ModuleFolders/Service/TranslationChecker/RuleChecker.py | 205 | CODE | |
| LOW | ModuleFolders/Service/TranslationChecker/RuleChecker.py | 227 | CODE | |
| LOW | ModuleFolders/Service/TranslationChecker/RuleChecker.py | 246 | CODE | |
| LOW | ModuleFolders/Service/SimpleExecutor/SimpleExecutor.py | 41 | CODE | |
| LOW | ModuleFolders/Service/SimpleExecutor/SimpleExecutor.py | 179 | CODE | |
| LOW | ModuleFolders/Service/SimpleExecutor/SimpleExecutor.py | 335 | CODE | |
| LOW | ModuleFolders/Service/SimpleExecutor/SimpleExecutor.py | 477 | CODE | |
| LOW | ModuleFolders/Service/NameExtractor/NameExtractor.py | 12 | CODE | |
| LOW | ModuleFolders/Service/NameExtractor/NameExtractor.py | 55 | CODE | |
| LOW | ModuleFolders/Service/NameExtractor/NameExtractor.py | 73 | CODE | |
| LOW | ModuleFolders/Service/NameExtractor/NameExtractor.py | 99 | CODE | |
| LOW | ModuleFolders/Service/NameExtractor/NameExtractor.py | 203 | CODE | |
| LOW | ModuleFolders/Service/HttpService/HttpService.py | 25 | CODE | |
| LOW | ModuleFolders/Service/HttpService/HttpService.py | 109 | CODE | |
| LOW | ModuleFolders/Service/TaskExecutor/TranslatorUtil.py | 136 | CODE | |
| LOW | ModuleFolders/Service/TaskExecutor/AnalysisTask.py | 47 | CODE | |
| LOW | ModuleFolders/Service/TaskExecutor/AnalysisTask.py | 514 | CODE | |
| LOW | ModuleFolders/Service/TaskExecutor/AnalysisTask.py | 631 | CODE | |
| LOW | ModuleFolders/Service/TaskExecutor/TaskExecutor.py | 16 | CODE | |
| LOW | ModuleFolders/Service/TaskExecutor/TaskExecutor.py | 352 | CODE | |
| LOW | ModuleFolders/Service/TaskExecutor/TaskExecutor.py | 545 | CODE | |
| LOW | ModuleFolders/Service/TaskExecutor/ProofreadTask.py | 24 | CODE | |
| LOW | ModuleFolders/Infrastructure/Tokener/BabeldocPatch.py | 20 | CODE | |
| LOW | ModuleFolders/Infrastructure/Tokener/BabeldocPatch.py | 37 | CODE | |
| LOW | ModuleFolders/Infrastructure/Tokener/TiktokenLoader.py | 72 | CODE | |
| LOW | …lders/Infrastructure/LLMRequester/ModelConfigHelper.py | 95 | CODE | |
| LOW | …lders/Infrastructure/LLMRequester/LocalLLMRequester.py | 12 | CODE | |
| LOW | …Folders/Infrastructure/LLMRequester/GoogleRequester.py | 15 | CODE | |
| LOW | …uleFolders/Infrastructure/LLMRequester/LLMRequester.py | 14 | CODE | |
| LOW | …ders/Infrastructure/LLMRequester/AnthropicRequester.py | 29 | CODE | |
| LOW | …eFolders/Domain/ResponseExtractor/ResponseExtractor.py | 131 | CODE | |
| LOW | ModuleFolders/Domain/FileOutputer/DirectoryWriter.py | 25 | CODE | |
| LOW | ModuleFolders/Domain/FileOutputer/PptxWriter.py | 20 | CODE | |
| LOW | ModuleFolders/Domain/FileOutputer/CsvWriter.py | 19 | CODE | |
| LOW | ModuleFolders/Domain/FileOutputer/FileOutputer.py | 180 | CODE | |
| LOW | ModuleFolders/Domain/FileOutputer/RenpyWriter.py | 99 | CODE | |
| LOW | ModuleFolders/Domain/FileOutputer/AssWriter.py | 39 | CODE | |
| LOW | ModuleFolders/Domain/FileOutputer/TransWriter.py | 17 | CODE | |
| LOW | ModuleFolders/Domain/FileOutputer/XlsxWriter.py | 24 | CODE | |
| LOW | ModuleFolders/Domain/FileOutputer/VntWriter.py | 34 | CODE | |
| LOW | ModuleFolders/Domain/FileOutputer/VntWriter.py | 81 | CODE | |
| 93 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | ModuleFolders/Service/Cache/CacheItem.py | 6 | # ============================================================ | COMMENT |
| MEDIUM | ModuleFolders/Service/Cache/CacheItem.py | 8 | # ============================================================ | COMMENT |
| MEDIUM⚡ | ModuleFolders/Service/TaskExecutor/AnalysisTask.py | 333 | # ======================================================================== | COMMENT |
| MEDIUM⚡ | ModuleFolders/Service/TaskExecutor/AnalysisTask.py | 335 | # ======================================================================== | COMMENT |
| MEDIUM⚡ | ModuleFolders/Service/TaskExecutor/AnalysisTask.py | 498 | # ======================================================================== | COMMENT |
| MEDIUM⚡ | ModuleFolders/Service/TaskExecutor/AnalysisTask.py | 500 | # ======================================================================== | COMMENT |
| MEDIUM⚡ | ModuleFolders/Service/TaskExecutor/AnalysisTask.py | 602 | # ======================================================================== | COMMENT |
| MEDIUM⚡ | ModuleFolders/Service/TaskExecutor/AnalysisTask.py | 604 | # ======================================================================== | COMMENT |
| MEDIUM⚡ | ModuleFolders/Service/TaskExecutor/AnalysisTask.py | 627 | # --------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | ModuleFolders/Service/TaskExecutor/AnalysisTask.py | 629 | # --------------------------------------------------------- | COMMENT |
| MEDIUM | ModuleFolders/Service/TaskExecutor/AnalysisTask.py | 43 | # ======================================================================== | COMMENT |
| MEDIUM | ModuleFolders/Service/TaskExecutor/AnalysisTask.py | 45 | # ======================================================================== | COMMENT |
| MEDIUM | ModuleFolders/Service/TaskExecutor/AnalysisTask.py | 229 | # ======================================================================== | COMMENT |
| MEDIUM | ModuleFolders/Service/TaskExecutor/AnalysisTask.py | 231 | # ======================================================================== | COMMENT |
| MEDIUM⚡ | ModuleFolders/Domain/FileOutputer/FileOutputer.py | 13 | # ---------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | ModuleFolders/Domain/FileOutputer/FileOutputer.py | 15 | # ---------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | ModuleFolders/Domain/FileOutputer/FileOutputer.py | 22 | # ---------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | ModuleFolders/Domain/FileReader/FileReader.py | 15 | # ---------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | ModuleFolders/Domain/FileReader/FileReader.py | 17 | # ---------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | ModuleFolders/Domain/FileReader/FileReader.py | 24 | # ---------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | UserInterface/EditView/Analysis/AnalysisPage.py | 2089 | # ========================== | COMMENT |
| MEDIUM⚡ | UserInterface/EditView/Analysis/AnalysisPage.py | 2091 | # ========================== | COMMENT |
| MEDIUM | UserInterface/EditView/Analysis/AnalysisPage.py | 120 | # ========================== | COMMENT |
| MEDIUM | UserInterface/EditView/Analysis/AnalysisPage.py | 122 | # ========================== | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | ModuleFolders/Service/Cache/CacheManager.py | 651 | def update_item_text(self, storage_path: str, text_index: int, field_name: str, new_text: str) -> None: | CODE |
| LOW | ModuleFolders/Service/Cache/CacheManager.py | 787 | def set_analysis_data(self, analysis_data: dict) -> None: | CODE |
| LOW | ModuleFolders/Service/TaskExecutor/TranslatorTask.py | 58 | def set_items(self, items: list[CacheItem]) -> None: | CODE |
| LOW | ModuleFolders/Service/TaskExecutor/TranslatorTask.py | 62 | def set_previous_items(self, previous_items: list[CacheItem]) -> None: | CODE |
| LOW | ModuleFolders/Service/TaskExecutor/PolisherTask.py | 36 | def set_items(self, items: list[CacheItem]) -> None: | CODE |
| LOW | ModuleFolders/Service/TaskExecutor/PolisherTask.py | 39 | def set_previous_items(self, previous_items: list[CacheItem]) -> None: | CODE |
| LOW | ModuleFolders/Service/TaskExecutor/TaskExecutor.py | 122 | def _set_active_executor(self, executor: concurrent.futures.ThreadPoolExecutor) -> None: | CODE |
| LOW | …olders/Infrastructure/RequestLimiter/RequestLimiter.py | 18 | def set_limit(self, rpm_limit: int) -> None: | CODE |
| LOW | UserInterface/EditView/EditViewPage.py | 64 | def set_current_step(self, route_key: str) -> None: | CODE |
| LOW | UserInterface/EditView/Analysis/AnalysisPage.py | 978 | def _set_filter_for_view(self, view_name: str, filter_value) -> None: | CODE |
| LOW | UserInterface/EditView/Analysis/AnalysisPage.py | 1929 | def _update_action_buttons(self, running: bool | None = None) -> None: | CODE |
| LOW | UserInterface/EditView/Translation/MonitoringPage.py | 168 | def update_time(self, event: int, data: dict) -> None: | CODE |
| LOW | UserInterface/EditView/Translation/MonitoringPage.py | 199 | def update_line(self, event: int, data: dict) -> None: | CODE |
| LOW | UserInterface/EditView/Translation/MonitoringPage.py | 237 | def update_task(self, event: int, data: dict) -> None: | CODE |
| LOW | UserInterface/EditView/Translation/MonitoringPage.py | 247 | def update_token(self, event: int, data: dict) -> None: | CODE |
| LOW | UserInterface/EditView/Translation/MonitoringPage.py | 272 | def update_stability(self, event: int, data: dict) -> None: | CODE |
| LOW | UserInterface/EditView/Translation/MonitoringPage.py | 296 | def update_status(self, event: int, data: dict) -> None: | CODE |
| LOW | UserInterface/EditView/Translation/BottomCommandBar.py | 106 | def update_task_action_button(self, mode: str | None) -> None: | CODE |
| LOW | UserInterface/EditView/Translation/BottomCommandBar.py | 257 | def _update_reset_button_state(self) -> None: | CODE |
| LOW | UserInterface/EditView/Proofreading/ProofreadingPage.py | 133 | def update_tree(self, hierarchy: dict) -> None: | CODE |
| LOW | UserInterface/EditView/Proofreading/ProofreadingPage.py | 190 | def _update_action_state(self) -> None: | CODE |
| LOW | …terface/EditView/Proofreading/Layout/NavigationCard.py | 33 | def update_tree(self, hierarchy: dict) -> None: | CODE |
| LOW | …nterface/EditView/Proofreading/Table/BasicTablePage.py | 120 | def _update_status_cell(self, row: int, translation_status: int) -> None: | CODE |
| LOW⚡ | UserInterface/EditView/Startup/StartupPage.py | 182 | def _set_history_controls_enabled(self, enabled: bool) -> None: | CODE |
| LOW⚡ | UserInterface/Widget/PlainTextEditCard.py | 64 | def set_text(self, text: str) -> None: | CODE |
| LOW⚡ | UserInterface/Widget/PlainTextEditCard.py | 68 | def set_fixed_width(self, width: int) -> None: | CODE |
| LOW⚡ | UserInterface/Widget/PlainTextEditCard.py | 72 | def set_placeholder_text(self, text: str) -> None: | CODE |
| LOW | UserInterface/Widget/GroupCard.py | 40 | def set_title(self, title: str) -> None: | CODE |
| LOW | UserInterface/Widget/GroupCard.py | 43 | def set_description(self, description: str) -> None: | CODE |
| LOW⚡ | UserInterface/Widget/SliderCard.py | 50 | def set_text(self, text:str) -> None: | CODE |
| LOW⚡ | UserInterface/Widget/SliderCard.py | 53 | def set_value(self, value: int) -> None: | CODE |
| LOW⚡ | UserInterface/Widget/SliderCard.py | 56 | def set_range(self, min: int, max: int) -> None: | CODE |
| LOW | UserInterface/Widget/SegmentedControl.py | 73 | def set_current_key(self, key: str) -> None: | CODE |
| LOW | UserInterface/Widget/SegmentedControl.py | 118 | def _update_text_colors(self) -> None: | CODE |
| LOW | UserInterface/Widget/FlowCard.py | 61 | def set_title(self, title: str) -> None: | CODE |
| LOW | UserInterface/Widget/FlowCard.py | 64 | def set_description(self, description: str) -> None: | CODE |
| LOW | UserInterface/Widget/EditableComboBoxCard.py | 71 | def set_items(self, items: list) -> None: | CODE |
| LOW⚡ | UserInterface/Widget/EditableComboBoxCard.py | 85 | def set_current_index(self, index) -> None: | CODE |
| LOW⚡ | UserInterface/Widget/EditableComboBoxCard.py | 89 | def set_fixed_width(self, width: int) -> None: | CODE |
| LOW⚡ | UserInterface/Widget/EditableComboBoxCard.py | 93 | def set_placeholder_text(self, text: str) -> None: | CODE |
| LOW | UserInterface/Widget/EmptyCard.py | 36 | def set_title(self, title: str) -> None: | CODE |
| LOW | UserInterface/Widget/EmptyCard.py | 39 | def set_description(self, description: str) -> None: | CODE |
| LOW | UserInterface/Widget/LineEditMessageBox.py | 40 | def set_placeholder_text(self, text: str) -> None: | CODE |
| LOW⚡ | UserInterface/Widget/LineEditCard.py | 63 | def set_text(self, text: str) -> None: | CODE |
| LOW⚡ | UserInterface/Widget/LineEditCard.py | 67 | def set_fixed_width(self, width: int) -> None: | CODE |
| LOW⚡ | UserInterface/Widget/LineEditCard.py | 71 | def set_placeholder_text(self, text: str) -> None: | CODE |
| LOW | UserInterface/Widget/ComboBoxCard.py | 45 | def set_items(self, items: list) -> None: | CODE |
| LOW | UserInterface/Widget/ComboBoxCard.py | 55 | def set_current_index(self, index) -> None: | CODE |
| LOW | UserInterface/Widget/SpinCard.py | 44 | def set_range(self, min, max) -> None: | CODE |
| LOW | UserInterface/Widget/SpinCard.py | 47 | def set_value(self, value) -> None: | CODE |
| LOW⚡ | UserInterface/Widget/PushButtonCard.py | 49 | def set_title(self, title: str) -> None: | CODE |
| LOW⚡ | UserInterface/Widget/PushButtonCard.py | 52 | def set_description(self, description: str) -> None: | CODE |
| LOW⚡ | UserInterface/Widget/PushButtonCard.py | 55 | def set_text(self, text: str) -> None: | CODE |
| LOW⚡ | UserInterface/Widget/PushButtonCard.py | 58 | def set_icon(self, icon: str) -> None: | CODE |
| LOW | UserInterface/Platform/AddAPIDialog.py | 65 | def _set_adaptive_size(self) -> None: | CODE |
| LOW | UserInterface/Platform/AddAPIDialog.py | 258 | def _set_page(self, page_index: int) -> None: | CODE |
| LOW | …gs/TranslationSettings/TranslationExamplePromptPage.py | 59 | def update_table(self) -> None: | CODE |
| LOW⚡ | …ings/TranslationSettings/CharacterizationPromptPage.py | 88 | def update_table(self) -> None: | CODE |
| LOW⚡ | …ings/TranslationSettings/CharacterizationPromptPage.py | 94 | def _update_table_rows(self, rows: list[dict] | None) -> None: | CODE |
| LOW | …ings/TranslationSettings/CharacterizationPromptPage.py | 115 | def _set_row_highlight(self, row_index: int, highlighted: bool) -> None: | CODE |
| 7 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | AiNiee.py | 1 | # | COMMENT |
| LOW | …uleFolders/Domain/TextSymbolRepair/TextSymbolRepair.py | 41 | trailing_whitespace = trailing_whitespace_match.group(1) if trailing_whitespace_match else "" | COMMENT |
| LOW | …uleFolders/Domain/TextSymbolRepair/TextSymbolRepair.py | 61 | #"source_text": "「息子さんが結婚したの。それはおめでとうございます」乾杯。「めでたいものか、ちくしょう」「まあまあ」乾杯。「俺が育てたのに自分で勝手に育ったようなツラをする」「親はなくても子は育つ」「俺は居 | COMMENT |
| LOW | ModuleFolders/Domain/PromptBuilder/PromptBuilder.py | 321 | # ex_dict = { | COMMENT |
| LOW | ModuleFolders/Domain/FileReader/BaseReader.py | 121 | processed_items = 0 | COMMENT |
| LOW | ModuleFolders/Domain/FileReader/ReaderUtil.py | 401 | # Args: | COMMENT |
| LOW | ModuleFolders/Domain/FileReader/ReaderUtil.py | 421 | # results.append((['no_text'], -1.0, -1.0)) | COMMENT |
| LOW | ModuleFolders/Domain/FileReader/ReaderUtil.py | 441 | # if valid_texts: | COMMENT |
| LOW | ModuleFolders/Domain/FileReader/ReaderUtil.py | 461 | # # 如果有至少两个识别结果,则使用最高置信度减去第二个 | COMMENT |
| LOW | ModuleFolders/Domain/FileReader/ReaderUtil.py | 481 | # items: 当前处理的缓存项列表 | COMMENT |
| LOW | ModuleFolders/Domain/FileReader/ReaderUtil.py | 501 | # if is_symbols_only(cleaned_text): | COMMENT |
| LOW | ModuleFolders/Domain/FileReader/ReaderUtil.py | 521 | # # 计算置信度 - 从percent转换为0-1范围的概率 | COMMENT |
| LOW | …lders/Domain/FileReader/unused/LanguageDetectorONNX.py | 1 | # # 辅助函数:Softmax | COMMENT |
| LOW | …lders/Domain/FileReader/unused/LanguageDetectorONNX.py | 21 | # _instance = None | COMMENT |
| LOW | …lders/Domain/FileReader/unused/LanguageDetectorONNX.py | 41 | # self.onnx_model_path = os.path.join(model_path, "onnx", "model_int8.onnx") | COMMENT |
| LOW | …lders/Domain/FileReader/unused/LanguageDetectorONNX.py | 61 | # # rich.print(f"[[green]INFO[/]] Tokenizer loaded from {self.tokenizer_path}") | COMMENT |
| LOW | …lders/Domain/FileReader/unused/LanguageDetectorONNX.py | 81 | # rich.print(f"[[red]ERROR[/]] 加载 ONNX 语言检测器失败: {e}") | COMMENT |
| LOW | …lders/Domain/FileReader/unused/LanguageDetectorONNX.py | 101 | # cls._instance.tokenizer = None | COMMENT |
| LOW | …lders/Domain/FileReader/unused/LanguageDetectorONNX.py | 121 | # results = self.predict_batch([text]) | COMMENT |
| LOW | …lders/Domain/FileReader/unused/LanguageDetectorONNX.py | 141 | # # 检查 _instance 是否还存在,如果 release 后实例被设为 None,直接访问 self 上的属性会出错 | COMMENT |
| LOW | …lders/Domain/FileReader/unused/LanguageDetectorONNX.py | 161 | # # 2. 准备 ONNX Runtime 输入 (确保 int64 类型) | COMMENT |
| LOW | …lders/Domain/FileReader/unused/LanguageDetectorONNX.py | 181 | # predicted_class_id = np.argmax(probabilities) | COMMENT |
| LOW | …lders/Domain/FileReader/unused/LanguageDetectorONNX.py | 201 | # # 排序并过滤 | COMMENT |
| LOW | …lders/Domain/FileReader/unused/LanguageDetectorONNX.py | 221 | # # 对于批处理错误,你可能想返回一个列表,其中每个失败的项都是 None 或错误标记 | COMMENT |
| LOW | StevExtraction/scratchpad.py | 21 | # test.InputFromJson(path=r'res/TrsData.json') | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | ModuleFolders/Infrastructure/Tokener/Tokener.py | 2 | CODE | |
| LOW | ModuleFolders/Infrastructure/Tokener/Tokener.py | 3 | CODE | |
| LOW | ModuleFolders/Infrastructure/Platform/PlatformPaths.py | 3 | CODE | |
| LOW | ModuleFolders/Domain/FileOutputer/DirectoryWriter.py | 4 | CODE | |
| LOW | ModuleFolders/Domain/FileOutputer/FileOutputer.py | 10 | CODE | |
| LOW | ModuleFolders/Domain/FileOutputer/AssWriter.py | 3 | CODE | |
| LOW | ModuleFolders/Domain/FileOutputer/PoWriter.py | 5 | CODE | |
| LOW | …Folders/Domain/PromptBuilder/PromptBuilderPolishing.py | 7 | CODE | |
| LOW | ModuleFolders/Domain/FileReader/FileReader.py | 12 | CODE | |
| LOW | OldPlugin/IOPlugins/CustomRegistry.py | 7 | CODE | |
| LOW | OldPlugin/IOPlugins/CustomRegistry.py | 8 | CODE | |
| LOW | UserInterface/EditView/Analysis/AnalysisPage.py | 2 | CODE | |
| LOW | …Interface/EditView/Translation/LanguageSettingsCard.py | 3 | CODE | |
| LOW | UserInterface/Platform/ArgsEditPage.py | 5 | CODE | |
| LOW | StevExtraction/scratchpad.py | 4 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | ModuleFolders/Service/TranslationChecker/RuleChecker.py | 181 | if rules_config.get("placeholder"): | CODE |
| LOW⚡ | ModuleFolders/Service/TaskExecutor/AnalysisTask.py | 326 | {"role": "user", "content": fake_user}, | CODE |
| LOW⚡ | ModuleFolders/Service/TaskExecutor/AnalysisTask.py | 491 | {"role": "user", "content": fake_user}, | CODE |
| LOW | ModuleFolders/Service/TaskExecutor/AnalysisTask.py | 288 | fake_user = ( | CODE |
| LOW | ModuleFolders/Service/TaskExecutor/AnalysisTask.py | 465 | fake_user = ( | CODE |
| LOW | ModuleFolders/Domain/ResponseChecker/AdvancedChecks.py | 81 | 每个占位符字典包含 "placeholder" (占位符字符串) 键。 | STRING |
| LOW | ModuleFolders/Domain/ResponseChecker/AdvancedChecks.py | 108 | placeholder = placeholder_data.get("placeholder") | CODE |
| LOW | ModuleFolders/Domain/ResponseChecker/AdvancedChecks.py | 110 | # 确保 'placeholder' 键存在且值是字符串 | COMMENT |
| LOW | ModuleFolders/Domain/TextProcessor/TextProcessor.py | 511 | "placeholder": placeholder_val, | CODE |
| LOW | ModuleFolders/Domain/TextProcessor/TextProcessor.py | 544 | placeholder_text = item.get("placeholder") | CODE |
| LOW⚡ | UserInterface/EditView/Analysis/AnalysisPage.py | 2099 | if self._contains_category_hint(combined_hint, self.NON_TRANSLATE_PLACEHOLDER, "占位", "placeholder", "%s", "%d", | CODE |
| LOW | …ace/EditView/Proofreading/RuleCheck/RuleCheckDialog.py | 127 | "placeholder": self.check_placeholder.isChecked(), | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …uleFolders/Domain/TextSymbolRepair/TextSymbolRepair.py | 168 | CODE | |
| LOW | ModuleFolders/Domain/ResponseChecker/AdvancedChecks.py | 286 | CODE | |
| LOW | ModuleFolders/Domain/PromptBuilder/PromptBuilder.py | 275 | CODE | |
| LOW | …uleFolders/Domain/PromptBuilder/PromptBuilderSakura.py | 33 | CODE | |
| LOW | …uleFolders/Domain/PromptBuilder/PromptBuilderSakura.py | 43 | CODE | |
| LOW | UserInterface/Widget/ProgressRingCard.py | 10 | CODE | |
| LOW | UserInterface/Widget/CombinedLineCard.py | 6 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | …duleFolders/Domain/PromptBuilder/PromptBuilderLocal.py | 436 | # 保留原签名,当前本地模型链路不使用上文 few-shot。 | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | Tools/pyinstall.py | 12 | #"--onefile", # Create a one-file bundled executable. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | ModuleFolders/Domain/FileReader/ParatranzReader.py | 22 | "context": null, | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | ModuleFolders/Domain/ResponseChecker/AdvancedChecks.py | 390 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …olders/Infrastructure/LLMRequester/LLMClientFactory.py | 34 | def handle_request(self, request: httpx.Request) -> httpx.Response: | CODE |