最新Docker容器技术,从真实案例中学习最佳实践!| Learn and understand Docker&Container technologies, with real DevOps practice!
This report summarizes scanner evidence for yeasy/docker_practice, a Go project with 26,335 GitHub stars. SynthScan examined 44,354 lines of code across 260 source files, recording 64 pattern matches distributed across 6 syntactic categories. The legacy adjusted pattern signal is 1.6 (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? 56 finding(s).
Are imports declared and package/API names verified? 8 finding(s).
Are wrappers, guards, and repeated structures necessary? 50 finding(s).
Which changes need focused human review? 64 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 64 distinct pattern matches across 6 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 | check_project_rules.py | 133 | def iter_markdown_link_targets(body: str): | CODE |
| LOW | tools/prepare_pdf_sources.py | 50 | def normalize_markdown_asset_paths(text: str, reldir: str, book_dir: Path | None = None) -> tuple[str, int]: | CODE |
| LOW | tools/test_prepare_pdf_sources.py | 10 | def test_module_imports_with_running_python(self): | CODE |
| LOW | tools/test_prepare_pdf_sources.py | 20 | def test_normalizes_relative_markdown_and_html_image_paths(self): | CODE |
| LOW | tools/test_prepare_pdf_sources.py | 45 | def test_prepares_temp_tree_without_mutating_source_markdown(self): | CODE |
| LOW⚡ | tests/test_cjk_typography.py | 128 | def test_cjk_and_latin_stay_apart(self) -> None: | CODE |
| LOW⚡ | tests/test_cjk_typography.py | 138 | def test_parens_holding_chinese_are_full_width(self) -> None: | CODE |
| LOW⚡ | tests/test_cjk_typography.py | 148 | def test_both_rules_can_actually_fail(self) -> None: | CODE |
| LOW | tests/test_cjk_typography.py | 162 | def test_latin_only_parens_are_left_alone(self) -> None: | CODE |
| LOW | tests/test_cjk_typography.py | 170 | def test_non_prose_regions_are_excluded(self) -> None: | CODE |
| LOW⚡ | tests/test_cjk_typography.py | 183 | def test_prices_are_not_mistaken_for_math(self) -> None: | CODE |
| LOW⚡ | tests/test_cjk_typography.py | 188 | def test_html_text_content_is_still_prose(self) -> None: | CODE |
| LOW⚡ | tests/test_cjk_typography.py | 194 | def test_a_table_row_is_not_an_html_tag(self) -> None: | CODE |
| LOW⚡ | tests/test_cjk_typography.py | 198 | def test_display_math_blocks_are_skipped_whole(self) -> None: | CODE |
| LOW | tests/test_verify_artifacts.py | 44 | def test_rejects_missing_artifact(self): | CODE |
| LOW | tests/test_verify_artifacts.py | 55 | def test_rejects_wrong_html_title(self): | CODE |
| LOW | tests/test_verify_artifacts.py | 70 | def test_accepts_mdpress_site_title_with_page_suffix(self): | CODE |
| LOW | tests/test_example_validation.py | 49 | def test_canonical_fixture_files_exist(self): | CODE |
| LOW | tests/test_example_validation.py | 54 | def test_relevant_chapters_link_to_canonical_fixtures(self): | CODE |
| LOW | tests/test_example_validation.py | 68 | def test_chapter_canonical_blocks_exactly_match_fixtures(self): | CODE |
| LOW | tests/test_example_validation.py | 87 | def test_kubernetes_fixture_has_vendored_schema_provenance(self): | CODE |
| LOW⚡ | tests/test_example_validation.py | 103 | def test_dockerfile_fixture_has_no_remote_base_image(self): | CODE |
| LOW⚡ | tests/test_example_validation.py | 108 | def test_github_actions_fixture_installs_integrity_pinned_validators(self): | CODE |
| LOW⚡ | tests/test_example_validation.py | 116 | def test_local_run_reports_skips_when_tools_are_unavailable(self): | CODE |
| LOW | tests/test_example_validation.py | 127 | def test_required_run_fails_when_tools_are_unavailable(self): | CODE |
| LOW | tests/test_example_validation.py | 134 | def test_available_tools_receive_the_canonical_validation_commands(self): | CODE |
| LOW | tests/test_example_validation.py | 166 | def test_runner_uses_only_vendored_schema_when_network_is_blocked(self): | CODE |
| LOW⚡ | tests/test_pages_workflow.py | 16 | def test_custom_pages_workflow_exists(self): | CODE |
| LOW⚡ | tests/test_pages_workflow.py | 19 | def test_builds_mdpress_site_without_jekyll(self): | CODE |
| LOW⚡ | tests/test_pages_workflow.py | 29 | def test_verifies_built_site_title_before_upload(self): | CODE |
| LOW⚡ | tests/test_pages_workflow.py | 39 | def test_build_and_deploy_jobs_have_minimum_permissions(self): | CODE |
| LOW | tests/test_pages_workflow.py | 54 | def test_actions_are_immutable_and_checkout_drops_credentials(self): | CODE |
| LOW | tests/test_pages_workflow.py | 66 | def test_documents_manual_pages_source_setting(self): | CODE |
| LOW | tests/test_html_list_rendering.py | 58 | def test_reader_declares_the_no_blank_line_list_extension(self): | CODE |
| LOW | tests/test_html_list_rendering.py | 68 | def test_bold_lead_in_list_renders_as_ul_under_real_pandoc(self): | CODE |
| LOW | tests/test_workflow_security.py | 162 | def workflow_step_scripts_in_document_order(workflow_text, step_names): | STRING |
| LOW | tests/test_workflow_security.py | 175 | def test_all_actions_are_immutable_with_version_comments(self): | STRING |
| LOW | tests/test_workflow_security.py | 187 | def test_checkout_never_persists_credentials(self): | STRING |
| LOW | tests/test_workflow_security.py | 199 | def test_every_workflow_declares_permissions(self): | STRING |
| LOW | tests/test_workflow_security.py | 208 | def test_release_and_preview_separate_read_only_builds_from_writes(self): | STRING |
| LOW | tests/test_workflow_security.py | 223 | def test_preview_publish_steps_follow_tag_release_asset_order(self): | STRING |
| LOW | tests/test_workflow_security.py | 284 | def test_mutable_preview_updates_existing_tag_and_release(self): | STRING |
| LOW | tests/test_workflow_security.py | 293 | def test_mutable_preview_creates_only_on_explicit_not_found(self): | STRING |
| LOW | tests/test_workflow_security.py | 304 | def test_preview_rejects_invalid_repository_and_sha_before_calling_gh(self): | STRING |
| LOW | tests/test_workflow_security.py | 329 | def test_preview_release_lookup_fails_closed_except_exact_not_found(self): | STRING |
| LOW⚡ | tests/test_workflow_security.py | 349 | def test_preview_publish_has_explicit_repo_context_only_in_write_job(self): | STRING |
| LOW⚡ | tests/test_workflow_security.py | 356 | def test_downloads_dependencies_and_link_checker_are_integrity_pinned(self): | STRING |
| LOW⚡ | tests/test_workflow_security.py | 366 | def test_mermaid_is_exact_and_lockfile_backed(self): | STRING |
| LOW | tests/test_workflow_security.py | 380 | def test_artifacts_are_smoke_tested_and_html_failures_are_not_silent(self): | STRING |
| LOW | tests/test_workflow_security.py | 390 | def test_tagged_release_attests_every_formal_artifact_with_minimum_permissions(self): | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | tools/build_html_reader.py | 155 | function show(id){var i=order.indexOf(id);if(i<0){i=0;id=order[0]}for(var k=0;k<pages.length;k++)pages[k].classList.tog | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | check_emphasis.py | 17 | CODE | |
| LOW | check_project_rules.py | 4 | CODE | |
| LOW | tools/prepare_pdf_sources.py | 11 | CODE | |
| LOW | tests/test_cjk_typography.py | 35 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | check_emphasis.py | 146 | CODE | |
| LOW | check_emphasis.py | 188 | CODE | |
| LOW | check_project_rules.py | 50 | CODE | |
| LOW | tools/build_html_reader.py | 16 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | package-lock.json | 2350 | "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.3.tgz", | CODE |
| MEDIUM | tools/build_html_reader.py | 2 | """Build a single self-contained, GitBook-style PAGED mobile reader — offline-robust. | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | 07_dockerfile/7.14_label.md | 33 | LABEL maintainer="user@example.com" \ | CODE |
| LOW | 07_dockerfile/7.14_label.md | 82 | LABEL maintainer="user@example.com" | CODE |
| LOW | 07_dockerfile/7.14_label.md | 86 | LABEL org.opencontainers.image.authors="user@example.com" | CODE |