《Designing Data-Intensive Application》DDIA 第一版 / 第二版 中文翻译
This report summarizes scanner evidence for Vonng/ddia, a Python project with 23,888 GitHub stars. SynthScan examined 85,856 lines of code across 167 source files, recording 118 pattern matches distributed across 9 syntactic categories. The legacy adjusted pattern signal is 2.0 (Low pattern signal); it is not an authorship estimate.
Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.
Use each vector to guide manual verification of the underlying findings.
Payload schema: 1.0.0 · Engine: 2.0.0 · Scoring: heuristic-density-v1 · Scan date: 2026-10-31.
Can maintainers explain intent, assumptions, and trade-offs? 105 finding(s).
Are imports declared and package/API names verified? 8 finding(s).
Are wrappers, guards, and repeated structures necessary? 83 finding(s).
Which changes need focused human review? 118 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 118 distinct pattern matches across 9 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 | bin/toc.py | 15 | def extract_front_matter_title(content): | CODE |
| LOW | bin/zh-tw.py | 13 | def convert_preserving_external_urls(converter, text): | CODE |
| LOW | bin/tests/test_epub_preprocess.py | 16 | def test_custom_title_and_entire_quoted_body_are_preserved(self): | CODE |
| LOW | bin/tests/test_epub_preprocess.py | 34 | def test_all_supported_markers_have_titles_without_custom_title(self): | CODE |
| LOW | bin/tests/test_epub_preprocess.py | 46 | def test_nested_quote_and_crlf_keep_their_container(self): | CODE |
| LOW | bin/tests/test_epub_preprocess.py | 52 | def test_fences_keep_alert_literals_and_only_close_with_matching_delimiter(self): | CODE |
| LOW | bin/tests/test_epub_preprocess.py | 72 | def test_quoted_and_list_fences_protect_literals(self): | CODE |
| LOW⚡ | bin/tests/test_epub_preprocess.py | 85 | def test_quoted_fence_ends_when_its_quote_container_ends(self): | CODE |
| LOW⚡ | bin/tests/test_epub_preprocess.py | 92 | def test_list_then_quote_fence_protects_literal_alerts(self): | CODE |
| LOW⚡ | bin/tests/test_epub_preprocess.py | 99 | def test_list_fence_ends_when_its_list_container_ends(self): | CODE |
| LOW⚡ | bin/tests/test_epub_preprocess.py | 106 | def test_indented_literal_fence_does_not_hide_a_later_alert(self): | CODE |
| LOW⚡ | bin/tests/test_epub_preprocess.py | 113 | def test_quoted_indented_code_does_not_hide_a_later_alert(self): | CODE |
| LOW⚡ | bin/tests/test_epub_preprocess.py | 120 | def test_unknown_marker_and_indented_code_are_untouched(self): | CODE |
| LOW⚡ | bin/tests/test_epub_preprocess.py | 124 | def test_document_conversion_preserves_note_content_and_normal_link_rules(self): | CODE |
| LOW⚡ | bin/tests/test_emphasis_style.py | 16 | def test_star_bullet_padding_survives_chinese_punctuation(self): | CODE |
| LOW⚡ | bin/tests/test_emphasis_style.py | 24 | def test_quoted_nested_lists_keep_markers_and_normalize_content(self): | CODE |
| LOW⚡ | bin/tests/test_emphasis_style.py | 31 | def test_bullet_padding_and_inline_code_are_preserved(self): | CODE |
| LOW⚡ | bin/tests/test_emphasis_style.py | 38 | def test_fenced_code_and_links_keep_their_syntax(self): | CODE |
| LOW⚡ | bin/tests/test_emphasis_style.py | 44 | def test_valid_prose_spacing_and_strong_mode_are_unchanged(self): | CODE |
| LOW | bin/tests/test_emphasis_style.py | 55 | def test_normalization_is_idempotent(self): | CODE |
| LOW | bin/tests/test_translation_checks.py | 39 | def test_complete_current_metadata_passes_all_fourteen_chapters(self): | CODE |
| LOW | bin/tests/test_translation_checks.py | 45 | def test_missing_xref_target_and_wrong_type_or_number_fail(self): | CODE |
| LOW⚡ | bin/tests/test_translation_checks.py | 56 | def test_generic_xref_resolves_without_a_fixed_count(self): | CODE |
| LOW⚡ | bin/tests/test_translation_checks.py | 61 | def test_corrupt_example_number_is_rejected(self): | CODE |
| LOW⚡ | bin/tests/test_translation_checks.py | 66 | def test_nested_example_heading_matches_a_numbered_container(self): | CODE |
| LOW⚡ | bin/tests/test_translation_checks.py | 71 | def test_line_leading_reference_fails_without_hiding_intended_citation(self): | CODE |
| LOW⚡ | bin/tests/test_translation_checks.py | 79 | def test_inline_colon_citation_and_tail_definition_are_valid(self): | CODE |
| LOW⚡ | bin/tests/test_translation_checks.py | 84 | def test_shared_title_links_are_checked_but_description_is_preserved(self): | CODE |
| LOW⚡ | bin/tests/test_translation_checks.py | 93 | def test_same_target_descriptive_chapter_label_is_not_forced_to_title(self): | CODE |
| LOW⚡ | bin/tests/test_translation_checks.py | 98 | def test_invalid_internal_link_and_missing_image_are_rejected(self): | CODE |
| LOW⚡ | bin/tests/test_translation_checks.py | 104 | def test_other_language_root_is_a_legal_entry(self): | CODE |
| LOW⚡ | bin/tests/test_translation_checks.py | 108 | def test_fenced_and_inline_literal_links_are_not_targets(self): | CODE |
| LOW⚡ | bin/tests/test_translation_checks.py | 113 | def test_bibliography_corruption_is_not_hidden_by_url_exceptions(self): | CODE |
| LOW⚡ | bin/tests/test_translation_checks.py | 118 | def test_reviewed_index_labels_align_by_bullet_not_file_line(self): | CODE |
| LOW⚡ | bin/tests/test_rendered_links.py | 24 | def test_existing_fragment_and_same_site_absolute_url_pass(self): | CODE |
| LOW⚡ | bin/tests/test_rendered_links.py | 28 | def test_missing_fragment_and_resource_fail(self): | CODE |
| LOW⚡ | bin/tests/test_rendered_links.py | 33 | def test_cached_generated_destination_does_not_mutate_source_iteration(self): | CODE |
| LOW⚡ | bin/tests/test_rendered_links.py | 42 | def test_default_scope_skips_other_editions_but_all_scope_checks_them(self): | CODE |
| LOW⚡ | bin/tests/test_rendered_links.py | 47 | def test_missing_build_fails_instead_of_reporting_empty_success(self): | CODE |
| LOW⚡ | bin/tests/test_rendered_links.py | 51 | def test_second_edition_checks_generated_pages_and_old_edition_destinations(self): | CODE |
| LOW | bin/tests/test_rendered_links.py | 69 | def test_all_scope_checks_first_edition_heading_and_figure_links_in_print(self): | CODE |
| LOW⚡ | bin/tests/test_tw_conversion.py | 56 | def test_markdown_url_does_not_freeze_the_following_chinese(self): | CODE |
| LOW⚡ | bin/tests/test_tw_conversion.py | 62 | def test_balanced_url_parentheses_and_autolinks_remain_literal(self): | CODE |
| LOW⚡ | bin/tests/test_tw_conversion.py | 69 | def test_local_routes_keep_trailing_slashes_and_external_paths(self): | CODE |
| LOW⚡ | bin/tests/test_tw_conversion.py | 75 | def test_reference_destination_and_title_are_separate(self): | CODE |
| LOW⚡ | bin/tests/test_tw_conversion.py | 80 | def test_code_and_identifiers_preserve_original_bytes(self): | CODE |
| LOW⚡ | bin/tests/test_tw_conversion.py | 89 | def test_multiple_backtick_code_can_contain_shorter_backticks(self): | CODE |
| LOW⚡ | bin/tests/test_tw_conversion.py | 93 | def test_definition_list_prose_can_begin_with_a_latin_acronym(self): | CODE |
| LOW⚡ | bin/tests/test_tw_conversion.py | 100 | def test_shortcode_only_translates_caption_not_parameter_identity(self): | CODE |
| LOW⚡ | bin/tests/test_tw_conversion.py | 106 | def test_table_attributes_only_translate_the_visible_caption(self): | CODE |
| LOW⚡ | bin/tests/test_tw_conversion.py | 111 | def test_database_join_does_not_change_network_or_graph_connections(self): | CODE |
| LOW⚡ | bin/tests/test_tw_conversion.py | 116 | def test_item_override_does_not_change_software_project(self): | CODE |
| LOW⚡ | bin/tests/test_tw_conversion.py | 121 | def test_scale_extension_does_not_change_real_software_extension(self): | CODE |
| LOW⚡ | bin/tests/test_tw_conversion.py | 126 | def test_operator_is_distinct_from_operand_and_kubernetes_operator(self): | CODE |
| LOW⚡ | bin/tests/test_tw_conversion.py | 133 | def test_historical_pr_titles_preserve_wrong_and_correct_spellings(self): | CODE |
| LOW⚡ | bin/tests/test_tw_conversion.py | 139 | def test_old_automatic_heading_alias_and_chinese_explicit_ids_survive(self): | CODE |
| LOW⚡ | bin/tests/test_tw_conversion.py | 147 | def test_fragment_override_changes_only_the_reviewed_component(self): | CODE |
| LOW⚡ | bin/tests/test_tw_conversion.py | 153 | def test_expired_and_conflicting_overrides_are_rejected(self): | CODE |
| LOW | bin/tests/test_tw_conversion.py | 164 | def test_component_counts_cannot_hide_a_missing_repair(self): | CODE |
| LOW | bin/tests/test_tw_conversion.py | 182 | def test_check_is_read_only_and_detects_stale_output(self): | CODE |
| 18 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | bin/emphasis-style.py | 110 | CODE | |
| LOW | bin/toc.py | 15 | CODE | |
| LOW | bin/toc.py | 78 | CODE | |
| LOW | bin/toc.py | 132 | CODE | |
| LOW | bin/toc.py | 161 | CODE | |
| LOW | bin/toc.py | 185 | CODE | |
| LOW | bin/check-rendered-links.py | 54 | CODE | |
| LOW | bin/preprocess-epub.py | 207 | CODE | |
| LOW | bin/preprocess-epub.py | 236 | CODE | |
| LOW | bin/preprocess-epub.py | 255 | CODE | |
| LOW | bin/check-translation.py | 245 | CODE | |
| LOW | bin/check-epub.py | 36 | CODE | |
| LOW | bin/zh-tw.py | 166 | CODE | |
| LOW | bin/zh-tw.py | 284 | CODE | |
| LOW | bin/zh-tw.py | 212 | CODE | |
| LOW | bin/repository-cards/update.py | 46 | CODE | |
| LOW | bin/repository-cards/update.py | 152 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | content/en/ch10.md | 170 | like in the more complex example shown in [Figure 10-4](/en/ch10#fig_consistency_linearizability_3). In this example we | CODE |
| HIGH | content/en/ch7.md | 206 | [Figure 7-2](/en/ch7#fig_sharding_encyclopedia). In this example, an entry’s partition key is its title. If you want | CODE |
| HIGH | content/en/ch12.md | 582 | [Figure 12-4](/en/ch12#fig_stream_write_order). In this example, two clients concurrently want to | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | bin/toc.py | 194 | print(f"Error: Language must be one of: zh, en, tw") | CODE |
| MEDIUM | bin/toc.py | 202 | print(f"Error: Depth must be 1, 2, 3, or 4") | CODE |
| MEDIUM | bin/toc.py | 217 | print(f"Error: Content directory {content_dir} does not exist") | CODE |
| MEDIUM | bin/preprocess-epub.py | 499 | print("Error: an output directory is required for directory input") | CODE |
| MEDIUM | bin/preprocess-epub.py | 513 | print(f"Error: {input_path} is not a valid file or directory") | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | bin/emphasis-style.py | 17 | CODE | |
| LOW | bin/toc.py | 9 | CODE | |
| LOW | bin/translate.py | 8 | CODE | |
| LOW | bin/check-rendered-links.py | 11 | CODE | |
| LOW | bin/figure-layout.py | 14 | CODE | |
| LOW | bin/preprocess-epub.py | 9 | CODE | |
| LOW | bin/check-translation.py | 10 | CODE | |
| LOW | bin/check-epub.py | 4 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | content/tw/ch13.md | 22 | 在本章中,我們將把所有這些想法彙集起來,並特別以 [第 12 章](/tw/ch12#ch_stream) 的 *流處理*(*stream processing*)與 *事件驅動架構*(*event-driven architecture* | CODE |
| MEDIUM | content/zh/ch13.md | 22 | 在本章中,我们将把所有这些想法汇集起来,并特别以 [第 12 章](/ch12#ch_stream) 的 *流处理*(*stream processing*)与 *事件驱动架构*(*event-driven architecture*)为基 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | bin/toc.py | 166 | # Check if file has minimal content (you can adjust this logic) | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | bin/repository-cards/update.py | 1 | #!/usr/bin/env python3 | COMMENT |
| LOW | bin/repository-cards/render.py | 1 | # Copyright (c) 2026 Feng Ruohang | COMMENT |
| LOW | bin/repository-cards/test_cards.py | 1 | # Copyright (c) 2026 Feng Ruohang | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | bin/toc.py | 166 | # Check if file has minimal content (you can adjust this logic) | COMMENT |