AI Slop Code RIsk Monitor

simonlin1212/a-stock-data

A股全栈数据工具包:行情K线·当日逐笔·研报·信号·资金面·新闻·财务·公告·打板·ETF期权·舆情·宏观利率·期货大宗(含大商所日K)·事件驱动·可转债 | 15层·87端点·34数据源·除iwencai外免Key | A-share data for AI agents: K-lines, ticks, reports, fund flow, news, financials, filings, options, macro, futures, events, convertibles | 15 layers·87 endpoints·34 sources

14.0 Moderate pattern signal View on GitHub

Maintenance and Governance Review

This report summarizes scanner evidence for simonlin1212/a-stock-data, a Python project with 10,776 GitHub stars. SynthScan examined 12,421 lines of code across 10 source files, recording 196 pattern matches distributed across 6 syntactic categories. The legacy adjusted pattern signal is 14.0 (Moderate 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.

14.0
Adjusted Signal
14.0
Raw Pattern Score
100%
Time Factor
2026-10-10
Last Push
10.8K
Stars
Python
Language
12.4K
Lines of Code
10
Files
196
Pattern Hits
2026-10-12
Scan Date
0.00
HC Hit Rate

Risk Review · v3

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

Cognitive Ownership Risk 45.8/100 · MEDIUM

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

Hallucinated Dependency & Supply Chain Risk 0.0/100 · LOW

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

Agent Over-Engineering Ratio 49.1/100 · MEDIUM

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

PR Review Velocity Impact 55.6/100 · HIGH

Which changes need focused human review? 196 finding(s).

What These Metrics Mean

Adjusted Signal
Legacy pattern score normalized per 1,000 scanned lines and multiplied by the repository-level time factor. It is not an estimate of AI authorship.
Raw Pattern Score
Sum of severity- and context-weighted pattern findings before applying the time factor.
Time Factor
A coarse multiplier based on repository last-push metadata. It does not identify when individual code was written.
Pattern Hits
Count of configured pattern findings. Review each location and surrounding code before acting.
HC Hit Rate
High- and critical-severity findings per scanned file. Severity is a configured detector weight, not proof of a vulnerability or authorship.
Lines / Files
Scan coverage denominators used by the legacy normalized score.

Pattern-Signal History

This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.

Severity Breakdown

Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.

CRITICAL 0HIGH 0MEDIUM 3LOW 193

Directory Score Breakdown

This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.

Pattern Findings

The scanner identified 196 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.

Hyper-Verbose Identifiers166 hits · 146 pts
SeverityFileLineSnippetContext
LOWSKILL.md2015def eastmoney_industry_reports(industry_code: str = "*", max_pages: int = 5,CODE
LOWSKILL.md2426def _save_northbound_snapshot(date: str, hgt: float, sgt: float):CODE
LOWSKILL.md2527def eastmoney_fund_flow_minute(code: str) -> list[dict]:CODE
LOWSKILL.md3951def baostock_valuation_history(code: str, start_date: str, end_date: str) -> pd.DataFrame:CODE
LOW⚡tests/test_v39_sources.py313 def test_network_and_http_errors_become_runtime_errors(self):CODE
LOW⚡tests/test_v39_sources.py321 def test_allowed_status_is_returned_for_caller_to_judge(self):CODE
LOW⚡tests/test_v39_sources.py326 def test_non_json_is_runtime_error(self):CODE
LOW⚡tests/test_v39_sources.py330 def test_unrecognised_source_values_are_runtime_errors(self):CODE
LOW⚡tests/test_v39_sources.py497 def test_recent_package_without_bse_files_is_an_error(self):CODE
LOW⚡tests/test_v39_sources.py504 def test_missing_shanghai_or_shenzhen_is_an_error(self):CODE
LOW⚡tests/test_v39_sources.py508 def test_market_files_present_but_empty_is_an_error(self):CODE
LOW⚡tests/test_v39_sources.py513 def test_bad_name_bytes_or_blank_name_is_an_error(self):CODE
LOW⚡tests/test_v39_sources.py617 def test_network_error_fails_over_to_next_host(self):CODE
LOW⚡tests/test_v39_sources.py624 def test_all_hosts_empty_raises(self):CODE
LOW⚡tests/test_v39_sources.py629 def test_unparseable_row_is_runtime_error(self):CODE
LOW⚡tests/test_v39_sources.py634 def test_window_without_period_key_is_an_error(self):CODE
LOW⚡tests/test_v39_sources.py687 def test_non_positive_adjusted_price_rejected(self):CODE
LOW⚡tests/test_v39_sources.py692 def test_non_dict_payload_tries_every_host(self):CODE
LOW⚡tests/test_v39_sources.py699 def test_minute_payload_without_period_list_is_runtime_error(self):CODE
LOW⚡tests/test_v39_sources.py707 def test_bool_nan_or_blank_price_is_runtime_error(self):CODE
LOW⚡tests/test_v39_sources.py808 def test_sort_count_mismatch_rejected_before_network(self):CODE
LOW⚡tests/test_v39_sources.py818 def test_partial_pagination_raises(self):CODE
LOW⚡tests/test_v39_sources.py828 def test_empty_first_page_of_many_or_changed_page_count_raises(self):CODE
LOW⚡tests/test_v39_sources.py838 def test_short_page_or_count_mismatch_raises(self):CODE
LOW⚡tests/test_v39_sources.py863 def test_transport_errors_are_runtime_not_value_errors(self):CODE
LOW⚡tests/test_v39_sources.py871 def test_malformed_structure_is_runtime_error(self):CODE
LOW⚡tests/test_v39_sources.py879 def test_pagination_stops_at_last_page(self):CODE
LOW⚡tests/test_v39_sources.py1066 def test_complete_pages_match_record_count(self):CODE
LOW⚡tests/test_v39_sources.py1070 def test_unparsable_shares_is_an_error(self):CODE
LOW⚡tests/test_v39_sources.py1078 def test_empty_page_or_count_mismatch_raises(self):CODE
LOW⚡tests/test_v39_sources.py1086 def test_snapshot_changing_between_pages_raises(self):CODE
LOW⚡tests/test_v39_sources.py1096 def test_missing_snapshot_date_is_a_source_error(self):CODE
LOW⚡tests/test_v39_sources.py1104 def test_paging_fields_must_be_real_counts(self):CODE
LOW⚡tests/test_v39_sources.py1113 def test_malformed_top_level_is_runtime_error(self):CODE
LOWtests/test_v39_sources.py159 def test_marker_blocks_in_order_and_all_endpoints_defined(self):CODE
LOWtests/test_v39_sources.py166 def test_every_new_endpoint_is_in_route_table(self):CODE
LOWtests/test_v39_sources.py182 def test_every_new_endpoint_is_wrapped(self):CODE
LOWtests/test_v39_sources.py187 def test_missing_row_field_becomes_runtime_error(self):CODE
LOWtests/test_v39_sources.py207 def test_three_tenors_are_required(self):CODE
LOWtests/test_v39_sources.py223 def test_joinquant_suffix_accepted(self):CODE
LOWtests/test_v39_sources.py238 def test_bad_suffix_still_rejected(self):CODE
LOWtests/test_v39_sources.py255 def test_check_argument_validated_before_network(self):CODE
LOWtests/test_v39_sources.py260 def test_finance_check_does_not_touch_bars(self):CODE
LOWtests/test_v39_sources.py286 def test_bars_dead_finance_alive(self):CODE
LOWtests/test_v39_sources.py359 def test_malformed_payload_is_runtime_error(self):CODE
LOWtests/test_v39_sources.py373 def test_channels_must_be_a_list_of_labels(self):CODE
LOWtests/test_v39_sources.py384 def test_zero_values_kept_blank_values_missing(self):CODE
LOWtests/test_v39_sources.py395 def test_source_importance_must_be_one_to_four(self):CODE
LOWtests/test_v39_sources.py406 def test_importance_and_country_filters_are_checked(self):CODE
LOWtests/test_v39_sources.py428 def test_empty_full_past_week_is_an_error(self):CODE
LOWtests/test_v39_sources.py434 def test_window_returning_other_dates_raises(self):CODE
LOWtests/test_v39_sources.py463 def test_malformed_items_are_runtime_errors(self):CODE
LOWtests/test_v39_sources.py469 def test_empty_single_day_or_far_future_is_no_data(self):CODE
LOWtests/test_v39_sources.py485 def test_parses_all_three_markets(self):CODE
LOWtests/test_v39_sources.py526 def test_each_market_below_its_floor_is_an_error(self):CODE
LOWtests/test_v39_sources.py533 def test_duplicate_code_blank_code_or_seq_is_an_error(self):CODE
LOWtests/test_v39_sources.py556 def test_non_digit_code_or_non_finite_value_is_an_error(self):CODE
LOWtests/test_v39_sources.py590 def test_corrupt_zip_is_runtime_error(self):CODE
LOWtests/test_v39_sources.py606 def test_empty_response_fails_over_to_next_host(self):CODE
LOWtests/test_v39_sources.py651 def test_unadjusted_key_and_empty_windows_are_fine(self):CODE
106 more matches not shown…
Excessive Try-Catch Wrapping21 hits · 19 pts
SeverityFileLineSnippetContext
MEDIUMSKILL.md939def wrapper(*args, **kwargs):CODE
MEDIUMSKILL.md5577def _official_excel(response):CODE
LOWSKILL.md479 except Exception:CODE
LOWSKILL.md508 except Exception:CODE
LOWSKILL.md530 except Exception:CODE
LOWSKILL.md537 except Exception:CODE
LOWSKILL.md766except Exception:CODE
LOWSKILL.md834except Exception:CODE
LOWSKILL.md2489 except Exception as e:CODE
LOWSKILL.md2554 except Exception as e:CODE
LOWSKILL.md3168 except Exception as e:CODE
LOWSKILL.md4245 except Exception as e:CODE
LOWSKILL.md4340 except Exception as e:CODE
LOWSKILL.md4423 except Exception as e:CODE
LOWSKILL.md4650 except Exception: return xCODE
LOWSKILL.md4668 except Exception as e:CODE
LOWSKILL.md4746 except Exception as e:CODE
LOWSKILL.md4779 except Exception as e:CODE
LOWSKILL.md4809 except Exception as e:CODE
LOWSKILL.md4829 except Exception as e:CODE
LOWSKILL.md7080 except Exception as e:CODE
Decorative Section Separators1 hit · 3 pts
SeverityFileLineSnippetContext
MEDIUMSKILL.md749# ── 东财防封:全局节流 + 会话复用 ────────────────────────────────────COMMENT
Structural Annotation Overuse2 hits · 3 pts
SeverityFileLineSnippetContext
LOWSKILL.md7087# Step 1: iwencai 多 query 语义搜索COMMENT
LOWSKILL.md7104# Step 2: 东财补充同标的研报 + PDFCOMMENT
Deep Nesting5 hits · 2 pts
SeverityFileLineSnippetContext
LOWtests/test_v39_sources.py931CODE
LOWtests/test_v39_sources.py1290CODE
LOWtests/test_v310_sources.py79CODE
LOWtests/test_v310_sources.py190CODE
LOWtests/test_v310_sources.py365CODE
Over-Commented Block1 hit · 0 pts
SeverityFileLineSnippetContext
LOWSKILL.md1881# === K线数据 ===COMMENT