Repository Analysis

tirth8205/code-review-graph

Local-first code intelligence graph for MCP and CLI. Builds a persistent map of your codebase so AI coding tools read only what matters, with benchmarked context reductions on reviews and large-repo workflows.

41.5 Strong AI signal View on GitHub

Analysis Overview

This report presents the forensic synthetic code analysis of tirth8205/code-review-graph, a Python project with 19,499 GitHub stars. SynthScan v2.0 examined 69,805 lines of code across 186 source files, recording 1895 pattern matches distributed across 19 syntactic categories. The overall adjusted score of 41.5 places this repository in the Strong 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).

41.5
Adjusted Score
41.5
Raw Score
100%
Time Factor
2026-06-14
Last Push
19.5K
Stars
Python
Language
69.8K
Lines of Code
186
Files
1.9K
Pattern Hits
2026-07-14
Scan Date
0.57
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 0HIGH 106MEDIUM 350LOW 1439

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 1895 distinct pattern matches across 19 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.

Decorative Section Separators328 hits · 1110 pts
SeverityFileLineSnippetContext
MEDIUMcode_review_graph/communities.py28# ---------------------------------------------------------------------------COMMENT
MEDIUMcode_review_graph/communities.py30# ---------------------------------------------------------------------------COMMENT
MEDIUMcode_review_graph/communities.py40# ---------------------------------------------------------------------------COMMENT
MEDIUMcode_review_graph/communities.py42# ---------------------------------------------------------------------------COMMENT
MEDIUMcode_review_graph/communities.py63# ---------------------------------------------------------------------------COMMENT
MEDIUMcode_review_graph/communities.py65# ---------------------------------------------------------------------------COMMENT
MEDIUMcode_review_graph/communities.py157# ---------------------------------------------------------------------------COMMENT
MEDIUMcode_review_graph/communities.py159# ---------------------------------------------------------------------------COMMENT
MEDIUMcode_review_graph/communities.py231# ---------------------------------------------------------------------------COMMENT
MEDIUMcode_review_graph/communities.py233# ---------------------------------------------------------------------------COMMENT
MEDIUMcode_review_graph/communities.py345# ---------------------------------------------------------------------------COMMENT
MEDIUMcode_review_graph/communities.py347# ---------------------------------------------------------------------------COMMENT
MEDIUMcode_review_graph/communities.py436# ---------------------------------------------------------------------------COMMENT
MEDIUMcode_review_graph/communities.py438# ---------------------------------------------------------------------------COMMENT
MEDIUMcode_review_graph/communities.py580# ---------------------------------------------------------------------------COMMENT
MEDIUMcode_review_graph/communities.py582# ---------------------------------------------------------------------------COMMENT
MEDIUMcode_review_graph/exports.py16# -------------------------------------------------------------------COMMENT
MEDIUMcode_review_graph/exports.py18# -------------------------------------------------------------------COMMENT
MEDIUMcode_review_graph/exports.py82# -------------------------------------------------------------------COMMENT
MEDIUMcode_review_graph/exports.py84# -------------------------------------------------------------------COMMENT
MEDIUMcode_review_graph/exports.py153# -------------------------------------------------------------------COMMENT
MEDIUMcode_review_graph/exports.py155# -------------------------------------------------------------------COMMENT
MEDIUMcode_review_graph/exports.py315# -------------------------------------------------------------------COMMENT
MEDIUMcode_review_graph/exports.py317# -------------------------------------------------------------------COMMENT
MEDIUMcode_review_graph/changes.py28# ---------------------------------------------------------------------------COMMENT
MEDIUMcode_review_graph/changes.py30# ---------------------------------------------------------------------------COMMENT
MEDIUMcode_review_graph/changes.py169# ---------------------------------------------------------------------------COMMENT
MEDIUMcode_review_graph/changes.py171# ---------------------------------------------------------------------------COMMENT
MEDIUMcode_review_graph/changes.py214# ---------------------------------------------------------------------------COMMENT
MEDIUMcode_review_graph/changes.py216# ---------------------------------------------------------------------------COMMENT
MEDIUMcode_review_graph/changes.py272# ---------------------------------------------------------------------------COMMENT
MEDIUMcode_review_graph/changes.py274# ---------------------------------------------------------------------------COMMENT
MEDIUMcode_review_graph/spring_resolver.py50 # -----------------------------------------------------------------------COMMENT
MEDIUMcode_review_graph/spring_resolver.py53 # -----------------------------------------------------------------------COMMENT
MEDIUMcode_review_graph/spring_resolver.py74 # -----------------------------------------------------------------------COMMENT
MEDIUMcode_review_graph/spring_resolver.py81 # -----------------------------------------------------------------------COMMENT
MEDIUMcode_review_graph/spring_resolver.py100 # -----------------------------------------------------------------------COMMENT
MEDIUMcode_review_graph/spring_resolver.py103 # -----------------------------------------------------------------------COMMENT
MEDIUMcode_review_graph/spring_resolver.py113 # -----------------------------------------------------------------------COMMENT
MEDIUMcode_review_graph/spring_resolver.py115 # -----------------------------------------------------------------------COMMENT
MEDIUMcode_review_graph/tsconfig_resolver.py31 # ------------------------------------------------------------------COMMENT
MEDIUMcode_review_graph/tsconfig_resolver.py33 # ------------------------------------------------------------------COMMENT
MEDIUMcode_review_graph/tsconfig_resolver.py61 # ------------------------------------------------------------------COMMENT
MEDIUMcode_review_graph/tsconfig_resolver.py63 # ------------------------------------------------------------------COMMENT
MEDIUMcode_review_graph/tsconfig_resolver.py226# ---------------------------------------------------------------------------COMMENT
MEDIUMcode_review_graph/tsconfig_resolver.py228# ---------------------------------------------------------------------------COMMENT
MEDIUMcode_review_graph/refactor.py47# ---------------------------------------------------------------------------COMMENT
MEDIUMcode_review_graph/refactor.py49# ---------------------------------------------------------------------------COMMENT
MEDIUMcode_review_graph/refactor.py68# ---------------------------------------------------------------------------COMMENT
MEDIUMcode_review_graph/refactor.py70# ---------------------------------------------------------------------------COMMENT
MEDIUMcode_review_graph/refactor.py180# ---------------------------------------------------------------------------COMMENT
MEDIUMcode_review_graph/refactor.py182# ---------------------------------------------------------------------------COMMENT
MEDIUMcode_review_graph/refactor.py582# ---------------------------------------------------------------------------COMMENT
MEDIUMcode_review_graph/refactor.py584# ---------------------------------------------------------------------------COMMENT
MEDIUMcode_review_graph/refactor.py672# ---------------------------------------------------------------------------COMMENT
MEDIUMcode_review_graph/refactor.py674# ---------------------------------------------------------------------------COMMENT
MEDIUMcode_review_graph/graph.py28# ---------------------------------------------------------------------------COMMENT
MEDIUMcode_review_graph/graph.py30# ---------------------------------------------------------------------------COMMENT
MEDIUMcode_review_graph/graph.py138# ---------------------------------------------------------------------------STRING
MEDIUMcode_review_graph/graph.py140# ---------------------------------------------------------------------------STRING
268 more matches not shown…
Hyper-Verbose Identifiers1042 hits · 883 pts
SeverityFileLineSnippetContext
LOWcode_review_graph/communities.py635def incremental_detect_communities(CODE
LOWcode_review_graph/communities.py806def get_architecture_overview(store: GraphStore) -> dict[str, Any]:CODE
LOWcode_review_graph/analysis.py213def find_surprising_connections(CODE
LOWcode_review_graph/analysis.py317def generate_suggested_questions(CODE
LOWcode_review_graph/jedi_resolver.py234def _find_untracked_method_calls(root, is_test_file: bool = False):CODE
LOWcode_review_graph/refactor.py229def _collect_type_referenced_names(store: GraphStore) -> set[str]:CODE
LOWcode_review_graph/skills.py596def generate_codex_hooks_config(repo_root: Path) -> dict[str, Any]:CODE
LOWcode_review_graph/skills.py1120def inject_platform_instructions(repo_root: Path, target: str = "all") -> list[str]:CODE
LOWcode_review_graph/skills.py1150def generate_cursor_hooks_config() -> dict[str, Any]:CODE
LOWcode_review_graph/skills.py1097def install_gemini_cli_skills(repo_root: Path) -> Path:STRING
LOWcode_review_graph/context_savings.py201def format_context_savings_panel(CODE
LOWcode_review_graph/graph.py360 def search_edges_by_target_name(self, name: str, kind: str = "CALLS") -> list[GraphEdge]:CODE
LOWcode_review_graph/graph.py481 def resolve_bare_call_targets(self) -> int:CODE
LOWcode_review_graph/graph.py752 def _get_impact_radius_networkx(STRING
LOWcode_review_graph/graph.py960 def get_flow_criticalities_for_node(self, node_id: int) -> list[float]:CODE
LOWcode_review_graph/graph.py980 def get_community_ids_by_qualified_names(CODE
LOWcode_review_graph/graph.py1011 def get_nodes_without_signature(self) -> list[sqlite3.Row]:CODE
LOWcode_review_graph/graph.py1154 def get_nodes_by_community_id(CODE
LOWcode_review_graph/rescript_resolver.py36def resolve_rescript_cross_module(store: GraphStore) -> dict:CODE
LOWcode_review_graph/parser.py3711 def _extract_js_var_functions(CODE
LOWcode_review_graph/parser.py6752 def _handle_r_binary_operator(CODE
LOWcode_review_graph/parser.py680def _rescript_brace_depth_array(cleaned: str) -> list[int]:CODE
LOWcode_review_graph/parser.py876 def _detect_language_from_shebang(path: Path) -> Optional[str]:CODE
LOWcode_review_graph/parser.py1503 def _parse_databricks_py_notebook(CODE
LOWcode_review_graph/parser.py2446 def _elixir_function_name_and_params(CODE
LOWcode_review_graph/parser.py2475 def _extract_elixir_constructs(CODE
LOWcode_review_graph/parser.py2661 def _extract_nix_flake_input_urls(CODE
LOWcode_review_graph/parser.py2711 def _extract_nix_import_targets(self, rhs_node) -> list[tuple[str, int]]:CODE
LOWcode_review_graph/parser.py2929 def _extract_bash_source_command(CODE
LOWcode_review_graph/parser.py2965 def _extract_dart_calls_from_children(CODE
LOWcode_review_graph/parser.py3122 def _julia_call_first_identifier(self, call_expr) -> Optional[str]:CODE
LOWcode_review_graph/parser.py3131 def _extract_julia_constructs(CODE
LOWcode_review_graph/parser.py3488 def _handle_lua_variable_declaration(CODE
LOWcode_review_graph/parser.py3597 def _handle_lua_table_function(CODE
LOWcode_review_graph/parser.py3798 def _extract_js_field_function(CODE
LOWcode_review_graph/parser.py3916 def _emit_spring_field_injection(CODE
LOWcode_review_graph/parser.py3988 def _emit_spring_constructor_injection(CODE
LOWcode_review_graph/parser.py4026 def _emit_temporal_stub_fields(CODE
LOWcode_review_graph/parser.py4084 def _get_kafka_annotation_topics(annotation_node) -> list[str]:CODE
LOWcode_review_graph/parser.py4114 def _emit_kafka_edges_from_class(CODE
LOWcode_review_graph/parser.py4196 def _emit_kafka_edges_from_method(CODE
LOWcode_review_graph/parser.py4721 def _get_java_method_and_receiver(node) -> tuple[Optional[str], Optional[str]]:CODE
LOWcode_review_graph/parser.py4762 def _extract_jsx_component_call(CODE
LOWcode_review_graph/parser.py4802 def _resolve_jsx_component_target(CODE
LOWcode_review_graph/parser.py4853 def _extract_value_references(CODE
LOWcode_review_graph/parser.py5063 def _extract_solidity_constructs(CODE
LOWcode_review_graph/parser.py5304 def _collect_js_exported_local_names(CODE
LOWcode_review_graph/parser.py6610 def _get_jsx_component_reference(self, node) -> Optional[tuple[Optional[str], str]]:CODE
LOWcode_review_graph/parser.py6645 def _get_member_expression_root_name(self, node) -> Optional[str]:CODE
LOWcode_review_graph/parser.py6655 def _looks_like_component_name(name: str) -> bool:CODE
LOWcode_review_graph/cli.py133def _instruction_files_to_modify(STRING
LOWcode_review_graph/search.py80def extract_query_identifiers(query: str) -> list[str]:STRING
LOWcode_review_graph/main.py96async def build_or_update_graph_tool(CODE
LOWcode_review_graph/main.py279def semantic_search_nodes_tool(CODE
LOWcode_review_graph/main.py395def find_large_functions_tool(CODE
LOWcode_review_graph/main.py551def get_architecture_overview_tool(CODE
LOWcode_review_graph/main.py795def get_surprising_connections_tool(CODE
LOWcode_review_graph/main.py815def get_suggested_questions_tool(CODE
LOWcode_review_graph/incremental.py234def _write_data_dir_gitignore(data_dir: Path) -> None:CODE
LOWcode_review_graph/incremental.py327def ensure_repo_gitignore_excludes_crg(repo_root: Path) -> str:CODE
982 more matches not shown…
Cross-Language Confusion103 hits · 459 pts
SeverityFileLineSnippetContext
HIGHcode_review_graph/skills.py998cat > /dev/null || trueCODE
HIGHcode_review_graph/skills.py1000msg="$(code-review-graph status --repo "__CRG_REPO__" 2>&1 | head -n 1 || true)"CODE
HIGHcode_review_graph/skills.py1006' 2>/dev/null || echo '{"suppressOutput": true}'CODE
HIGHcode_review_graph/skills.py564 "cat >/dev/null || true; "CODE
HIGHcode_review_graph/skills.py582 "cat >/dev/null || true; "CODE
HIGHcode_review_graph/skills.py607 "cat >/dev/null || true; "CODE
HIGHcode_review_graph/skills.py625 "cat >/dev/null || true; "CODE
HIGHcode_review_graph/skills.py661 code-review-graph update || trueCODE
HIGHcode_review_graph/skills.py662 code-review-graph detect-changes --brief || trueCODE
HIGHcode_review_graph/skills.py1017cat > /dev/null || trueCODE
HIGHcode_review_graph/skills.py1019code-review-graph update --skip-flows --repo "__CRG_REPO__" >/dev/null 2>&1 || trueCODE
HIGHcode_review_graph/skills.py1217" 2>/dev/null || echo '{"passed":true}'CODE
HIGHcode_review_graph/skills.py1239" <<< "$output" 2>/dev/null || echo '{"passed":true}'CODE
HIGHcode_review_graph/skills.py1261" <<< "$output" 2>/dev/null || echo '{"passed":true}'CODE
HIGHcode_review_graph/visualization.py832 var bg = communityColoringOn && d.community_id != null ? communityColorScale(d.community_id) : (KIND_COLOR[d.kind] || CODE
HIGHcode_review_graph/visualization.py837 if (d.line_start != null) h += '<div class="tt-row"><span class="tt-label">Lines: </span>' + d.line_start + ' \u2013 'CODE
HIGHcode_review_graph/visualization.py837 if (d.line_start != null) h += '<div class="tt-row"><span class="tt-label">Lines: </span>' + d.line_start + ' \u2013 'CODE
HIGHcode_review_graph/visualization.py840 if (d.community_id != null) {CODE
HIGHcode_review_graph/visualization.py890 CONTAINS: { dash:null, width:1, opacity:0.14, marker:"" },CODE
HIGHcode_review_graph/visualization.py891 CALLS: { dash:null, width:2, opacity:0.7, marker:"url(#arrow-calls)" },CODE
HIGHcode_review_graph/visualization.py898function eStyle(d) { return EDGE_CFG[d.kind] || {dash:null,width:1,opacity:0.3,marker:""}; }CODE
HIGHcode_review_graph/visualization.py901 if (communityColoringOn && d.community_id != null) return communityColorScale(d.community_id);CODE
HIGHcode_review_graph/visualization.py901 if (communityColoringOn && d.community_id != null) return communityColorScale(d.community_id);CODE
HIGHcode_review_graph/visualization.py972 var best = null, bestDist = Infinity;CODE
HIGHcode_review_graph/visualization.py978 if (ev.key === "ArrowRight" && dx > 0 && Math.abs(dy) < Math.abs(dx)) ok = true;CODE
HIGHcode_review_graph/visualization.py979 if (ev.key === "ArrowLeft" && dx < 0 && Math.abs(dy) < Math.abs(dx)) ok = true;CODE
HIGHcode_review_graph/visualization.py980 if (ev.key === "ArrowDown" && dy > 0 && Math.abs(dx) < Math.abs(dy)) ok = true;CODE
HIGHcode_review_graph/visualization.py981 if (ev.key === "ArrowUp" && dy < 0 && Math.abs(dx) < Math.abs(dy)) ok = true;CODE
HIGHcode_review_graph/visualization.py982 if (ok && dist < bestDist) { best = n; bestDist = dist; }CODE
HIGHcode_review_graph/visualization.py1170 return d._hidden ? "none" : null;CODE
HIGHcode_review_graph/visualization.py1179 if (cid == null) {CODE
HIGHcode_review_graph/visualization.py1182 if (cid != null && hiddenCommunities.has(cid)) {CODE
HIGHcode_review_graph/visualization.py1185 return null;CODE
HIGHcode_review_graph/visualization.py1190 if (cid == null) {CODE
HIGHcode_review_graph/visualization.py1193 if (cid != null && hiddenCommunities.has(cid)) {CODE
HIGHcode_review_graph/visualization.py1196 return null;CODE
HIGHcode_review_graph/visualization.py1200var activeFlowQns = null;CODE
HIGHcode_review_graph/visualization.py1203 if (idx === "") { activeFlowQns = null; clearFlowHighlight(); return; }CODE
HIGHcode_review_graph/visualization.py1212 if (!activeFlowQns || activeFlowQns.size === 0) { clearFlowHighlight(); return; }CODE
HIGHcode_review_graph/visualization.py1249 if (t === d.qualified_name && e.kind === "CALLS") { var sN = nodeById.get(s); if (sN) callers.push(sN); }CODE
HIGHcode_review_graph/visualization.py1249 if (t === d.qualified_name && e.kind === "CALLS") { var sN = nodeById.get(s); if (sN) callers.push(sN); }CODE
HIGHcode_review_graph/visualization.py1250 if (s === d.qualified_name && e.kind === "CALLS") { var tN = nodeById.get(t); if (tN) callees.push(tN); }CODE
HIGHcode_review_graph/visualization.py1250 if (s === d.qualified_name && e.kind === "CALLS") { var tN = nodeById.get(t); if (tN) callees.push(tN); }CODE
HIGHcode_review_graph/visualization.py1253 var bg = communityColoringOn && d.community_id != null ? communityColorScale(d.community_id) : (KIND_COLOR[d.kind] || CODE
HIGHcode_review_graph/visualization.py1259 if (d.community_id != null) {CODE
HIGHcode_review_graph/visualization.py1628 CROSS_COMMUNITY: { dash: null, width: 2, opacity: 0.6, marker: "" },CODE
HIGHcode_review_graph/visualization.py1630 CONTAINS: { dash: null, width: 1, opacity: 0.08, marker: "" },CODE
HIGHcode_review_graph/visualization.py1631 CALLS: { dash: null, width: 1.5, opacity: 0.7, marker: "url(#arrow-calls)" },CODE
HIGHcode_review_graph/visualization.py1635function eStyle(d) { return EDGE_CFG[d.kind] || { dash: null, width: 1, opacity: 0.3, marker: "" }; }CODE
HIGHcode_review_graph/visualization.py1740 if (d.line_start != null) addRow("Lines", d.line_start + " \u2013 " + (d.line_end || d.line_start));CODE
HIGHcode_review_graph/visualization.py1740 if (d.line_start != null) addRow("Lines", d.line_start + " \u2013 " + (d.line_end || d.line_start));CODE
HIGHcode_review_graph/visualization.py1743 if (d.weight != null) addRow("Weight", d.weight);CODE
HIGHcode_review_graph/visualization.py1780var linkSel = null, labelSel = null;CODE
HIGHcode_review_graph/visualization.py1782var simulation = null;CODE
HIGHcode_review_graph/visualization.py1788 if (d.kind === "Community") return Math.max(12, Math.min(40, 8 + Math.sqrt(d.member_count || 1) * 3));CODE
HIGHcode_review_graph/visualization.py1790 if (d.symbol_count != null) return Math.max(8, Math.min(30, 6 + Math.sqrt(d.symbol_count || 1) * 2));CODE
HIGHcode_review_graph/visualization.py1790 if (d.symbol_count != null) return Math.max(8, Math.min(30, 6 + Math.sqrt(d.symbol_count || 1) * 2));CODE
HIGHcode_review_graph/visualization.py1796 if (d.kind === "Community" && d.community_id != null) return communityColorScale(d.community_id);CODE
HIGHcode_review_graph/visualization.py1838 if (d.kind === "CROSS_COMMUNITY" || d.kind === "DEPENDS_ON") return Math.max(100, 200 - (d.weight || 1) * 5);CODE
HIGHcode_review_graph/visualization.py1843 if (d.kind === "CROSS_COMMUNITY" || d.kind === "DEPENDS_ON") return 0.1 + Math.min(0.5, (d.weight || 1) * 0.02);CODE
43 more matches not shown…
Unused Imports126 hits · 112 pts
SeverityFileLineSnippetContext
LOWcode_review_graph/communities.py7CODE
LOWcode_review_graph/exports.py3CODE
LOWcode_review_graph/changes.py7CODE
LOWcode_review_graph/spring_resolver.py18CODE
LOWcode_review_graph/tsconfig_resolver.py8CODE
LOWcode_review_graph/analysis.py4CODE
LOWcode_review_graph/jedi_resolver.py12CODE
LOWcode_review_graph/refactor.py9CODE
LOWcode_review_graph/skills.py9CODE
LOWcode_review_graph/memory.py3CODE
LOWcode_review_graph/enrich.py8CODE
LOWcode_review_graph/registry.py7CODE
LOWcode_review_graph/context_savings.py7CODE
LOWcode_review_graph/graph.py8CODE
LOWcode_review_graph/graph_diff.py3CODE
LOWcode_review_graph/constants.py3CODE
LOWcode_review_graph/__init__.py3CODE
LOWcode_review_graph/__init__.py3CODE
LOWcode_review_graph/__init__.py3CODE
LOWcode_review_graph/__init__.py3CODE
LOWcode_review_graph/__init__.py3CODE
LOWcode_review_graph/rescript_resolver.py23CODE
LOWcode_review_graph/visualization.py14CODE
LOWcode_review_graph/prompts.py13CODE
LOWcode_review_graph/parser.py7CODE
LOWcode_review_graph/embeddings.py11CODE
LOWcode_review_graph/embeddings.py735CODE
LOWcode_review_graph/cli.py27CODE
LOWcode_review_graph/custom_languages.py24CODE
LOWcode_review_graph/migrations.py7CODE
LOWcode_review_graph/search.py8CODE
LOWcode_review_graph/flows.py9CODE
LOWcode_review_graph/postprocessing.py15CODE
LOWcode_review_graph/hints.py9CODE
LOWcode_review_graph/main.py9CODE
LOWcode_review_graph/wiki.py7CODE
LOWcode_review_graph/daemon_cli.py13CODE
LOWcode_review_graph/daemon.py11CODE
LOWcode_review_graph/token_benchmark.py3CODE
LOWcode_review_graph/incremental.py7CODE
LOWcode_review_graph/incremental.py1221CODE
LOWcode_review_graph/temporal_resolver.py19CODE
LOWcode_review_graph/tools/analysis_tools.py3CODE
LOWcode_review_graph/tools/build.py3CODE
LOWcode_review_graph/tools/query.py3CODE
LOWcode_review_graph/tools/refactor_tools.py3CODE
LOWcode_review_graph/tools/community_tools.py3CODE
LOWcode_review_graph/tools/_common.py3CODE
LOWcode_review_graph/tools/__init__.py34CODE
LOWcode_review_graph/tools/__init__.py37CODE
LOWcode_review_graph/tools/__init__.py38CODE
LOWcode_review_graph/tools/__init__.py39CODE
LOWcode_review_graph/tools/__init__.py40CODE
LOWcode_review_graph/tools/__init__.py43CODE
LOWcode_review_graph/tools/__init__.py48CODE
LOWcode_review_graph/tools/__init__.py48CODE
LOWcode_review_graph/tools/__init__.py48CODE
LOWcode_review_graph/tools/__init__.py55CODE
LOWcode_review_graph/tools/__init__.py55CODE
LOWcode_review_graph/tools/__init__.py55CODE
66 more matches not shown…
Deep Nesting105 hits · 76 pts
SeverityFileLineSnippetContext
LOWcode_review_graph/communities.py128CODE
LOWcode_review_graph/exports.py140CODE
LOWcode_review_graph/exports.py157CODE
LOWcode_review_graph/changes.py174CODE
LOWcode_review_graph/tsconfig_resolver.py65CODE
LOWcode_review_graph/tsconfig_resolver.py146CODE
LOWcode_review_graph/refactor.py240CODE
LOWcode_review_graph/refactor.py587CODE
LOWcode_review_graph/refactor.py677CODE
LOWcode_review_graph/refactor.py306CODE
LOWcode_review_graph/skills.py710CODE
LOWcode_review_graph/skills.py761CODE
LOWcode_review_graph/memory.py77CODE
LOWcode_review_graph/enrich.py30CODE
LOWcode_review_graph/registry.py57CODE
LOWcode_review_graph/graph.py375CODE
LOWcode_review_graph/graph.py752CODE
LOWcode_review_graph/visualization.py28CODE
LOWcode_review_graph/parser.py613CODE
LOWcode_review_graph/parser.py698CODE
LOWcode_review_graph/parser.py1047CODE
LOWcode_review_graph/parser.py1158CODE
LOWcode_review_graph/parser.py1288CODE
LOWcode_review_graph/parser.py1372CODE
LOWcode_review_graph/parser.py1503CODE
LOWcode_review_graph/parser.py1607CODE
LOWcode_review_graph/parser.py2099CODE
LOWcode_review_graph/parser.py2205CODE
LOWcode_review_graph/parser.py2446CODE
LOWcode_review_graph/parser.py2475CODE
LOWcode_review_graph/parser.py2661CODE
LOWcode_review_graph/parser.py2711CODE
LOWcode_review_graph/parser.py2789CODE
LOWcode_review_graph/parser.py2929CODE
LOWcode_review_graph/parser.py2965CODE
LOWcode_review_graph/parser.py3088CODE
LOWcode_review_graph/parser.py3108CODE
LOWcode_review_graph/parser.py3131CODE
LOWcode_review_graph/parser.py3488CODE
LOWcode_review_graph/parser.py3675CODE
LOWcode_review_graph/parser.py3711CODE
LOWcode_review_graph/parser.py3863CODE
LOWcode_review_graph/parser.py3877CODE
LOWcode_review_graph/parser.py3916CODE
LOWcode_review_graph/parser.py3988CODE
LOWcode_review_graph/parser.py4026CODE
LOWcode_review_graph/parser.py4084CODE
LOWcode_review_graph/parser.py4114CODE
LOWcode_review_graph/parser.py4196CODE
LOWcode_review_graph/parser.py4243CODE
LOWcode_review_graph/parser.py4352CODE
LOWcode_review_graph/parser.py5063CODE
LOWcode_review_graph/parser.py5231CODE
LOWcode_review_graph/parser.py5304CODE
LOWcode_review_graph/parser.py5319CODE
LOWcode_review_graph/parser.py5359CODE
LOWcode_review_graph/parser.py5403CODE
LOWcode_review_graph/parser.py5603CODE
LOWcode_review_graph/parser.py5714CODE
LOWcode_review_graph/parser.py6001CODE
45 more matches not shown…
Excessive Try-Catch Wrapping59 hits · 69 pts
SeverityFileLineSnippetContext
LOWcode_review_graph/communities.py568 except Exception:CODE
LOWcode_review_graph/jedi_resolver.py128 except Exception as e:CODE
LOWcode_review_graph/jedi_resolver.py147 except Exception: # nosec B112 - Jedi may fail on malformed codeCODE
LOWcode_review_graph/graph.py591 except Exception: # nosec B110 - FTS5 table may not exist on older schemasCODE
LOWcode_review_graph/embeddings.py109 except Exception as exc: # pragma: no cover — best-effort startup hookCODE
LOWcode_review_graph/embeddings.py200 except Exception as e:CODE
LOWcode_review_graph/embeddings.py286 except Exception as e:CODE
LOWcode_review_graph/embeddings.py449 except Exception:CODE
LOWcode_review_graph/embeddings.py460 except Exception: # nosec B110CODE
LOWcode_review_graph/embeddings.py524 except Exception as e:CODE
LOWcode_review_graph/embeddings.py597 except Exception:CODE
LOWcode_review_graph/cli.py313 except Exception as exc:CODE
LOWcode_review_graph/cli.py320 except Exception as exc:CODE
LOWcode_review_graph/cli.py328 except Exception as exc:CODE
LOWcode_review_graph/cli.py346 except Exception as exc:CODE
MEDIUMcode_review_graph/cli.py1115 print(f"Error: {exc}", file=sys.stderr)CODE
LOWcode_review_graph/search.py245 except Exception as e:STRING
LOWcode_review_graph/search.py349 except Exception as e:STRING
MEDIUMcode_review_graph/daemon_cli.py36 print("Error: Daemon is already running.")CODE
MEDIUMcode_review_graph/daemon_cli.py59 print("Error: Could not read daemon PID.")CODE
MEDIUMcode_review_graph/daemon_cli.py70 print(f"Error: Permission denied sending signal to PID {pid}.")CODE
MEDIUMcode_review_graph/daemon_cli.py176 print(f"Error reading log file: {exc}")CODE
MEDIUMcode_review_graph/daemon_cli.py192 print(f"Error: {exc}")CODE
LOWcode_review_graph/daemon.py518 except Exception:CODE
LOWcode_review_graph/daemon.py739 except Exception:CODE
LOWcode_review_graph/daemon.py948 except Exception:CODE
LOWcode_review_graph/incremental.py68 except Exception as exc: # noqa: BLE001 - best-effort post-passCODE
LOWcode_review_graph/incremental.py80 except Exception as exc: # noqa: BLE001 - best-effort post-passCODE
LOWcode_review_graph/incremental.py92 except Exception as exc: # noqa: BLE001 - best-effort post-passCODE
LOWcode_review_graph/incremental.py284 except Exception as exc:CODE
LOWcode_review_graph/incremental.py816 except Exception as e:CODE
LOWcode_review_graph/incremental.py867 except Exception as e:CODE
LOWcode_review_graph/incremental.py1004 except Exception as e:CODE
LOWcode_review_graph/incremental.py1137 except Exception as e:CODE
LOWcode_review_graph/incremental.py1164 except Exception as e:CODE
LOWcode_review_graph/incremental.py1190 except Exception as e:CODE
LOWcode_review_graph/tools/refactor_tools.py122 except Exception as exc:CODE
LOWcode_review_graph/tools/community_tools.py62 except Exception as exc:CODE
LOWcode_review_graph/tools/community_tools.py138 except Exception as exc:CODE
LOWcode_review_graph/tools/community_tools.py243 except Exception as exc:CODE
LOWcode_review_graph/tools/docs.py230 except Exception as exc:CODE
LOWcode_review_graph/tools/flows_tools.py79 except Exception as exc:CODE
LOWcode_review_graph/tools/flows_tools.py173 except Exception as exc:CODE
LOWcode_review_graph/tools/review.py345 except Exception as exc:CODE
LOWcode_review_graph/tools/review.py474 except Exception as exc:CODE
LOWcode_review_graph/tools/registry_tools.py40 except Exception as exc:CODE
LOWcode_review_graph/tools/registry_tools.py105 except Exception as exc:CODE
LOWcode_review_graph/tools/registry_tools.py124 except Exception as exc:CODE
LOWcode_review_graph/eval/runner.py205 except Exception as e:CODE
LOWcode_review_graph/eval/token_benchmark.py179 except Exception as e:CODE
LOWcode_review_graph/eval/benchmarks/build_performance.py23 except Exception as exc:CODE
LOWcode_review_graph/eval/benchmarks/build_performance.py34 except Exception as exc:CODE
LOWcode_review_graph/eval/benchmarks/agent_baseline.py151 except Exception as exc:CODE
LOW…de_review_graph/eval/benchmarks/multi_hop_retrieval.py65 except Exception as exc: # noqa: BLE001 — benchmark must not abort the runnerCODE
LOW…de_review_graph/eval/benchmarks/multi_hop_retrieval.py101 except Exception as exc: # noqa: BLE001CODE
LOWcode_review_graph/eval/benchmarks/impact_accuracy.py142 except Exception as exc:CODE
LOWcode_review_graph/eval/benchmarks/impact_accuracy.py172 except Exception as exc:CODE
LOWcode_review_graph/eval/benchmarks/token_efficiency.py108 except Exception as exc:CODE
LOWtests/test_search.py167 except Exception:CODE
Modern Structural Boilerplate52 hits · 55 pts
SeverityFileLineSnippetContext
LOWcode_review_graph/communities.py23logger = logging.getLogger(__name__)CODE
LOWcode_review_graph/exports.py13logger = logging.getLogger(__name__)CODE
LOWcode_review_graph/changes.py20logger = logging.getLogger(__name__)CODE
LOWcode_review_graph/spring_resolver.py27logger = logging.getLogger(__name__)CODE
LOWcode_review_graph/tsconfig_resolver.py16logger = logging.getLogger(__name__)CODE
LOWcode_review_graph/analysis.py11logger = logging.getLogger(__name__)CODE
LOWcode_review_graph/jedi_resolver.py22logger = logging.getLogger(__name__)CODE
LOWcode_review_graph/refactor.py23logger = logging.getLogger(__name__)CODE
LOWcode_review_graph/skills.py23logger = logging.getLogger(__name__)CODE
LOWcode_review_graph/memory.py11logger = logging.getLogger(__name__)CODE
LOWcode_review_graph/enrich.py18logger = logging.getLogger(__name__)CODE
LOWcode_review_graph/registry.py16logger = logging.getLogger(__name__)CODE
LOWcode_review_graph/graph.py26logger = logging.getLogger(__name__)CODE
LOWcode_review_graph/graph.py307 def set_metadata(self, key: str, value: str) -> None:CODE
LOWcode_review_graph/graph_diff.py12logger = logging.getLogger(__name__)CODE
LOWcode_review_graph/__init__.py13__all__ = [CODE
LOWcode_review_graph/rescript_resolver.py33logger = logging.getLogger(__name__)CODE
LOWcode_review_graph/visualization.py25logger = logging.getLogger(__name__)CODE
LOWcode_review_graph/parser.py45logger = logging.getLogger(__name__)CODE
LOWcode_review_graph/embeddings.py29logger = logging.getLogger(__name__)CODE
LOWcode_review_graph/cli.py47logger = logging.getLogger(__name__)CODE
LOWcode_review_graph/custom_languages.py45logger = logging.getLogger(__name__)CODE
LOWcode_review_graph/migrations.py13logger = logging.getLogger(__name__)CODE
LOWcode_review_graph/migrations.py34def _set_schema_version(conn: sqlite3.Connection, version: int) -> None:CODE
LOWcode_review_graph/search.py17logger = logging.getLogger(__name__)CODE
LOWcode_review_graph/flows.py20logger = logging.getLogger(__name__)CODE
LOWcode_review_graph/postprocessing.py23logger = logging.getLogger(__name__)CODE
LOWcode_review_graph/main.py62logger = logging.getLogger(__name__)CODE
LOWcode_review_graph/wiki.py20logger = logging.getLogger(__name__)CODE
LOWcode_review_graph/daemon_cli.py23logger = logging.getLogger(__name__)CODE
LOWcode_review_graph/daemon.py35logger = logging.getLogger(__name__)CODE
LOWcode_review_graph/daemon.py866 def _setup_signal_handlers(self) -> None:CODE
LOWcode_review_graph/token_benchmark.py13logger = logging.getLogger(__name__)CODE
LOWcode_review_graph/incremental.py58logger = logging.getLogger(__name__)CODE
LOWcode_review_graph/temporal_resolver.py28logger = logging.getLogger(__name__)CODE
LOWcode_review_graph/tools/build.py13logger = logging.getLogger(__name__)CODE
LOWcode_review_graph/tools/query.py17logger = logging.getLogger(__name__)CODE
LOWcode_review_graph/tools/__init__.py105__all__ = [CODE
LOWcode_review_graph/tools/docs.py13logger = logging.getLogger(__name__)CODE
LOWcode_review_graph/tools/review.py17logger = logging.getLogger(__name__)CODE
LOWcode_review_graph/tools/context.py13logger = logging.getLogger(__name__)CODE
LOWcode_review_graph/tools/registry_tools.py13logger = logging.getLogger(__name__)CODE
LOWcode_review_graph/eval/runner.py26logger = logging.getLogger(__name__)CODE
LOWcode_review_graph/eval/__init__.py22__all__ = [CODE
LOWcode_review_graph/eval/token_benchmark.py9logger = logging.getLogger(__name__)CODE
LOWcode_review_graph/eval/benchmarks/build_performance.py9logger = logging.getLogger(__name__)CODE
LOWcode_review_graph/eval/benchmarks/agent_baseline.py36logger = logging.getLogger(__name__)CODE
LOW…de_review_graph/eval/benchmarks/multi_hop_retrieval.py32logger = logging.getLogger(__name__)CODE
LOWcode_review_graph/eval/benchmarks/search_quality.py9logger = logging.getLogger(__name__)CODE
LOWcode_review_graph/eval/benchmarks/flow_completeness.py8logger = logging.getLogger(__name__)CODE
LOWcode_review_graph/eval/benchmarks/impact_accuracy.py27logger = logging.getLogger(__name__)CODE
LOWcode_review_graph/eval/benchmarks/token_efficiency.py18logger = logging.getLogger(__name__)CODE
Self-Referential Comments10 hits · 32 pts
SeverityFileLineSnippetContext
MEDIUMtests/test_registry.py111 # Create a new registry from the same fileCOMMENT
MEDIUMtests/test_flows.py265 # Create a chain of 20 functions.COMMENT
MEDIUMtests/test_multilang.py219 # Create a mini Java project with two packagesCOMMENT
MEDIUMtests/test_daemon.py653 # Create a new repo directory for alpha with a different path (no graph.db)COMMENT
MEDIUMtests/test_incremental.py564 # Create a simple Python fileCOMMENT
MEDIUMtests/test_integration_git.py164 # Create the parent repo and add lib as a submoduleCOMMENT
MEDIUMtests/test_integration_git.py248 # Create a legitimate pageCOMMENT
MEDIUMtests/test_tools.py1293 # Create the two communities and stamp community_id on nodes.COMMENT
MEDIUMtests/test_tools.py1504 # Create a small graphCOMMENT
MEDIUMtests/test_graph.py210 # Create a chain: file_a -> func_a -> (calls) -> func_b in file_bCOMMENT
Verbosity Indicators14 hits · 19 pts
SeverityFileLineSnippetContext
LOWcode_review_graph/eval/token_benchmark.py28 # Step 1: get_minimal_contextCOMMENT
LOWcode_review_graph/eval/token_benchmark.py34 # Step 2: detect_changes (minimal)COMMENT
LOWdiagrams/generate_diagrams.py342 # Step 1: TriggerCOMMENT
LOWdiagrams/generate_diagrams.py350 # Step 2: DetectCOMMENT
LOWdiagrams/generate_diagrams.py524 # Step 1: User asksCOMMENT
LOWdiagrams/generate_diagrams.py532 # Step 2: Claude CodeCOMMENT
LOWdiagrams/generate_diagrams.py363 # Step 3: CascadeCOMMENT
LOWdiagrams/generate_diagrams.py376 # Step 4: Re-parseCOMMENT
LOWdiagrams/generate_diagrams.py545 # Step 3: MCP callCOMMENT
LOWdiagrams/generate_diagrams.py558 # Step 4: Graph queryCOMMENT
LOWdiagrams/generate_diagrams.py570 # Step 5: Claude respondsCOMMENT
LOWtests/test_refactor.py638 # Step 2: refactor_id should still be valid — dry_run doesn't consume itCOMMENT
LOWtests/test_refactor.py642 # Step 3: real apply — uses same refactor_idCOMMENT
LOWtests/test_refactor.py623 # Step 1: dry_run — no writes, returns diffCOMMENT
Structural Annotation Overuse14 hits · 19 pts
SeverityFileLineSnippetContext
LOWcode_review_graph/eval/token_benchmark.py28 # Step 1: get_minimal_contextCOMMENT
LOWcode_review_graph/eval/token_benchmark.py34 # Step 2: detect_changes (minimal)COMMENT
LOWdiagrams/generate_diagrams.py342 # Step 1: TriggerCOMMENT
LOWdiagrams/generate_diagrams.py350 # Step 2: DetectCOMMENT
LOWdiagrams/generate_diagrams.py524 # Step 1: User asksCOMMENT
LOWdiagrams/generate_diagrams.py532 # Step 2: Claude CodeCOMMENT
LOWdiagrams/generate_diagrams.py363 # Step 3: CascadeCOMMENT
LOWdiagrams/generate_diagrams.py376 # Step 4: Re-parseCOMMENT
LOWdiagrams/generate_diagrams.py545 # Step 3: MCP callCOMMENT
LOWdiagrams/generate_diagrams.py558 # Step 4: Graph queryCOMMENT
LOWdiagrams/generate_diagrams.py570 # Step 5: Claude respondsCOMMENT
LOWtests/test_refactor.py638 # Step 2: refactor_id should still be valid — dry_run doesn't consume itCOMMENT
LOWtests/test_refactor.py642 # Step 3: real apply — uses same refactor_idCOMMENT
LOWtests/test_refactor.py623 # Step 1: dry_run — no writes, returns diffCOMMENT
Docstring Block Structure3 hits · 15 pts
SeverityFileLineSnippetContext
HIGHcode_review_graph/registry.py60Register a repository path. Validates that the path contains a ``.git`` or ``.code-review-graph`` direcSTRING
HIGHcode_review_graph/daemon.py85Load daemon configuration from a TOML file. Args: path: Explicit config path. Falls back to :data:`CONFIG_STRING
HIGHcode_review_graph/daemon.py212Add a repository to the daemon config and persist the change. Args: repo_path: Path to the repository (wiSTRING
Over-Commented Block13 hits · 12 pts
SeverityFileLineSnippetContext
LOWcode_review_graph/parser.py261 # as Function nodes (public ones auto-generate getters) and distinguishedCOMMENT
LOWcode_review_graph/parser.py321 # Dart: import_or_export wraps library_import > import_specification > configurable_uriCOMMENT
LOW.serena/project.yml1# the name by which the project can be referenced within SerenaCOMMENT
LOW.serena/project.yml21# - For JavaScript, use typescriptCOMMENT
LOW.serena/project.yml41# The language backend to use for this project.COMMENT
LOW.serena/project.yml61COMMENT
LOW.serena/project.yml81# * `execute_shell_command`: Executes a shell command.COMMENT
LOW.serena/project.yml101# * `rename_symbol`: Renames a symbol throughout the codebase using language server refactoring capabilities.COMMENT
LOW.serena/project.yml121# If the setting is undefined, the base_modes from the global configuration (serena_config.yml) apply.COMMENT
LOW.serena/project.yml141# If null or missing, use the setting from the global configuration.COMMENT
LOW.beads/config.yaml1# Beads Configuration FileCOMMENT
LOW.beads/config.yaml21# title-length: 255COMMENT
LOW.beads/config.yaml41# backup:COMMENT
Redundant / Tautological Comments7 hits · 10 pts
SeverityFileLineSnippetContext
LOWcode_review_graph/communities.py659 # Check if any communities are affected (batch to stay under SQLite limit)COMMENT
LOWcode_review_graph/refactor.py533 # Check if this is a method override where the base class methodCOMMENT
LOWcode_review_graph/skills.py364 # Check if already presentCOMMENT
LOWcode_review_graph/parser.py1537 # Check if all non-empty lines are MAGIC linesCOMMENT
LOWcode_review_graph/wiki.py105 # Check if this flow passes through any community memberCOMMENT
LOW.serena/project.yml123# Set this to [] to disable base modes for this project.COMMENT
LOW.serena/project.yml124# Set this to a list of mode names to always include the respective modes for this project.COMMENT
Fake / Example Data7 hits · 8 pts
SeverityFileLineSnippetContext
LOWtests/test_integration_git.py158 _git(lib_repo, "config", "user.email", "test@test.com")CODE
LOWtests/test_integration_git.py168 _git(parent, "config", "user.email", "test@test.com")CODE
LOWtests/test_integration_git.py53 _git(repo, "config", "user.email", "test@test.com")CODE
LOWtests/test_eval.py261 ["git", "config", "user.email", "test@test.com"],CODE
LOWtests/test_eval.py404 ["git", "config", "user.email", "test@test.com"],CODE
LOWtests/test_eval.py478 ["git", "config", "user.email", "test@test.com"],CODE
LOWtests/test_eval.py548 _git(repo_path, "config", "user.email", "test@test.com")CODE
Modern AI Meta-Vocabulary2 hits · 6 pts
SeverityFileLineSnippetContext
MEDIUMcode_review_graph/flows.py85 # FastAPI lifecycle / dependency injectionCOMMENT
MEDIUMdocs/FAQ.md51## Isn't this just RAG?COMMENT
AI Slop Vocabulary3 hits · 6 pts
SeverityFileLineSnippetContext
MEDIUMtests/test_parser.py1307 # the highest-leverage language for the fix after Python.COMMENT
MEDIUMtests/test_embeddings.py486 """Ensure localhost detection is robust against subdomain tricks."""STRING
MEDIUMcode-review-graph-vscode/package-lock.json3466 "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.2.tgz",CODE
Slop Phrases2 hits · 4 pts
SeverityFileLineSnippetContext
MEDIUM.serena/project.yml58# Same syntax as gitignore, so you can use * and **.COMMENT
LOW.serena/project.yml71# To make sure you have the latest list of tools, and to view their descriptions,COMMENT
Overly Generic Function Names4 hits · 4 pts
SeverityFileLineSnippetContext
LOWtests/test_parser.py294 "def helper():\n"CODE
LOWtests/test_parser.py1112 b"def helper(): pass\n",CODE
LOWtests/test_integration_git.py160 (lib_repo / "util.py").write_text("def helper():\n pass\n")CODE
LOWtests/test_tools.py808 + "def handle_request():\n"CODE
AI Structural Patterns1 hit · 1 pts
SeverityFileLineSnippetContext
LOWcode_review_graph/tools/refactor_tools.py168CODE