Repository Analysis

ZhuLinsen/daily_stock_analysis

LLM 驱动的多市场股票智能分析系统:多源行情、实时新闻、决策看板与自动推送,支持零成本定时运行。 LLM-powered multi-market stock analysis system with multi-source market data, real-time news, decision dashboard, automated notifications, and cost-free scheduled runs.

21.3 Moderate AI signal View on GitHub

Analysis Overview

This report presents the forensic synthetic code analysis of ZhuLinsen/daily_stock_analysis, a Python project with 57,120 GitHub stars. SynthScan v2.0 examined 371,512 lines of code across 898 source files, recording 7516 pattern matches distributed across 21 syntactic categories. The overall adjusted score of 21.3 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).

21.3
Adjusted Score
21.3
Raw Score
100%
Time Factor
2026-07-13
Last Push
57.1K
Stars
Python
Language
371.5K
Lines of Code
898
Files
7.5K
Pattern Hits
2026-07-14
Scan Date
0.05
HC Hit Rate

What These Metrics Mean

Adjusted Score
Primary synthetic code indicator. Raw score normalised per 1,000 lines of code and multiplied by the temporal discount factor. This is the definitive comparative metric — use it to rank repositories by AI authorship density.
Raw Score
The unmodified sum of all severity-weighted, context-multiplied pattern match scores before temporal discounting. Reflects the absolute signal strength independent of when the repository was last active.
Time Factor
The temporal discount multiplier (0–100%) applied to the raw score. Repositories last updated before ChatGPT's launch (Nov 2022) receive a 5% factor. Full signal is only assigned to repositories active in the post-adoption era (Jan 2024+).
Pattern Hits
Total count of individual pattern matches across all files and categories. A high hit count with a low score may indicate a very large codebase with isolated AI snippets; a low count with a high score indicates dense, concentrated AI signatures.
HC Hit Rate
High+Critical pattern hits per file, averaged across the repository. This orthogonal signal catches repositories where a few files are densely packed with high-severity AI tells — a strong indicator even when the normalised score appears moderate due to codebase size.
Lines of Code / Files
Total lines and files analysed. The scanner examines 94 file extensions. These denominators are used to normalise the score, enabling fair comparison between repositories of vastly different sizes.

Score History

This chart maps the temporal evolution of the adjusted synthetic code score across successive scan runs. An upward trajectory indicates ongoing incorporation of AI-generated code or expanding LLM-assisted scaffolding; a stable or declining trajectory may reflect active human refactoring, code removal, or the adoption of stricter authorship policies. The dashed secondary line (right axis) independently tracks total raw pattern hit count, which can diverge from the normalised score when codebase size changes significantly between scans.

Severity Breakdown

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.

CRITICAL 5HIGH 40MEDIUM 431LOW 7040

Directory Score Breakdown

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.

Pattern Findings

The scanner identified 7516 distinct pattern matches across 21 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.

Hyper-Verbose Identifiers5095 hits · 4435 pts
SeverityFileLineSnippetContext
LOWmain.py95def _warn_if_public_webui_without_auth(host: str) -> None:CODE
LOWmain.py111def _resolve_web_service_bind(args: argparse.Namespace, config: Config) -> Tuple[str, int]:CODE
LOWmain.py208def _get_stock_analysis_pipeline():CODE
LOWmain.py247def _reload_env_file_values_preserving_overrides() -> None:CODE
LOWmain.py587def _can_reuse_market_context_for_review(summary: str, region: str) -> bool:STRING
LOWmain.py597def _resolve_daily_market_context_market(market: str, normalized_region: str) -> str:STRING
LOWmain.py606def _resolve_daily_market_context_target_date(STRING
LOWmain.py435def _compute_trading_day_filter(STRING
LOWmain.py477def _run_market_review_with_shared_lock(STRING
LOWmain.py510def _refresh_stock_index_cache_for_analysis(config: Config) -> None:STRING
LOWmain.py527def _prime_daily_market_context(STRING
LOWmain.py621def _market_review_report_text(review_result: Any) -> str:STRING
LOWmain.py630def _save_reused_market_review_report(STRING
LOWmain.py1012def _run_analysis_with_runtime_scheduler_lock(STRING
LOWmain.py1165def _resolve_scheduled_stock_codes(stock_codes: Optional[List[str]]) -> Optional[List[str]]:STRING
LOWmain.py1181def _build_schedule_time_provider(default_schedule_time: str):STRING
LOWmain.py1208def _build_schedule_times_provider(default_schedule_time: str):STRING
LOWtests/test_backtest_service.py223 def test_run_backtest_accepts_dotted_exchange_prefix_and_filters_analysis_date_range(self) -> None:CODE
LOWtests/test_backtest_service.py253 def test_run_backtest_keeps_dotted_cn_code_match_when_analysis_history_is_dotted(self) -> None:CODE
LOWtests/test_backtest_service.py291 def test_run_backtest_matches_compact_prefixed_analysis_history_with_canonical_query(self) -> None:CODE
LOWtests/test_backtest_service.py345 def test_run_backtest_matches_compact_ss_alias_after_request_normalization(self) -> None:CODE
LOWtests/test_backtest_service.py379 def test_run_backtest_uses_bare_daily_bars_and_summary_for_compact_ss_history(self) -> None:CODE
LOWtests/test_backtest_service.py443 def test_run_backtest_uses_compact_forward_bars_when_analysis_history_is_bare_code(self) -> None:CODE
LOWtests/test_backtest_service.py495 def test_run_backtest_matches_compact_bj_code_shape_with_no_prefix_query(self) -> None:CODE
LOWtests/test_backtest_service.py549 def test_build_market_code_variants_includes_compact_prefix_and_bj_forms(self) -> None:CODE
LOWtests/test_backtest_service.py564 def test_daily_refill_codes_normalize_legacy_ss_aliases_once(self) -> None:CODE
LOWtests/test_backtest_service.py580 def test_try_fill_daily_data_uses_normalized_a_share_code_for_legacy_ss_alias(self) -> None:CODE
LOWtests/test_backtest_service.py627 def test_build_market_code_variants_rejects_wrong_explicit_exchange_for_bse_code(self) -> None:CODE
LOWtests/test_backtest_service.py637 def test_get_candidates_does_not_match_invalid_a_share_hk_cross_input(self) -> None:CODE
LOWtests/test_backtest_service.py650 def test_get_candidates_does_not_match_explicit_wrong_a_share_market(self) -> None:CODE
LOWtests/test_backtest_service.py664 def test_run_backtest_rejects_invalid_market_suffix_length_input(self) -> None:CODE
LOWtests/test_backtest_service.py677 def test_run_backtest_rejects_explicit_wrong_a_share_market(self) -> None:CODE
LOWtests/test_backtest_service.py692 def test_get_recent_evaluations_rejects_explicit_wrong_a_share_market(self) -> None:CODE
LOWtests/test_backtest_service.py706 def test_get_summary_rejects_explicit_wrong_a_share_market(self) -> None:CODE
LOWtests/test_backtest_service.py719 def test_run_backtest_bare_code_query_matches_dotted_history_records(self) -> None:CODE
LOWtests/test_backtest_service.py763 def test_run_backtest_uses_bare_daily_bars_for_dotted_history_record(self) -> None:CODE
LOWtests/test_backtest_service.py818 def test_run_backtest_uses_forward_bars_from_other_code_shape_when_start_daily_shape_differs(self) -> None:CODE
LOWtests/test_backtest_service.py876 def test_run_backtest_supports_us_suffix_code_shape_when_run_with_suffix(self) -> None:CODE
LOWtests/test_backtest_service.py908 def test_run_backtest_us_suffix_query_matches_bare_history_and_summary(self) -> None:CODE
LOWtests/test_backtest_service.py954 def test_run_backtest_bare_us_query_matches_us_suffix_history_and_summary(self) -> None:CODE
LOWtests/test_backtest_service.py1000 def test_us_code_queries_match_legacy_results_without_rerun(self) -> None:CODE
LOWtests/test_backtest_service.py1117 def test_run_backtest_matches_hk_different_code_shapes_in_analysis_history_and_daily(self) -> None:CODE
LOWtests/test_backtest_service.py1177 def test_run_backtest_matches_hk_daily_shape_variants_for_prefixed_history(self) -> None:CODE
LOWtests/test_backtest_service.py1237 def test_run_backtest_supports_dotted_hk_prefix_query_shape(self) -> None:CODE
LOWtests/test_backtest_service.py1312 def test_run_backtest_filters_by_snapshot_analysis_date_not_created_at(self) -> None:CODE
LOWtests/test_backtest_service.py1359 def test_run_backtest_persists_snapshot_date_when_start_daily_falls_back(self) -> None:CODE
LOWtests/test_backtest_service.py1428 def test_date_filtered_rerun_aligns_legacy_result_date_to_snapshot_date(self) -> None:CODE
LOWtests/test_backtest_service.py1498 def test_date_filtered_rerun_aligns_legacy_result_date_when_new_candidates_process(self) -> None:CODE
LOWtests/test_backtest_service.py1599 def test_run_backtest_pages_candidates_before_analysis_date_filter(self) -> None:CODE
LOWtests/test_backtest_service.py1639 def test_run_backtest_reports_no_matching_candidates(self) -> None:CODE
LOWtests/test_backtest_service.py1657 def test_run_backtest_reports_insufficient_daily_data(self) -> None:CODE
LOWtests/test_backtest_service.py1698 def test_result_fields_correct(self) -> None:CODE
LOWtests/test_backtest_service.py1731 def test_summaries_created_after_run(self) -> None:CODE
LOWtests/test_backtest_service.py1759 def test_get_summary_overall_returns_sentinel_as_none(self) -> None:CODE
LOWtests/test_backtest_service.py1770 def test_agent_learning_summary_helpers_keep_skill_rollups_neutral_until_supported(self) -> None:CODE
LOWtests/test_backtest_service.py1792 def test_get_recent_evaluations(self) -> None:CODE
LOWtests/test_backtest_service.py1809 def test_get_recent_evaluations_aligns_neutral_advice_with_score(self) -> None:CODE
LOWtests/test_backtest_service.py1838 def test_get_recent_evaluations_prefers_persisted_raw_action(self) -> None:CODE
LOWtests/test_backtest_service.py1877 def test_get_recent_evaluations_supports_tracking_fields_and_analysis_date_filters(self) -> None:CODE
LOWtests/test_backtest_service.py1909 def test_get_summary_supports_analysis_date_range(self) -> None:CODE
5035 more matches not shown…
Decorative Section Separators377 hits · 1392 pts
SeverityFileLineSnippetContext
MEDIUMrequirements.txt1# ===================================COMMENT
MEDIUMrequirements.txt3# ===================================COMMENT
MEDIUMdocker/docker-compose.yml1# ===================================COMMENT
MEDIUMdocker/docker-compose.yml3# ===================================COMMENT
MEDIUMtests/test_notification_sender.py373 # ------------------------------------------------------------------COMMENT
MEDIUMtests/test_notification_sender.py375 # ------------------------------------------------------------------COMMENT
MEDIUMtests/test_notification_sender.py681 # ------------------------------------------------------------------COMMENT
MEDIUMtests/test_notification_sender.py683 # ------------------------------------------------------------------COMMENT
MEDIUMtests/test_multi_agent.py43# ============================================================COMMENT
MEDIUMtests/test_multi_agent.py45# ============================================================COMMENT
MEDIUMtests/test_multi_agent.py199# ============================================================COMMENT
MEDIUMtests/test_multi_agent.py201# ============================================================COMMENT
MEDIUMtests/test_multi_agent.py516# ============================================================COMMENT
MEDIUMtests/test_multi_agent.py518# ============================================================COMMENT
MEDIUMtests/test_multi_agent.py605# ============================================================COMMENT
MEDIUMtests/test_multi_agent.py607# ============================================================COMMENT
MEDIUMtests/test_multi_agent.py2296# ============================================================COMMENT
MEDIUMtests/test_multi_agent.py2298# ============================================================COMMENT
MEDIUMtests/test_multi_agent.py2606# ============================================================COMMENT
MEDIUMtests/test_multi_agent.py2608# ============================================================COMMENT
MEDIUMtests/test_multi_agent.py2694# ============================================================COMMENT
MEDIUMtests/test_multi_agent.py2696# ============================================================COMMENT
MEDIUMtests/test_multi_agent.py439# ============================================================COMMENT
MEDIUMtests/test_multi_agent.py441# ============================================================COMMENT
MEDIUMtests/test_multi_agent.py642# ============================================================COMMENT
MEDIUMtests/test_multi_agent.py644# ============================================================COMMENT
MEDIUMtests/test_multi_agent.py730# ============================================================COMMENT
MEDIUMtests/test_multi_agent.py732# ============================================================COMMENT
MEDIUMtests/test_multi_agent.py1975# ============================================================COMMENT
MEDIUMtests/test_multi_agent.py1977# ============================================================COMMENT
MEDIUMtests/test_image_stock_extractor_litellm.py78# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_image_stock_extractor_litellm.py80# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_image_stock_extractor_litellm.py126# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_image_stock_extractor_litellm.py128# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_image_stock_extractor_litellm.py153# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_image_stock_extractor_litellm.py155# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_image_stock_extractor_litellm.py289# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_image_stock_extractor_litellm.py291# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_image_stock_extractor_litellm.py362# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_image_stock_extractor_litellm.py364# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_image_stock_extractor_litellm.py37# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_image_stock_extractor_litellm.py39# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_agent_pipeline.py36# ============================================================COMMENT
MEDIUMtests/test_agent_pipeline.py38# ============================================================COMMENT
MEDIUMtests/test_agent_pipeline.py1462# ============================================================COMMENT
MEDIUMtests/test_agent_pipeline.py1464# ============================================================COMMENT
MEDIUMtests/test_agent_pipeline.py1493# ============================================================COMMENT
MEDIUMtests/test_agent_pipeline.py1495# ============================================================COMMENT
MEDIUMtests/test_agent_pipeline.py2066# ============================================================COMMENT
MEDIUMtests/test_agent_pipeline.py2068# ============================================================COMMENT
MEDIUMtests/test_agent_pipeline.py2756# ============================================================COMMENT
MEDIUMtests/test_agent_pipeline.py2758# ============================================================COMMENT
MEDIUMtests/test_agent_pipeline.py2832# ============================================================COMMENT
MEDIUMtests/test_agent_pipeline.py2834# ============================================================COMMENT
MEDIUMtests/test_agent_pipeline.py552# ============================================================COMMENT
MEDIUMtests/test_agent_pipeline.py554# ============================================================COMMENT
MEDIUMtests/test_history_loader.py15 # ------------------------------------------------------------------COMMENT
MEDIUMtests/test_history_loader.py17 # ------------------------------------------------------------------COMMENT
MEDIUMtests/test_history_loader.py32 # ------------------------------------------------------------------COMMENT
MEDIUMtests/test_history_loader.py34 # ------------------------------------------------------------------COMMENT
317 more matches not shown…
Excessive Try-Catch Wrapping878 hits · 814 pts
SeverityFileLineSnippetContext
MEDIUMmain.py1092def run_server():CODE
LOWmain.py55 except Exception as exc:CODE
LOWmain.py125 except Exception as exc: # pragma: no cover - defensive branchCODE
LOWmain.py523 except Exception as exc: # noqa: BLE001 - stock index freshness must not block analysis.STRING
LOWmain.py659 except Exception as exc:STRING
LOWmain.py971 except Exception as e:STRING
LOWmain.py991 except Exception as e:STRING
LOWmain.py996 except Exception as e:STRING
LOWmain.py1095 except Exception as exc: # noqa: BLE001 - surface startup issues to caller promptlySTRING
LOWmain.py1146 except Exception as exc:STRING
LOWmain.py1161 except Exception as exc:STRING
LOWmain.py1251 except Exception as exc:STRING
LOWmain.py1262 except Exception as exc:STRING
LOWmain.py1269 except Exception as exc:STRING
LOWmain.py1368 except Exception as e:STRING
LOWmain.py1536 except Exception as e:STRING
LOWtests/test_portfolio_service.py1162 except Exception as exc: # pragma: no cover - asserted belowCODE
LOWtests/test_portfolio_service.py1217 except Exception as exc: # pragma: no cover - asserted belowCODE
LOWtests/longbridge_live_smoke.py106 except Exception as e:CODE
LOWtests/test_anspire_search.py466 except Exception:CODE
LOWtests/test_social_sentiment_service.py129 except Exception as exc: # pragma: no cover - thread collectionCODE
MEDIUMtests/test_social_sentiment_service.py125def worker():CODE
LOWtests/test_llm_usage.py1764 except Exception as exc:CODE
LOWtests/test_conversation_manager.py22 except Exception as exc: # pragma: no cover - failures are asserted belowCODE
LOWtests/test_search_service_concurrency.py114 except Exception as exc: # pragma: no cover - thread collectionCODE
LOWtests/test_search_service_concurrency.py171 except Exception as exc: # pragma: no cover - thread collectionCODE
LOWtests/test_search_service_concurrency.py265 except Exception as exc: # pragma: no cover - thread collectionCODE
MEDIUMtests/test_search_service_concurrency.py110def worker():CODE
MEDIUMtests/test_search_service_concurrency.py167def worker():CODE
MEDIUMtests/test_search_service_concurrency.py261def worker():CODE
MEDIUMtests/test_storage.py454def ensure_record() -> None:CODE
MEDIUMtests/test_storage.py835def initialize_manager() -> None:CODE
MEDIUMtests/test_storage.py844def use_manager() -> None:CODE
MEDIUMtests/test_storage.py927def construct_directly() -> None:CODE
MEDIUMtests/test_storage.py936def use_get_instance() -> None:CODE
LOWtests/test_storage.py458 except Exception as exc:CODE
LOWtests/test_storage.py840 except Exception as exc:CODE
LOWtests/test_storage.py856 except Exception as exc:CODE
LOWtests/test_storage.py932 except Exception as exc:CODE
LOWtests/test_storage.py948 except Exception as exc:CODE
LOWtests/test_data_fetcher_prefetch_stock_names.py291 except Exception as exc: # pragma: no cover - thread collectionCODE
MEDIUMtests/test_data_fetcher_prefetch_stock_names.py286def worker():CODE
LOWtests/test_agent_sse_cleanup.py50 except Exception as exc:CODE
LOWtests/test_main_schedule_mode.py75 except Exception:CODE
LOWtests/test_main_schedule_mode.py2092 except Exception:CODE
LOWtests/tw_institutional_live_smoke.py42except Exception: # noqa: BLE001 - cosmetic only; never block the smoke on console encodingCODE
LOWtests/test_run_diagnostics_p1.py106 except Exception as exc: # pragma: no cover - exercised by queue behaviorCODE
LOWtests/test_analysis_api_contract.py37except Exception: # pragma: no cover - optional dependency environmentsCODE
LOWtests/test_analysis_api_contract.py1016 except Exception as exc: # pragma: no cover - exercised via assert belowCODE
LOWtests/test_analysis_api_contract.py3376 except Exception: # pragma: no cover - optional dependency environmentsCODE
LOWtests/test_stooq_fallback.py12except Exception:CODE
LOWtests/test_realtime_types.py64 except Exception as exc: # pragma: no cover - thread collectionCODE
LOWtests/test_realtime_types.py91 except Exception as exc: # pragma: no cover - thread collectionCODE
LOWtests/test_realtime_types.py99 except Exception as exc: # pragma: no cover - thread collectionCODE
MEDIUMtests/test_realtime_types.py60def worker():CODE
MEDIUMtests/test_realtime_types.py86def record_success():CODE
MEDIUMtests/test_realtime_types.py94def record_failure():CODE
LOWtests/test_api_schema_pydantic.py138 except Exception as exc:CODE
MEDIUMtests/test_api_schema_pydantic.py132def test_analyze_request_rejects_invalid_analysis_phase() -> None:CODE
LOWdata_provider/alphavantage_fetcher.py60 except Exception as e:CODE
818 more matches not shown…
Unused Imports529 hits · 450 pts
SeverityFileLineSnippetContext
LOWserver.py40CODE
LOWwebui.py18CODE
LOWmain.py24CODE
LOWtests/test_portfolio_service.py4CODE
LOWtests/test_analysis_context_pack_prompt.py4CODE
LOWtests/test_generate_index_from_csv.py11CODE
LOWtests/test_generate_index_from_csv.py11CODE
LOWtests/test_generate_index_from_csv.py17CODE
LOWtests/test_analysis_context_builder.py4CODE
LOWtests/test_analysis_context_pack_overview.py4CODE
LOWtests/test_market_light_service.py4CODE
LOWtests/test_fetch_tushare_stock_list.py4CODE
LOWtests/test_multi_agent.py25CODE
LOWtests/conftest.py4CODE
LOWtests/test_decision_signal_repo.py4CODE
LOWtests/test_run_diagnostics_p2.py4CODE
LOWtests/test_runtime_scheduler_service.py4CODE
LOWtests/test_agent_pipeline.py20CODE
LOWtests/test_agent_pipeline.py21CODE
LOWtests/test_agent_pipeline.py21CODE
LOWtests/test_agent_pipeline.py22CODE
LOWtests/test_agent_pipeline.py22CODE
LOWtests/test_report_integrity.py16CODE
LOWtests/test_anspire_search.py27CODE
LOWtests/test_anspire_search.py27CODE
LOWtests/test_anspire_search.py28CODE
LOWtests/test_anspire_search.py29CODE
LOWtests/test_decision_signal_api.py4CODE
LOWtests/test_decision_signal_api.py19CODE
LOWtests/test_local_cli_backend.py4CODE
LOWtests/test_analysis_context_pack_schema.py4CODE
LOWtests/test_daily_analysis_workflow_llm_env.py4CODE
LOWtests/test_alert_api.py4CODE
LOWtests/test_alert_api.py29CODE
LOWtests/test_alert_api.py21CODE
LOWtests/test_stock_index_remote_service.py4CODE
LOWtests/test_analysis_integration.py18CODE
LOWtests/test_analysis_integration.py19CODE
LOWtests/test_history_loader.py3CODE
LOWtests/test_market_light_alerts.py4CODE
LOWtests/test_decision_signal_service.py4CODE
LOWtests/test_build_release_notes.py1CODE
LOWtests/test_agent_frozen_context.py3CODE
LOWtests/test_realtime_quote_fallback_logging.py11CODE
LOWtests/test_ask_command.py10CODE
LOWtests/test_decision_profile_policy.py1CODE
LOWtests/test_market_structure_service.py4CODE
LOWtests/test_desktop_packaging_assets.py4CODE
LOWtests/test_intelligence_service.py4CODE
LOWtests/test_signal_attribution_supplement.py15CODE
LOWtests/test_report_renderer.py15CODE
LOWtests/test_tencent_fetcher.py4CODE
LOWtests/test_daily_market_context_guardrail.py4CODE
LOWtests/test_agent_executor.py27CODE
LOWtests/test_signal_attribution_real_paths.py13CODE
LOWtests/test_signal_attribution_real_paths.py13CODE
LOWtests/test_yfinance_fundamental_adapter.py9CODE
LOWtests/test_fetcher_logging.py1CODE
LOWtests/test_alert_worker.py4CODE
LOWtests/test_auth_api.py19CODE
469 more matches not shown…
Modern Structural Boilerplate188 hits · 189 pts
SeverityFileLineSnippetContext
LOWserver.py43__all__ = ['app']CODE
LOWwebui.py23logger = logging.getLogger(__name__)CODE
LOWmain.py79logger = logging.getLogger(__name__)CODE
LOWmain.py170def _setup_bootstrap_logging(debug: bool = False) -> None:CODE
LOWtests/test_runtime_scheduler_service.py337 def set_daily_task(self, task, run_immediately: bool) -> None:CODE
LOWtests/test_runtime_scheduler_service.py418 def set_daily_task(self, task, run_immediately: bool) -> None:CODE
LOWtests/test_signal_attribution_supplement.py23logger = logging.getLogger(__name__)CODE
LOWtests/test_run_flow.py222 def update_analysis_history_diagnostics(self, *, query_id: str, code: str, diagnostics: dict) -> None:CODE
LOWdata_provider/realtime_types.py24logger = logging.getLogger(__name__)CODE
LOWdata_provider/alphavantage_fetcher.py22logger = logging.getLogger(__name__)CODE
LOWdata_provider/yfinance_fetcher.py54logger = logging.getLogger(__name__)CODE
LOWdata_provider/fundamental_adapter.py18logger = logging.getLogger(__name__)CODE
LOWdata_provider/tickflow_fetcher.py44logger = logging.getLogger(__name__)CODE
LOWdata_provider/tickflow_fetcher.py552 def _set_daily_cache(self, cache_key: Tuple[str, str, str, str], df: pd.DataFrame) -> None:CODE
LOWdata_provider/yfinance_fundamental_adapter.py36logger = logging.getLogger(__name__)CODE
LOWdata_provider/akshare_fetcher.py60logger = logging.getLogger(__name__)CODE
LOWdata_provider/akshare_fetcher.py406 def _set_random_user_agent(self) -> None:CODE
LOWdata_provider/efinance_fetcher.py118logger = logging.getLogger(__name__)CODE
LOWdata_provider/efinance_fetcher.py317 def _set_random_user_agent(self) -> None:CODE
LOWdata_provider/longbridge_fetcher.py40logger = logging.getLogger(__name__)CODE
LOWdata_provider/finnhub_fetcher.py22logger = logging.getLogger(__name__)CODE
LOWdata_provider/__init__.py46__all__ = [CODE
LOWdata_provider/tushare_fetcher.py40logger = logging.getLogger(__name__)CODE
LOWdata_provider/tw_institutional_fetcher.py37logger = logging.getLogger(__name__)CODE
LOWdata_provider/baostock_fetcher.py42logger = logging.getLogger(__name__)CODE
LOWdata_provider/pytdx_fetcher.py43logger = logging.getLogger(__name__)CODE
LOWdata_provider/tencent_fetcher.py20logger = logging.getLogger(__name__)CODE
LOWdata_provider/base.py36logger = logging.getLogger(__name__)CODE
LOWscripts/check_env.py73logger = logging.getLogger(__name__)CODE
LOWapi/app.py36logger = logging.getLogger(__name__)CODE
LOWapi/v1/__init__.py13__all__ = ["api_v1_router"]CODE
LOWapi/v1/endpoints/alerts.py29logger = logging.getLogger(__name__)CODE
LOWapi/v1/endpoints/auth.py37logger = logging.getLogger(__name__)CODE
LOWapi/v1/endpoints/auth.py143def _set_session_cookie(response: Response, session_value: str, request: Request) -> None:CODE
LOWapi/v1/endpoints/stocks.py46logger = logging.getLogger(__name__)CODE
LOWapi/v1/endpoints/analysis.py97logger = logging.getLogger(__name__)CODE
LOWapi/v1/endpoints/__init__.py26__all__ = [CODE
LOWapi/v1/endpoints/intelligence.py27logger = logging.getLogger(__name__)CODE
LOWapi/v1/endpoints/decision_signals.py45logger = logging.getLogger(__name__)CODE
LOWapi/v1/endpoints/agent.py39logger = logging.getLogger(__name__)CODE
LOWapi/v1/endpoints/system_config.py44logger = logging.getLogger(__name__)CODE
LOWapi/v1/endpoints/backtest.py24logger = logging.getLogger(__name__)CODE
LOWapi/v1/endpoints/portfolio.py48logger = logging.getLogger(__name__)CODE
LOWapi/v1/endpoints/usage.py16logger = logging.getLogger(__name__)CODE
LOWapi/v1/endpoints/history.py60logger = logging.getLogger(__name__)CODE
LOWapi/v1/schemas/__init__.py129__all__ = [CODE
LOWapi/middlewares/auth.py17logger = logging.getLogger(__name__)CODE
LOWapi/middlewares/__init__.py13__all__ = ["ErrorHandlerMiddleware"]CODE
LOWapi/middlewares/error_handler.py21logger = logging.getLogger(__name__)CODE
LOWbot/dispatcher.py21logger = logging.getLogger(__name__)CODE
LOWbot/dispatcher.py363 def set_help_command_getter(self, getter: Callable) -> None:CODE
LOWbot/handler.py23logger = logging.getLogger(__name__)CODE
LOWbot/__init__.py37__all__ = [CODE
LOWbot/platforms/dingtalk.py25logger = logging.getLogger(__name__)CODE
LOWbot/platforms/discord.py26logger = logging.getLogger(__name__)CODE
LOWbot/platforms/__init__.py56__all__ = [CODE
LOWbot/platforms/feishu_stream.py33logger = logging.getLogger(__name__)CODE
LOWbot/platforms/dingtalk_stream.py28logger = logging.getLogger(__name__)CODE
LOWbot/commands/strategies.py14logger = logging.getLogger(__name__)CODE
LOWbot/commands/research.py20logger = logging.getLogger(__name__)CODE
128 more matches not shown…
Deep Nesting246 hits · 168 pts
SeverityFileLineSnippetContext
LOWmain.py663CODE
LOWmain.py1132CODE
LOWmain.py1238CODE
LOWtests/test_portfolio_service.py1381CODE
LOWtests/test_multi_agent.py1212CODE
LOWtests/test_multi_agent.py1581CODE
LOWtests/test_multi_agent.py1603CODE
LOWtests/test_multi_agent.py1618CODE
LOWtests/test_multi_agent.py1649CODE
LOWtests/test_anspire_search.py446CODE
LOWtests/test_ask_command.py281CODE
LOWtests/test_market_review.py17CODE
LOWtests/test_agent_executor.py227CODE
LOWtests/test_agent_executor.py270CODE
LOWtests/test_agent_executor.py312CODE
LOWtests/test_agent_executor.py989CODE
LOWtests/test_fetcher_logging.py127CODE
LOWtests/test_storage.py39CODE
LOWtests/test_storage.py417CODE
LOWtests/test_storage.py992CODE
LOWtests/test_auth_status_setup_state.py103CODE
LOWtests/test_analysis_api_contract.py315CODE
LOWtests/test_analysis_api_contract.py3045CODE
LOWdata_provider/realtime_types.py233CODE
LOWdata_provider/realtime_types.py404CODE
LOWdata_provider/yfinance_fetcher.py225CODE
LOWdata_provider/yfinance_fetcher.py340CODE
LOWdata_provider/yfinance_fetcher.py390CODE
LOWdata_provider/yfinance_fetcher.py417CODE
LOWdata_provider/yfinance_fetcher.py449CODE
LOWdata_provider/yfinance_fetcher.py472CODE
LOWdata_provider/yfinance_fetcher.py495CODE
LOWdata_provider/yfinance_fetcher.py783CODE
LOWdata_provider/fundamental_adapter.py240CODE
LOWdata_provider/tickflow_fetcher.py396CODE
LOWdata_provider/yfinance_fundamental_adapter.py146CODE
LOWdata_provider/akshare_fetcher.py605CODE
LOWdata_provider/akshare_fetcher.py908CODE
LOWdata_provider/akshare_fetcher.py952CODE
LOWdata_provider/akshare_fetcher.py1357CODE
LOWdata_provider/akshare_fetcher.py1686CODE
LOWdata_provider/akshare_fetcher.py1824CODE
LOWdata_provider/efinance_fetcher.py836CODE
LOWdata_provider/efinance_fetcher.py974CODE
LOWdata_provider/efinance_fetcher.py1102CODE
LOWdata_provider/longbridge_fetcher.py145CODE
LOWdata_provider/longbridge_fetcher.py489CODE
LOWdata_provider/longbridge_fetcher.py626CODE
LOWdata_provider/tushare_fetcher.py778CODE
LOWdata_provider/tushare_fetcher.py849CODE
LOWdata_provider/tushare_fetcher.py930CODE
LOWdata_provider/baostock_fetcher.py290CODE
LOWdata_provider/baostock_fetcher.py337CODE
LOWdata_provider/pytdx_fetcher.py48CODE
LOWdata_provider/pytdx_fetcher.py185CODE
LOWdata_provider/pytdx_fetcher.py283CODE
LOWdata_provider/base.py847CODE
LOWdata_provider/base.py1029CODE
LOWdata_provider/base.py1242CODE
LOWdata_provider/base.py1721CODE
186 more matches not shown…
Docstring Block Structure18 hits · 90 pts
SeverityFileLineSnippetContext
HIGHdata_provider/yfinance_fetcher.py97 转换股票代码为 Yahoo Finance 格式 Yahoo Finance 代码格式: - A股沪市:600519.SS (Shanghai Stock Exchange) STRING
HIGHdata_provider/us_index_mapping.py47 判断代码是否为美股指数符号。 Args: code: 股票/指数代码,如 'SPX', 'DJI' Returns: True 表示是已知美股指数符号,否则 False STRING
HIGHdata_provider/us_index_mapping.py66 判断代码是否为美股股票符号(排除美股指数)。 美股股票代码为 1-5 个大写字母,可选 .X 后缀如 BRK.B。 美股指数(SPX、DJI 等)明确排除。 Args: code: 股票STRING
HIGHdata_provider/us_index_mapping.py98 获取美股指数的 Yahoo Finance 符号与中文名称。 Args: code: 用户输入,如 'SPX', '^GSPC', 'DJI' Returns: (yf_symbSTRING
HIGHdata_provider/akshare_fetcher.py210 判断代码是否为美股股票(不包括美股指数)。 委托给 us_index_mapping 模块的 is_us_stock_code()。 Args: stock_code: 股票代码 ReSTRING
HIGHdata_provider/base.py1249 获取日线数据(自动切换数据源) 故障切换策略: 1. 美股指数/美股股票直接路由到 YfinanceFetcher 2. 其他代码从最高优先级数据源开始尝试STRING
HIGHapi/v1/endpoints/stocks.py420 获取股票实时行情 获取指定股票的最新行情数据 Args: stock_code: 股票代码(如 600519、00700、AAPL) Returns: STRING
HIGHapi/v1/endpoints/analysis.py280 触发股票分析 启动 AI 智能分析任务,支持单只或多只股票批量分析 流程: 1. 校验请求参数 2. 异步模式:检查重复 -> 提交任务队列 -> 返回 202 3. 同STRING
HIGHapi/v1/endpoints/analysis.py1031 查询分析任务状态 优先从任务队列查询,如果不存在则从数据库查询历史记录 Args: task_id: 任务 ID Returns: TaSTRING
HIGHapi/v1/endpoints/history.py450 获取历史报告详情 根据分析历史记录主键 ID 或 query_id 获取完整的历史分析报告。 优先尝试按主键 ID(整数)查询,若参数不是合法整数则按 query_id 查询。 ArgsSTRING
HIGHapi/v1/endpoints/history.py763 获取历史报告的 Markdown 格式内容 根据分析历史记录 ID 或 query_id 生成与推送通知格式一致的 Markdown 报告。 Args: record_id: 分析历史记录主键 STRING
HIGHsrc/agent/skills/base.py141Load a single Skill from a YAML file. The YAML file must contain at minimum: ``name``, ``display_name``, ``descSTRING
HIGHsrc/services/stock_service.py94 获取股票历史行情 Args: stock_code: 股票代码 period: K 线周期 (daily/weekly/monthly) STRING
HIGHsrc/services/task_queue.py336 Submit a single analysis task. Args: stock_code: Stock code stock_name: OptionSTRING
HIGHsrc/services/image_stock_extractor.py290 从图片中提取股票代码及名称(使用 Vision LLM)。 优先级:Gemini -> Anthropic -> OpenAI(首个可用)。 支持多 Key 轮询与重试(最多 3 次,指数退避)。 ArSTRING
HIGHsrc/services/history_service.py612 Delete specified analysis history records. Args: record_ids: List of history record primarSTRING
HIGHsrc/services/history_service.py763 Generate a Markdown report for a single analysis history record. This method reconstructs an AnalysisRSTRING
HIGHsrc/services/import_parser.py129 Parse file bytes (CSV/Excel) into items. Args: data: File content bytes. filename: Optional fiSTRING
Structural Annotation Overuse43 hits · 74 pts
SeverityFileLineSnippetContext
LOWtests/test_notification_sender.py1551 # Step 2: upload must send raw bytes (not multipart) to match declared lengthCOMMENT
LOWtests/longbridge_live_smoke.py100 # Step 1: yfinance onlyCOMMENT
LOWtests/longbridge_live_smoke.py126 # Step 2: Supplement from LongbridgeCOMMENT
LOWtests/test_agent_executor.py1115 # Step 1: LLM requests tool callCOMMENT
LOWtests/test_agent_executor.py1124 # Step 2: LLM returns final textCOMMENT
LOW.claude/skills/analyze-pr/SKILL.md17### Step 1: 同步最新代码基线COMMENT
LOW.claude/skills/analyze-pr/SKILL.md32### Step 2: 拉取 PR 基本信息COMMENT
LOW.claude/skills/analyze-pr/SKILL.md47### Step 3: 检查标题与描述完整性COMMENT
LOW.claude/skills/analyze-pr/SKILL.md77### Step 4: 优先使用 CI / Diff 证据COMMENT
LOW.claude/skills/analyze-pr/SKILL.md89### Step 5: 评估正确性与风险COMMENT
LOW.claude/skills/analyze-pr/SKILL.md98### Step 6: 生成评审文档COMMENT
LOW.claude/skills/analyze-issue/SKILL.md17### Step 1: 同步最新代码基线COMMENT
LOW.claude/skills/analyze-issue/SKILL.md32### Step 2: 拉取 Issue 信息COMMENT
LOW.claude/skills/analyze-issue/SKILL.md46### Step 3: 回答 4 个核心问题COMMENT
LOW.claude/skills/analyze-issue/SKILL.md53### Step 4: 结合仓库现状做证据检查COMMENT
LOW.claude/skills/analyze-issue/SKILL.md60### Step 5: 形成结论COMMENT
LOW.claude/skills/analyze-issue/SKILL.md74### Step 6: 生成分析文档COMMENT
LOW.claude/skills/fix-issue/SKILL.md19### Step 1: 确认分析基线COMMENT
LOW.claude/skills/fix-issue/SKILL.md23### Step 2: 同步最新代码基线并选择安全的工作方式COMMENT
LOW.claude/skills/fix-issue/SKILL.md41### Step 3: 实施修复COMMENT
LOW.claude/skills/fix-issue/SKILL.md51### Step 4: 按改动面验证COMMENT
LOW.claude/skills/fix-issue/SKILL.md62### Step 5: 更新 issue 分析文档COMMENT
LOW.claude/skills/fix-issue/SKILL.md89### Step 6: 需要确认的后续动作COMMENT
LOWdata_provider/base.py502 # Step 2: 标准化列名COMMENT
LOWdata_provider/base.py505 # Step 3: 数据清洗COMMENT
LOWdata_provider/base.py508 # Step 4: 计算技术指标COMMENT
LOWdata_provider/base.py487 # Step 1: 获取原始数据COMMENT
LOWsrc/core/pipeline.py456 # Step 2: 获取筹码分布 - 使用统一入口,带熔断保护COMMENT
LOWsrc/core/pipeline.py529 # Step 3: 趋势分析(基于交易理念)— 在 Agent 分支之前执行,供两条路径共用COMMENT
LOWsrc/core/pipeline.py635 # Step 5: 获取分析上下文(技术面数据)COMMENT
LOWsrc/core/pipeline.py430 # Step 1: 获取实时行情(量比、换手率等)- 使用统一入口,自动故障切换COMMENT
LOWsrc/core/pipeline.py568 # Step 4: 多维度情报搜索(最新消息+风险排查+业绩预期)COMMENT
LOWsrc/core/pipeline.py653 # Step 6: 增强上下文数据(添加实时行情、筹码、趋势分析结果、股票名称)COMMENT
LOWsrc/core/pipeline.py675 # Step 7: 调用 AI 分析(传入增强的上下文和新闻)COMMENT
LOWsrc/core/pipeline.py804 # Step 8: 保存分析历史记录COMMENT
LOWsrc/core/pipeline.py2888 # Step 1: 获取并保存数据COMMENT
LOWsrc/core/pipeline.py2899 # Step 2: AI 分析COMMENT
LOWsrc/notification_sender/telegram_sender.py379 # Step 1: temporarily protect markdown linksCOMMENT
LOWsrc/notification_sender/telegram_sender.py388 # Step 2: escape remaining special charsCOMMENT
LOWsrc/notification_sender/telegram_sender.py392 # Step 3: restore linksCOMMENT
LOWsrc/notification_sender/slack_sender.py186 # Step 1: 获取上传 URLCOMMENT
LOWsrc/notification_sender/slack_sender.py204 # Step 2: 上传文件内容(raw body,不能用 multipart)COMMENT
LOWsrc/notification_sender/slack_sender.py215 # Step 3: 完成上传并分享到频道COMMENT
Cross-Language Confusion11 hits · 66 pts
SeverityFileLineSnippetContext
HIGHtests/test_searxng_env_docs.py26 "SEARXNG_BASE_URLS: ${{ vars.SEARXNG_BASE_URLS || secrets.SEARXNG_BASE_URLS }}"CODE
HIGHtests/test_storage.py280 ("600519", "cn", "analysis", 12, "trace-12", "buy", "3d", "intraday", "2026-01-01", '{"decision_CODE
HIGHtests/test_chip_structure_fallback.py218 """When LLM returns data_perspective: null, fill should still work."""STRING
HIGHtests/test_bot_dispatcher_async.py96 content='{"intent":"analysis","codes":["600519"],"strategy":null}',CODE
HIGHdata_provider/longbridge_fetcher.py85 GitHub Actions sets ``LONGBRIDGE_HTTP_URL: ${{ vars.X || secrets.X }}``STRING
HIGHscripts/check_static_assets.py84 "`cd apps/dsa-web && npm install && npm run build`.",CODE
HIGHbot/dispatcher.py396{"intent":"analysis","codes":["600519","000858"],"strategy":null}CODE
HIGHbot/dispatcher.py402{"intent":"chat","codes":[],"strategy":null}CODE
HIGHbot/dispatcher.py405{"intent":"none","codes":[],"strategy":null}CODE
HIGHbot/dispatcher.py408{"intent":"analysis","codes":["600519"],"strategy":null}CODE
HIGHbot/dispatcher.py411{"intent":"analysis","codes":[],"strategy":null}CODE
Hallucination Indicators5 hits · 50 pts
SeverityFileLineSnippetContext
CRITICALtests/test_notification_sender.py765 dummy_client.im.v1.file.create.assert_called_once()CODE
CRITICALbot/platforms/feishu_stream.py135 response = self._client.im.v1.message.reply(request)CODE
CRITICALbot/platforms/feishu_stream.py148 response = self._client.im.v1.message.create(request)CODE
CRITICALsrc/feishu_doc.py55 response = self.client.docx.v1.document.create(create_request)CODE
CRITICALsrc/feishu_doc.py87 write_resp = self.client.docx.v1.document_block_children.create(batch_add_request)CODE
Verbosity Indicators25 hits · 46 pts
SeverityFileLineSnippetContext
LOWtests/test_notification_sender.py1551 # Step 2: upload must send raw bytes (not multipart) to match declared lengthCOMMENT
LOWtests/longbridge_live_smoke.py100 # Step 1: yfinance onlyCOMMENT
LOWtests/longbridge_live_smoke.py126 # Step 2: Supplement from LongbridgeCOMMENT
LOWtests/test_agent_executor.py1115 # Step 1: LLM requests tool callCOMMENT
LOWtests/test_agent_executor.py1124 # Step 2: LLM returns final textCOMMENT
LOWdata_provider/base.py502 # Step 2: 标准化列名COMMENT
LOWdata_provider/base.py505 # Step 3: 数据清洗COMMENT
LOWdata_provider/base.py508 # Step 4: 计算技术指标COMMENT
LOWdata_provider/base.py487 # Step 1: 获取原始数据COMMENT
LOWsrc/core/pipeline.py456 # Step 2: 获取筹码分布 - 使用统一入口,带熔断保护COMMENT
LOWsrc/core/pipeline.py529 # Step 3: 趋势分析(基于交易理念)— 在 Agent 分支之前执行,供两条路径共用COMMENT
LOWsrc/core/pipeline.py635 # Step 5: 获取分析上下文(技术面数据)COMMENT
LOWsrc/core/pipeline.py430 # Step 1: 获取实时行情(量比、换手率等)- 使用统一入口,自动故障切换COMMENT
LOWsrc/core/pipeline.py568 # Step 4: 多维度情报搜索(最新消息+风险排查+业绩预期)COMMENT
LOWsrc/core/pipeline.py653 # Step 6: 增强上下文数据(添加实时行情、筹码、趋势分析结果、股票名称)COMMENT
LOWsrc/core/pipeline.py675 # Step 7: 调用 AI 分析(传入增强的上下文和新闻)COMMENT
LOWsrc/core/pipeline.py804 # Step 8: 保存分析历史记录COMMENT
LOWsrc/core/pipeline.py2888 # Step 1: 获取并保存数据COMMENT
LOWsrc/core/pipeline.py2899 # Step 2: AI 分析COMMENT
LOWsrc/notification_sender/telegram_sender.py379 # Step 1: temporarily protect markdown linksCOMMENT
LOWsrc/notification_sender/telegram_sender.py388 # Step 2: escape remaining special charsCOMMENT
LOWsrc/notification_sender/telegram_sender.py392 # Step 3: restore linksCOMMENT
LOWsrc/notification_sender/slack_sender.py186 # Step 1: 获取上传 URLCOMMENT
LOWsrc/notification_sender/slack_sender.py204 # Step 2: 上传文件内容(raw body,不能用 multipart)COMMENT
LOWsrc/notification_sender/slack_sender.py215 # Step 3: 完成上传并分享到频道COMMENT
Fake / Example Data44 hits · 35 pts
SeverityFileLineSnippetContext
LOWtests/test_config_env_compat.py990 "EMAIL_GROUP_1": "user@example.com",CODE
LOWtests/test_config_env_compat.py998 self.assertEqual(emails, ["user@example.com"])CODE
LOWtests/test_search_news_freshness.py64 bocha_keys=["dummy_key"],CODE
LOWtests/test_search_news_freshness.py144 bocha_keys=["dummy_key"],CODE
LOWtests/test_search_news_freshness.py173 bocha_keys=["dummy_key"],CODE
LOWtests/test_search_news_freshness.py215 bocha_keys=["dummy_key"],CODE
LOWtests/test_search_news_freshness.py249 bocha_keys=["dummy_key"],CODE
LOWtests/test_search_news_freshness.py280 bocha_keys=["dummy_key"],CODE
LOWtests/test_search_news_freshness.py314 bocha_keys=["dummy_key"],CODE
LOWtests/test_search_news_freshness.py352 bocha_keys=["dummy_key"],CODE
LOWtests/test_search_news_freshness.py402 bocha_keys=["dummy_key"],CODE
LOWtests/test_search_news_freshness.py429 bocha_keys=["dummy_key"],CODE
LOWtests/test_search_news_freshness.py481 bocha_keys=["dummy_key"],CODE
LOWtests/test_search_news_freshness.py1459 bocha_keys=["dummy_key"],CODE
LOWtests/test_search_news_freshness.py1508 bocha_keys=["dummy_key"],CODE
LOWtests/test_search_news_freshness.py1561 bocha_keys=["dummy_key"],CODE
LOWtests/test_search_news_freshness.py1685 bocha_keys=["dummy_key"],CODE
LOWtests/test_search_news_freshness.py1733 bocha_keys=["dummy_key"],CODE
LOWtests/test_search_news_freshness.py1781 bocha_keys=["dummy_key"],CODE
LOWtests/test_search_news_freshness.py1869 brave_keys=["dummy_key"],CODE
LOWtests/test_search_serpapi_provider.py307 provider = SerpAPISearchProvider(["dummy_key"])CODE
LOWtests/test_search_serpapi_provider.py52 provider = SerpAPISearchProvider(["dummy_key"])CODE
LOWtests/test_search_serpapi_provider.py78 provider = SerpAPISearchProvider(["dummy_key"])CODE
LOWtests/test_search_serpapi_provider.py113 provider = SerpAPISearchProvider(["dummy_key"])CODE
LOWtests/test_search_serpapi_provider.py151 provider = SerpAPISearchProvider(["dummy_key"])CODE
LOWtests/test_search_serpapi_provider.py187 provider = SerpAPISearchProvider(["dummy_key"])CODE
LOWtests/test_search_serpapi_provider.py221 provider = SerpAPISearchProvider(["dummy_key"])CODE
LOWtests/test_search_serpapi_provider.py248 provider = SerpAPISearchProvider(["dummy_key"])CODE
LOWtests/test_search_serpapi_provider.py349 provider = SerpAPISearchProvider(["dummy_key"])CODE
LOWtests/test_search_serpapi_provider.py391 provider = SerpAPISearchProvider(["dummy_key"])CODE
LOWtests/test_search_serpapi_provider.py433 provider = SerpAPISearchProvider(["dummy_key"])CODE
LOWtests/test_search_serpapi_provider.py468 provider = SerpAPISearchProvider(["dummy_key"])CODE
LOWtests/test_search_serpapi_provider.py503 provider = SerpAPISearchProvider(["dummy_key"])CODE
LOWtests/test_search_tavily_provider.py57 provider = TavilySearchProvider(["dummy_key"])CODE
LOWtests/test_search_tavily_provider.py74 self.assertEqual(_FakeTavilyClient.init_api_keys, ["dummy_key"])CODE
LOWtests/test_search_tavily_provider.py85 provider = TavilySearchProvider(["dummy_key"])CODE
LOWtests/test_search_tavily_provider.py106 provider = TavilySearchProvider(["dummy_key"])CODE
LOWtests/test_search_tavily_provider.py145 tavily_keys=["dummy_key"],CODE
LOWtests/test_search_tavily_provider.py170 tavily_keys=["dummy_key"],CODE
LOWtests/test_search_tavily_provider.py196 tavily_keys=["dummy_key"],CODE
LOWtests/test_search_tavily_provider.py226 tavily_keys=["dummy_key"],CODE
LOWtests/test_search_tavily_provider.py258 tavily_keys=["dummy_key"],CODE
LOWbot/commands/ask.py217 skill_id = self._parse_skill(["placeholder"] + remaining_args) if remaining_args else self._get_default_skill_idCODE
LOWsrc/core/config_registry.py164 "placeholder": "optional provider/model override",CODE
Cross-File Repetition7 hits · 35 pts
SeverityFileLineSnippetContext
HIGHdata_provider/efinance_fetcher.py0判断代码是否为美股 美股代码规则: - 1-5个大写字母,如 'aapl', 'tsla' - 可能包含 '.',如 'brk.b'STRING
HIGHdata_provider/tushare_fetcher.py0判断代码是否为美股 美股代码规则: - 1-5个大写字母,如 'aapl', 'tsla' - 可能包含 '.',如 'brk.b'STRING
HIGHdata_provider/baostock_fetcher.py0判断代码是否为美股 美股代码规则: - 1-5个大写字母,如 'aapl', 'tsla' - 可能包含 '.',如 'brk.b'STRING
HIGHdata_provider/pytdx_fetcher.py0判断代码是否为美股 美股代码规则: - 1-5个大写字母,如 'aapl', 'tsla' - 可能包含 '.',如 'brk.b'STRING
HIGHsrc/agent/memory.py0compatibility wrapper for legacy strategy-based callers.STRING
HIGHsrc/agent/skills/router.py0compatibility wrapper for legacy strategy-based callers.STRING
HIGHsrc/services/backtest_service.py0compatibility wrapper for legacy strategy-based callers.STRING
AI Structural Patterns26 hits · 21 pts
SeverityFileLineSnippetContext
LOWtests/test_decision_signal_api.py1318CODE
LOWtests/test_stock_analyzer_bias.py22CODE
LOWtests/test_report_renderer.py23CODE
LOWtests/test_tickflow_fetcher.py147CODE
LOWapi/v1/endpoints/decision_signals.py142CODE
LOWapi/v1/endpoints/backtest.py99CODE
LOWapi/v1/endpoints/portfolio.py492CODE
LOWsrc/search_service.py2258CODE
LOWsrc/llm/provider_cache.py167CODE
LOWsrc/core/market_review.py174CODE
LOWsrc/core/pipeline.py177CODE
LOWsrc/repositories/decision_signal_repo.py159CODE
LOWsrc/repositories/decision_signal_outcome_repo.py25CODE
LOWsrc/repositories/intelligence_repo.py152CODE
LOWsrc/services/run_diagnostics.py868CODE
LOWsrc/services/run_diagnostics.py931CODE
LOWsrc/services/task_queue.py322CODE
LOWsrc/services/task_queue.py375CODE
LOWsrc/services/decision_signal_service.py109CODE
LOWsrc/services/daily_market_context.py103CODE
LOWsrc/services/alert_indicators.py210CODE
LOWsrc/services/run_flow.py1245CODE
LOWsrc/services/alert_service.py309CODE
LOWsrc/services/analyzer_service.py68CODE
LOWsrc/services/decision_signal_outcome_service.py73CODE
LOWsrc/services/analysis_service.py50CODE
Magic Placeholder Names4 hits · 20 pts
SeverityFileLineSnippetContext
HIGHtests/test_anspire_search.py560 print(" Windows PowerShell: $env:ANSPIRE_API_KEYS=\"your_api_key\"")CODE
HIGHtests/test_anspire_search.py561 print(" Linux/Mac: export ANSPIRE_API_KEYS=\"your_api_key\"")CODE
HIGHtests/test_anspire_search.py631 print(" Windows PowerShell: $env:ANSPIRE_API_KEYS=\"your_api_key\"")CODE
HIGHtests/test_anspire_search.py632 print(" Linux/Mac: export ANSPIRE_API_KEYS=\"your_api_key\"")CODE
Modern AI Meta-Vocabulary5 hits · 11 pts
SeverityFileLineSnippetContext
MEDIUMtests/test_phase_decision_guardrail.py2"""Tests for Issue #1386 P5 phase decision guardrails."""STRING
MEDIUMsrc/config.py850 agent_orchestrator_timeout_s: int = 600 # Cooperative timeout budget for the whole multi-agent pipelineCODE
MEDIUMsrc/config.py867 agent_event_monitor_enabled: bool = False # Enable periodic event-driven alert checks in schedule modeCODE
MEDIUMsrc/market_analyzer.py164 # Structural/template language. Korean reuses the English scaffolding;COMMENT
MEDIUMsrc/agent/agents/base_agent.py227 # Cap per-field size to avoid overwhelming the context windowCOMMENT
Self-Referential Comments3 hits · 8 pts
SeverityFileLineSnippetContext
MEDIUMtests/test_agent_pipeline.py2844 # Create a fresh Skill with default enabled=FalseCOMMENT
MEDIUMtests/test_agent_registry.py852 # Create a custom directory with an overriding strategyCOMMENT
MEDIUMtests/test_agent_registry.py725 # Create an invalid YAML file (should be skipped)STRING
Over-Commented Block8 hits · 6 pts
SeverityFileLineSnippetContext
LOWtests/test_stock_analyzer_bias.py161 mock_get_config.return_value.bias_threshold = 5.0COMMENT
LOWdocs/examples/litellm_config.example.yaml1# ===================================COMMENT
LOWdocs/examples/litellm_config.example.yaml61 - model_name: gemini/gemini-2.5-flashCOMMENT
LOWdocs/examples/litellm_config.example.yaml81 # litellm_params:COMMENT
LOWscripts/test.sh1#!/bin/bashCOMMENT
LOWsrc/config.py1041 enable_realtime_technical_indicators: bool = TrueCOMMENT
LOWsrc/market_analyzer.py581 # # 取最新一条数据COMMENT
LOWsrc/agent/llm_adapter.py101_OPT_IN_THINKING_MODELS: Dict[str, dict] = {COMMENT
Dead Code2 hits · 4 pts
SeverityFileLineSnippetContext
MEDIUMtests/test_market_analyzer_generate_text.py936CODE
MEDIUMtests/test_llm_param_recovery.py169CODE
Redundant / Tautological Comments1 hit · 2 pts
SeverityFileLineSnippetContext
LOWsrc/config.py443 # Check if the prefix is a known LiteLLM provider; if so, keep it.COMMENT
AI Slop Vocabulary1 hit · 1 pts
SeverityFileLineSnippetContext
MEDIUMtests/test_agent_pipeline.py2761 """Test the _safe_int helper for robust sentiment_score parsing."""STRING