AI Slop Code RIsk Monitor

The-PR-Agent/pr-agent

🚀 PR Agent: The Original Open-Source PR Reviewer. This project is not the Qodo free tier.

36.2 High pattern signal View on GitHub

Maintenance and Governance Review

This report summarizes scanner evidence for The-PR-Agent/pr-agent, a Python project with 13,340 GitHub stars. SynthScan examined 219,371 lines of code across 602 source files, recording 7623 pattern matches distributed across 23 syntactic categories. The legacy adjusted pattern signal is 36.2 (High pattern signal); it is not an authorship estimate.

Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.

36.2
Adjusted Signal
36.2
Raw Pattern Score
100%
Time Factor
2026-10-11
Last Push
13.3K
Stars
Python
Language
219.4K
Lines of Code
602
Files
7.6K
Pattern Hits
2026-10-12
Scan Date
0.15
HC Hit Rate

Risk Review · v3

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

Cognitive Ownership Risk 74.3/100 · HIGH

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

Hallucinated Dependency & Supply Chain Risk 3.4/100 · LOW

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

Agent Over-Engineering Ratio 81.4/100 · CRITICAL

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

PR Review Velocity Impact 86.4/100 · CRITICAL

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

What These Metrics Mean

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

Pattern-Signal History

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

Severity Breakdown

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

CRITICAL 6HIGH 83MEDIUM 334LOW 7200

Directory Score Breakdown

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

Pattern Findings

The scanner identified 7623 distinct pattern matches across 23 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.

Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.

Hyper-Verbose Identifiers6303 hits · 5545 pts
SeverityFileLineSnippetContext
LOWsetup.py17 def _help_docs_output_mapping(self) -> dict[str, str]:CODE
LOWpr_agent/config_loader.py103def apply_secrets_manager_config():CODE
LOWpr_agent/secret_providers/__init__.py7def validate_secret_provider_setting():CODE
LOWpr_agent/mosaico/server.py47class MosaicoRequestHandler(DefaultRequestHandler):CODE
LOWpr_agent/mosaico/env_bridge.py65def _register_langfuse_callback(settings) -> None:CODE
LOWpr_agent/mosaico/dispatch.py233def _ask_needs_context_fallback() -> str:CODE
LOWpr_agent/mosaico/dispatch.py281def _pr_fetch_failed_fallback(pr_url: str) -> str:CODE
LOWpr_agent/mosaico/observability.py19def parse_observability_metadata(raw) -> dict:CODE
LOWpr_agent/mosaico/diff_provider.py47def _normalize_file_header_path(path: str) -> str:CODE
LOWpr_agent/mosaico/diff_provider.py160 def get_request_policy_metadata(self, required_fields: set[str]) -> dict:CODE
LOWpr_agent/tools/pr_update_changelog.py34def strip_wrapping_code_fence(text: str) -> str:CODE
LOWpr_agent/tools/pr_update_changelog.py184 def _publish_changelog_read_error_fallback(self, answer: str = ""):CODE
LOW⚡pr_agent/tools/pr_update_changelog.py200 def _publish_changelog_write_error_fallback(self, answer: str):CODE
LOWpr_agent/tools/pr_update_changelog.py270 def _prepare_changelog_update(self) -> Tuple[str, str]:CODE
LOW⚡pr_agent/tools/pr_code_suggestions.py87def get_suggestions_score_threshold() -> int:CODE
LOW⚡pr_agent/tools/pr_code_suggestions.py91def get_dual_publishing_score_threshold() -> int:CODE
LOW⚡pr_agent/tools/pr_code_suggestions.py98def get_reflection_failure_score() -> int:CODE
LOW⚡pr_agent/tools/pr_code_suggestions.py107def apply_reflection_failure_score(suggestions: List[Dict]) -> None:CODE
LOW⚡pr_agent/tools/pr_code_suggestions.py115def filter_suggestions_by_score_threshold(suggestions: List[Dict], call_index: int = 0) -> List[Dict]:CODE
LOWpr_agent/tools/pr_code_suggestions.py140def get_committable_code_suggestions() -> bool:CODE
LOWpr_agent/tools/pr_code_suggestions.py182def render_suggestions_markdown(data: dict) -> str:CODE
LOWpr_agent/tools/pr_code_suggestions.py219def _supports_code_suggestion_state(git_provider) -> bool:CODE
LOWpr_agent/tools/pr_code_suggestions.py224def _supports_persistent_progress_comment(git_provider) -> bool:CODE
LOWpr_agent/tools/pr_code_suggestions.py335 def _load_suggestion_discussion_context(self) -> str:CODE
LOWpr_agent/tools/pr_code_suggestions.py608 def _get_suggestions_coverage_footer(self, suggestions_present: bool = True) -> str:CODE
LOWpr_agent/tools/pr_code_suggestions.py722 def publish_persistent_comment_with_history(git_provider: GitProvider,CODE
LOWpr_agent/tools/pr_code_suggestions.py752 def _publish_persistent_update_failure():CODE
LOWpr_agent/tools/pr_code_suggestions.py817 def _is_legacy_suggestions_comment(comment_text: str) -> bool:CODE
LOWpr_agent/tools/pr_code_suggestions.py1083 async def _self_reflect_with_fallback(self, suggestion_list: List, patches_diff: str, model: str) -> str:CODE
LOWpr_agent/tools/pr_code_suggestions.py1118 async def analyze_self_reflection_response(self, data, response_reflect):CODE
LOWpr_agent/tools/pr_code_suggestions.py1222 def _is_suggestion_line_range_valid(self, suggestion: dict) -> bool:CODE
LOWpr_agent/tools/pr_code_suggestions.py1245 def _is_suggestion_line_range_in_diff(CODE
LOWpr_agent/tools/pr_code_suggestions.py1281 def _prepare_pr_code_suggestions(self, predictions: str) -> Dict:CODE
LOWpr_agent/tools/pr_code_suggestions.py1358 def _limit_suggestions_per_file(self, suggestions: List[Dict]) -> List[Dict]:CODE
LOWpr_agent/tools/pr_code_suggestions.py1401 async def push_inline_code_suggestions(self, data, include_coverage_footer: bool = True) -> None:CODE
LOWpr_agent/tools/pr_code_suggestions.py1566 def _validate_python_replacement_syntax(CODE
LOWpr_agent/tools/pr_code_suggestions.py1687 def _infer_space_indentation_unit(space_deltas: list[int]) -> int:CODE
LOWpr_agent/tools/pr_code_suggestions.py1697 def _continuation_space_adjustments(CODE
LOWpr_agent/tools/pr_code_suggestions.py1855 def validate_one_liner_suggestion_not_repeating_code(self, suggestion):CODE
LOWpr_agent/tools/pr_code_suggestions.py2225 async def convert_to_decoupled_with_line_numbers(CODE
LOWpr_agent/tools/pr_code_suggestions.py2281 def generate_summarized_suggestions(self, data: Dict) -> str:CODE
LOWpr_agent/tools/pr_code_suggestions.py2432 async def self_reflect_on_suggestions(self,CODE
LOWpr_agent/tools/pr_description.py53def _build_unprocessed_files_block(file_list: list, label: str, max_files: int = 50) -> str:CODE
LOWpr_agent/tools/pr_description.py570 def _get_description_coverage_footer(self) -> str:CODE
LOWpr_agent/tools/pr_description.py788 def _validate_description_schema(data: object) -> bool:CODE
LOWpr_agent/tools/pr_description.py841 def _prepare_pr_answer_with_markers(self) -> Tuple[str, str]:CODE
LOWpr_agent/tools/pr_description.py1015 def process_pr_files_prediction(self, pr_body, value):CODE
LOWpr_agent/tools/pr_similar_issue.py94def _raise_on_pinecone_upsert_errors(response):CODE
LOWpr_agent/tools/pr_similar_issue.py138def _pinecone_response_is_reconciled(response, target_lsn):CODE
LOWpr_agent/tools/pr_similar_issue.py148def _wait_for_pinecone_upsert_readiness(pinecone_index, upsert_response, namespace, vector_id):CODE
LOWpr_agent/tools/pr_similar_issue.py164def _provider_supports_issue_indexing() -> bool:CODE
LOWpr_agent/tools/pr_similar_issue.py549 def _update_index_with_issues(self, issues_list, repo_name_for_index, pinecone_namespace, upsert=False):CODE
LOWpr_agent/tools/pr_similar_issue.py660 def _lancedb_repo_already_indexed(self, repo_name_for_index) -> bool:CODE
LOWpr_agent/tools/pr_similar_issue.py673 def _update_table_with_issues(self, issues_list, repo_name_for_index, ingest=False,CODE
LOWpr_agent/tools/pr_similar_issue.py775 def _update_qdrant_with_issues(self, issues_list, repo_name_for_index, ingest=False):CODE
LOWpr_agent/tools/pr_line_questions.py145 def _load_conversation_history(self) -> str:CODE
LOWpr_agent/tools/pr_line_questions.py222 def _fit_conversation_history(self, variables, model):CODE
LOWpr_agent/tools/pr_line_questions.py232 def configured_output_reserve(_model, _default):CODE
LOW⚡pr_agent/tools/pr_help_docs.py128def map_documentation_files_to_contents(base_path: str, doc_files: list[str],CODE
LOW⚡pr_agent/tools/pr_help_docs.py159def aggregate_documentation_files_for_prompt_contents(file_path_to_contents: dict[str, str],CODE
6243 more matches not shown…
Decorative Section Separators244 hits · 972 pts
SeverityFileLineSnippetContext
MEDIUMpr_agent/algo/__init__.py1# ---------------------------------------------------------------------------COMMENT
MEDIUMpr_agent/algo/__init__.py14# ---------------------------------------------------------------------------COMMENT
MEDIUMpr_agent/algo/__init__.py19 # ── 1M-context models (no extended thinking) ─────────────────────────COMMENT
MEDIUMpr_agent/algo/__init__.py46 # ── Models with extended thinking ────────────────────────────────────COMMENT
MEDIUM⚡tests/unittest/test_extra_config_url.py111# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/unittest/test_extra_config_url.py113# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/unittest/test_extra_config_url.py286# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/unittest/test_extra_config_url.py288# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unittest/test_extra_config_url.py19# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unittest/test_extra_config_url.py21# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unittest/test_extra_config_url.py368# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unittest/test_extra_config_url.py375# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/unittest/test_extra_config_url.py760# ---------------------------------------------------------------------------STRING
MEDIUM⚡tests/unittest/test_extra_config_url.py762# ---------------------------------------------------------------------------STRING
MEDIUM⚡…s/unittest/test_gitlab_provider_exception_narrowing.py94# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡…s/unittest/test_gitlab_provider_exception_narrowing.py96# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/unittest/test_diff_pipeline_core.py75# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/unittest/test_diff_pipeline_core.py77# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/unittest/test_diff_pipeline_core.py174# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/unittest/test_diff_pipeline_core.py176# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/unittest/test_diff_pipeline_core.py306# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/unittest/test_diff_pipeline_core.py308# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/unittest/test_diff_pipeline_core.py440# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/unittest/test_diff_pipeline_core.py442# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unittest/test_diff_pipeline_core.py25# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unittest/test_diff_pipeline_core.py27# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unittest/test_mosaico_provider.py274# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unittest/test_mosaico_provider.py276# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡…/unittest/test_review_persistent_comment_authorship.py358# --------------------------------------------------------------------------------------COMMENT
MEDIUM⚡…/unittest/test_review_persistent_comment_authorship.py364# --------------------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/unittest/test_pr_code_suggestions_rendering.py68# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/unittest/test_pr_code_suggestions_rendering.py70# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/unittest/test_pr_code_suggestions_rendering.py657# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/unittest/test_pr_code_suggestions_rendering.py659# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/unittest/test_pr_code_suggestions_rendering.py722# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/unittest/test_pr_code_suggestions_rendering.py724# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/unittest/test_pr_code_suggestions_rendering.py237# ---------------------------------------------------------------------------STRING
MEDIUM⚡tests/unittest/test_pr_code_suggestions_rendering.py239# ---------------------------------------------------------------------------STRING
MEDIUM⚡tests/unittest/test_pr_code_suggestions_rendering.py356# ---------------------------------------------------------------------------STRING
MEDIUM⚡tests/unittest/test_pr_code_suggestions_rendering.py358# ---------------------------------------------------------------------------STRING
MEDIUM⚡tests/unittest/test_pr_code_suggestions_rendering.py439# ---------------------------------------------------------------------------STRING
MEDIUM⚡tests/unittest/test_pr_code_suggestions_rendering.py441# ---------------------------------------------------------------------------STRING
MEDIUM⚡tests/unittest/test_run_status_acknowledgment.py62# --------------------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/unittest/test_run_status_acknowledgment.py64# --------------------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/unittest/test_run_status_acknowledgment.py219# --------------------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/unittest/test_run_status_acknowledgment.py221# --------------------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/unittest/test_run_status_acknowledgment.py388# --------------------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/unittest/test_run_status_acknowledgment.py394# --------------------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/unittest/test_mosaico_router.py161# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/unittest/test_mosaico_router.py163# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/unittest/test_mosaico_router.py183# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/unittest/test_mosaico_router.py185# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/unittest/test_mosaico_router.py248# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/unittest/test_mosaico_router.py250# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/unittest/test_mosaico_router.py378# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/unittest/test_mosaico_router.py380# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/unittest/test_mosaico_router.py438# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/unittest/test_mosaico_router.py440# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/unittest/test_mosaico_router.py480# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/unittest/test_mosaico_router.py482# ---------------------------------------------------------------------------COMMENT
184 more matches not shown…
Excessive Try-Catch Wrapping534 hits · 541 pts
SeverityFileLineSnippetContext
LOWpr_agent/config_loader.py70 except Exception:CODE
LOWpr_agent/config_loader.py123 except Exception as e:CODE
LOWpr_agent/config_loader.py125 except Exception as e:CODE
LOWpr_agent/cli.py45 except Exception:CODE
LOWpr_agent/custom_merge_loader.py97 except Exception as e:CODE
LOW…agent/secret_providers/aws_secrets_manager_provider.py36 except Exception as e:CODE
LOW…agent/secret_providers/aws_secrets_manager_provider.py48 except Exception as e:CODE
LOW…agent/secret_providers/aws_secrets_manager_provider.py62 except Exception as e:CODE
LOW…agent/secret_providers/aws_secrets_manager_provider.py93 except Exception as e:CODE
MEDIUM…agent/secret_providers/aws_secrets_manager_provider.py24def __init__(self):CODE
LOW…cret_providers/google_cloud_storage_secret_provider.py17 except Exception as e:CODE
LOW…cret_providers/google_cloud_storage_secret_provider.py25 except Exception as e:CODE
LOW…cret_providers/google_cloud_storage_secret_provider.py36 except Exception as e:CODE
MEDIUM…cret_providers/google_cloud_storage_secret_provider.py11def __init__(self):CODE
LOWpr_agent/secret_providers/__init__.py28 except Exception as e:CODE
LOWpr_agent/secret_providers/__init__.py34 except Exception as e:CODE
LOWpr_agent/mosaico/server.py90 except Exception as e:CODE
LOWpr_agent/mosaico/dispatch.py276 except Exception as e:CODE
LOWpr_agent/mosaico/dispatch.py398 except Exception:CODE
LOWpr_agent/mosaico/observability.py106 except Exception as e:CODE
LOWpr_agent/mosaico/observability.py109 except Exception as close_error:CODE
LOWpr_agent/mosaico/observability.py120 except Exception as cleanup_error:CODE
LOWpr_agent/mosaico/observability.py128 except Exception as e:CODE
LOWpr_agent/mosaico/executor.py141 except Exception as e:CODE
LOWpr_agent/mosaico/executor.py189 except Exception as e:CODE
LOWpr_agent/tools/pr_update_changelog.py105 except Exception as setup_error:CODE
LOWpr_agent/tools/pr_update_changelog.py133 except Exception as progress_error:CODE
LOWpr_agent/tools/pr_update_changelog.py143 except Exception as generation_error:CODE
LOWpr_agent/tools/pr_update_changelog.py179 except Exception as cleanup_error:CODE
LOW⚡pr_agent/tools/pr_update_changelog.py195 except Exception as fallback_error:CODE
LOW⚡pr_agent/tools/pr_update_changelog.py208 except Exception as fallback_error:CODE
LOWpr_agent/tools/pr_update_changelog.py310 except Exception:CODE
LOWpr_agent/tools/pr_update_changelog.py322 except Exception as feedback_error:CODE
LOWpr_agent/tools/pr_update_changelog.py338 except Exception:CODE
LOWpr_agent/tools/pr_update_changelog.py344 except Exception as feedback_error:CODE
LOWpr_agent/tools/pr_update_changelog.py389 except Exception as e:CODE
MEDIUMpr_agent/tools/pr_code_suggestions.py1855def validate_one_liner_suggestion_not_repeating_code(self, suggestion):CODE
LOW⚡pr_agent/tools/pr_code_suggestions.py125 except Exception as e:CODE
LOW⚡pr_agent/tools/pr_code_suggestions.py559 except Exception as cleanup_error:CODE
LOW⚡pr_agent/tools/pr_code_suggestions.py565 except Exception as e:CODE
LOW⚡pr_agent/tools/pr_code_suggestions.py572 except Exception as cleanup_error:CODE
LOWpr_agent/tools/pr_code_suggestions.py340 except Exception as e:CODE
LOWpr_agent/tools/pr_code_suggestions.py380 except Exception as e:CODE
LOWpr_agent/tools/pr_code_suggestions.py528 except Exception as cleanup_error:CODE
LOWpr_agent/tools/pr_code_suggestions.py585 except Exception as publish_error:CODE
LOWpr_agent/tools/pr_code_suggestions.py684 except Exception as cleanup_error:CODE
LOWpr_agent/tools/pr_code_suggestions.py714 except Exception as e:CODE
LOWpr_agent/tools/pr_code_suggestions.py747 except Exception as remove_error:CODE
LOWpr_agent/tools/pr_code_suggestions.py765 except Exception as error:CODE
LOWpr_agent/tools/pr_code_suggestions.py774 except Exception as error:CODE
LOWpr_agent/tools/pr_code_suggestions.py964 except Exception as e:CODE
LOWpr_agent/tools/pr_code_suggestions.py982 except Exception as remove_error:CODE
LOWpr_agent/tools/pr_code_suggestions.py1160 except Exception as e:CODE
LOWpr_agent/tools/pr_code_suggestions.py1164 except Exception:CODE
LOWpr_agent/tools/pr_code_suggestions.py1183 except Exception as e:CODE
LOWpr_agent/tools/pr_code_suggestions.py1334 except Exception as e:CODE
LOWpr_agent/tools/pr_code_suggestions.py1544 except Exception as e:CODE
LOWpr_agent/tools/pr_code_suggestions.py1587 except Exception as e:CODE
LOWpr_agent/tools/pr_code_suggestions.py1602 except Exception as e:CODE
LOWpr_agent/tools/pr_code_suggestions.py1850 except Exception as e:CODE
474 more matches not shown…
Empty Error Handlers47 hits · 235 pts
SeverityFileLineSnippetContext
HIGHpr_agent/config_loader.py129except ImportError:CODE
HIGHpr_agent/git_providers/azuredevops_provider.py970except Exception:CODE
HIGHpr_agent/git_providers/github_provider.py450except ContextDoesNotExistError:CODE
HIGHpr_agent/git_providers/github_provider.py569except ContextDoesNotExistError:CODE
HIGHpr_agent/git_providers/github_provider.py1285except (GithubException, RequestException):CODE
HIGHpr_agent/git_providers/github_provider.py467except AttributeError:CODE
HIGHpr_agent/git_providers/gitlab_provider.py362except (AttributeError, TypeError, ValueError):CODE
HIGHpr_agent/git_providers/gitlab_provider.py371except (AttributeError, TypeError, ValueError):CODE
HIGHpr_agent/git_providers/gitlab_provider.py1148except (KeyError, TypeError):CODE
HIGHpr_agent/git_providers/__init__.py159except Exception:CODE
HIGHpr_agent/git_providers/bitbucket_provider.py313except Exception:CODE
HIGHpr_agent/git_providers/utils.py309except Exception:CODE
HIGHpr_agent/algo/utils.py1139except Exception:CODE
HIGHpr_agent/algo/utils.py1150except Exception:CODE
HIGHpr_agent/algo/utils.py1184except Exception:CODE
HIGHpr_agent/algo/utils.py1211except Exception:CODE
HIGHpr_agent/algo/utils.py1251except Exception:CODE
HIGHpr_agent/algo/utils.py1329except Exception:CODE
HIGHpr_agent/algo/utils.py1340except Exception:CODE
HIGHpr_agent/algo/utils.py964except Exception:CODE
HIGHpr_agent/algo/utils.py1289except Exception:CODE
HIGHpr_agent/algo/utils.py1302except Exception:CODE
HIGHpr_agent/algo/utils.py1352except Exception:CODE
HIGHpr_agent/algo/utils.py1238except Exception:CODE
HIGHpr_agent/algo/pr_processing.py243except Exception:CODE
HIGHpr_agent/algo/pr_processing.py398except Exception:CODE
HIGHpr_agent/algo/git_patch_processing.py255except (UnicodeError, LookupError):CODE
HIGHpr_agent/algo/ai_handlers/litellm_ai_handler.py827except (json.JSONDecodeError, TypeError):CODE
HIGHpr_agent/algo/ai_handlers/litellm_ai_handler.py424except FileNotFoundError:CODE
HIGHpr_agent/algo/ai_handlers/litellm_helpers.py80except Exception:CODE
HIGHpr_agent/algo/ai_handlers/litellm_helpers.py589except Exception:CODE
HIGHpr_agent/algo/ai_handlers/cloud_auth.py1376except FileNotFoundError:CODE
HIGHpr_agent/algo/ai_handlers/langchain_ai_handler.py16except ImportError: # we don't enforce langchain as a dependency, so if it's not installed, just move onCODE
HIGHpr_agent/servers/github_lambda_webhook.py15except ImportError:CODE
HIGHpr_agent/servers/gitlab_lambda_webhook.py15except ImportError:CODE
HIGHpr_agent/servers/gunicorn_config.py98except (OSError, ValueError):CODE
HIGHpr_agent/servers/gunicorn_config.py107except (OSError, ValueError):CODE
HIGHtests/unittest/test_extra_config_url.py585except Exception:CODE
HIGHtests/unittest/test_extra_config_url.py583except Exception:CODE
HIGHtests/unittest/test_extra_config_url.py938except StopIteration:CODE
HIGHtests/unittest/test_litellm_callback_drain.py145except RuntimeError:CODE
HIGHtests/unittest/test_inline_comment_dedup.py170except NotImplementedError:CODE
HIGHtests/unittest/test_streaming_api_error_construction.py391except asyncio.CancelledError:CODE
HIGHtests/unittest/test_provider_http_timeout.py201except Exception:CODE
HIGHtests/unittest/test_provider_http_timeout.py242except Exception:CODE
HIGHtests/unittest/test_provider_http_timeout.py100except Exception:CODE
HIGHscripts/generate_config_reference.py78except tomllib.TOMLDecodeError:CODE
Deep Nesting219 hits · 155 pts
SeverityFileLineSnippetContext
LOWpr_agent/config_loader.py103CODE
LOWpr_agent/config_loader.py134CODE
LOWpr_agent/cli.py176CODE
LOWpr_agent/custom_merge_loader.py12CODE
LOW…agent/secret_providers/aws_secrets_manager_provider.py68CODE
LOWpr_agent/mosaico/dispatch.py368CODE
LOWpr_agent/mosaico/diff_provider.py57CODE
LOWpr_agent/mosaico/executor.py49CODE
LOWpr_agent/tools/pr_update_changelog.py54CODE
LOWpr_agent/tools/pr_update_changelog.py115CODE
LOWpr_agent/tools/pr_code_suggestions.py367CODE
LOWpr_agent/tools/pr_code_suggestions.py641CODE
LOWpr_agent/tools/pr_code_suggestions.py698CODE
LOWpr_agent/tools/pr_code_suggestions.py722CODE
LOWpr_agent/tools/pr_code_suggestions.py1118CODE
LOWpr_agent/tools/pr_code_suggestions.py1281CODE
LOWpr_agent/tools/pr_code_suggestions.py1401CODE
LOWpr_agent/tools/pr_code_suggestions.py1697CODE
LOWpr_agent/tools/pr_code_suggestions.py1805CODE
LOWpr_agent/tools/pr_code_suggestions.py1855CODE
LOWpr_agent/tools/pr_code_suggestions.py1882CODE
LOWpr_agent/tools/pr_code_suggestions.py1980CODE
LOWpr_agent/tools/pr_code_suggestions.py2225CODE
LOWpr_agent/tools/pr_code_suggestions.py2281CODE
LOWpr_agent/tools/pr_description.py1145CODE
LOWpr_agent/tools/pr_description.py1229CODE
LOWpr_agent/tools/pr_description.py139CODE
LOWpr_agent/tools/pr_description.py322CODE
LOWpr_agent/tools/pr_description.py591CODE
LOWpr_agent/tools/pr_description.py814CODE
LOWpr_agent/tools/pr_description.py897CODE
LOWpr_agent/tools/pr_description.py1015CODE
LOWpr_agent/tools/pr_similar_issue.py180CODE
LOWpr_agent/tools/pr_similar_issue.py419CODE
LOWpr_agent/tools/pr_similar_issue.py549CODE
LOWpr_agent/tools/pr_similar_issue.py673CODE
LOWpr_agent/tools/pr_similar_issue.py775CODE
LOWpr_agent/tools/pr_add_docs.py276CODE
LOWpr_agent/tools/pr_add_docs.py224CODE
LOWpr_agent/tools/pr_line_questions.py59CODE
LOWpr_agent/tools/pr_generate_labels.py73CODE
LOWpr_agent/tools/pr_generate_labels.py231CODE
LOWpr_agent/tools/pr_help_docs.py88CODE
LOWpr_agent/tools/pr_help_docs.py128CODE
LOWpr_agent/tools/pr_help_docs.py159CODE
LOWpr_agent/tools/pr_help_docs.py185CODE
LOWpr_agent/tools/pr_help_docs.py498CODE
LOWpr_agent/tools/pr_help_docs.py546CODE
LOWpr_agent/tools/pr_reviewer.py295CODE
LOWpr_agent/tools/pr_reviewer.py1286CODE
LOWpr_agent/tools/pr_reviewer.py1585CODE
LOWpr_agent/tools/pr_reviewer.py1667CODE
LOWpr_agent/tools/pr_help_message.py81CODE
LOWpr_agent/tools/pr_help_message.py84CODE
LOWpr_agent/tools/pr_help_message.py432CODE
LOWpr_agent/tools/ticket_pr_compliance_check.py166CODE
LOWpr_agent/tools/ticket_pr_compliance_check.py645CODE
LOWpr_agent/tools/ticket_pr_compliance_check.py701CODE
LOWpr_agent/tools/ticket_pr_compliance_check.py915CODE
LOWpr_agent/tools/ticket_pr_compliance_check.py1156CODE
159 more matches not shown…
Cross-File Repetition15 hits · 75 pts
SeverityFileLineSnippetContext
HIGHpr_agent/git_providers/codecommit_provider.py0retrieves the list of files that have been modified, added, deleted, or renamed in a pull request in gitlab, along with STRING
HIGHpr_agent/git_providers/github_provider.py0retrieves the list of files that have been modified, added, deleted, or renamed in a pull request in gitlab, along with STRING
HIGHpr_agent/git_providers/gitlab_provider.py0retrieves the list of files that have been modified, added, deleted, or renamed in a pull request in gitlab, along with STRING
HIGHtests/unittest/test_mosaico_smoke.py0\ review: estimated_effort_to_review_[1-5]: '2' score: '85' relevant_tests: 'no' key_issues_to_review: - relevant_file: STRING
HIGHtests/unittest/test_mosaico_provider.py0\ review: estimated_effort_to_review_[1-5]: '2' score: '85' relevant_tests: 'no' key_issues_to_review: - relevant_file: STRING
HIGHtests/unittest/test_mosaico_a2a_roundtrip.py0\ review: estimated_effort_to_review_[1-5]: '2' score: '85' relevant_tests: 'no' key_issues_to_review: - relevant_file: STRING
HIGHtests/unittest/test_similar_issue_pinecone.py0oversized rejects are not counted so the scan budget reaches older index gaps.STRING
HIGHtests/unittest/test_similar_issue_qdrant_ingest.py0oversized rejects are not counted so the scan budget reaches older index gaps.STRING
HIGHtests/unittest/test_similar_issue_lancedb_ingest.py0oversized rejects are not counted so the scan budget reaches older index gaps.STRING
HIGHtests/unittest/test_plain_diff_provider.py0diff --git a/foo.py b/foo.py index 1111111..2222222 100644 --- a/foo.py +++ b/foo.py @@ -1,3 +1,3 @@ line1 -line2 +line2STRING
HIGHtests/unittest/test_plain_diff_mode_e2e.py0diff --git a/foo.py b/foo.py index 1111111..2222222 100644 --- a/foo.py +++ b/foo.py @@ -1,3 +1,3 @@ line1 -line2 +line2STRING
HIGHtests/unittest/test_diff_parsing.py0diff --git a/foo.py b/foo.py index 1111111..2222222 100644 --- a/foo.py +++ b/foo.py @@ -1,3 +1,3 @@ line1 -line2 +line2STRING
HIGHtests/unittest/test_gitlab_project_reads.py0the parts of `requests.response` that python-gitlab reads.STRING
HIGHtests/unittest/test_gitlab_reaction_requests.py0the parts of `requests.response` that python-gitlab reads.STRING
HIGHtests/unittest/test_gitlab_reaction_removal.py0the parts of `requests.response` that python-gitlab reads.STRING
Self-Referential Comments18 hits · 54 pts
SeverityFileLineSnippetContext
MEDIUMpr_agent/tools/pr_description.py93 # Initialize the variables dictionaryCOMMENT
MEDIUMpr_agent/tools/pr_generate_labels.py47 # Initialize the variables dictionaryCOMMENT
MEDIUMpr_agent/git_providers/gitlab_provider.py1734 # Create a general note on the file in the MRCOMMENT
MEDIUMpr_agent/algo/token_handler.py48 _lock = Lock() # Create a lock objectCODE
MEDIUMpr_agent/agent/pr_agent.py422 # Define the language-specific instruction and the separatorCOMMENT
MEDIUMpr_agent/servers/azuredevops_server_webhook.py1# This file contains the code for the Azure DevOps Server webhook server.COMMENT
MEDIUMtests/unittest/test_add_docs_trigger.py28 # Define a FakeGitProvider for both apply_repo_settings and PRAddDocsCOMMENT
MEDIUM⚡tests/unittest/test_codecommit_client.py22 # Create a mock CodeCommitClient instance and codecommit_client memberCOMMENT
MEDIUMtests/unittest/test_codecommit_client.py97 # Create a mock CodeCommitClient instance and codecommit_client memberCOMMENT
MEDIUMtests/unittest/test_codecommit_client.py121 # Create a mock CodeCommitClient instance and codecommit_client memberCOMMENT
MEDIUMtests/unittest/test_extend_patch.py191 # Create a TokenHandler instance with dummy dataCOMMENT
MEDIUMtests/unittest/test_extend_patch.py198 # Create a list of languages with files containing base_file and patch dataCOMMENT
MEDIUMtests/e2e_tests/test_github_app.py39 # Create a new branch from the base branchCOMMENT
MEDIUMtests/e2e_tests/test_github_app.py59 # Create a pull requestCOMMENT
MEDIUMtests/e2e_tests/test_bitbucket_app.py37 # Create a new branch from the base branchCOMMENT
MEDIUMtests/e2e_tests/test_bitbucket_app.py52 # Create a pull requestCOMMENT
MEDIUMtests/e2e_tests/test_gitlab_webhook.py35 # Create a new branch from the base branchCOMMENT
MEDIUMtests/e2e_tests/test_gitlab_webhook.py49 # Create a merge requestCOMMENT
Synthetic Comment Markers8 hits · 51 pts
SeverityFileLineSnippetContext
HIGHpr_agent/settings/configuration.toml221enable_pr_description=true # adds a section with an AI-generated summary of the PR changesCODE
HIGHpr_agent/settings/prompt_fragments.toml5### AI-generated changes summary:COMMENT
HIGH…estions/pr_code_suggestions_prompts_not_decoupled.toml20### AI-generated changes summary:COMMENT
HIGH⚡pr_agent/tools/pr_description.py260 # Pass None when the title is not AI-generated so the providerCOMMENT
HIGHpr_agent/algo/pr_processing.py1116 i + 1, f"### AI-generated changes summary:\n{file.ai_file_summary['long_summary']}"CODE
HIGHtests/unittest/test_pr_code_suggestions_core.py134 assert "### AI-generated changes summary:" in result[0]STRING
HIGHtests/unittest/test_prompt_fragments.py80 assert ("### AI-generated changes summary:" in rendered) is include_ai_metadataCODE
HIGHdocs/docs/core-abilities/metadata.md35### AI-generated file summary:COMMENT
Hallucination Indicators6 hits · 48 pts
SeverityFileLineSnippetContext
CRITICAL⚡tests/unittest/test_gitlab_fixed_threads.py129 provider.gl.projects.get.return_value.repository_compare.assert_called_once_with(STRING
CRITICAL⚡tests/unittest/test_gitlab_fixed_threads.py154 provider.gl.projects.get.return_value.repository_compare.assert_not_called()STRING
CRITICAL⚡tests/unittest/test_gitlab_fixed_threads.py166 provider.gl.projects.get.return_value.repository_compare.assert_not_called()STRING
CRITICALtests/unittest/test_bitbucket_provider.py781 mock_get_logger.return_value.opt.return_value.warning.assert_called_once_with(STRING
CRITICALtests/unittest/test_gitlab_provider.py995 gitlab_provider.mr.discussions.get.return_value.notes.create.assert_called_once_with(CODE
CRITICALtests/unittest/test_gitlab_provider.py1180 mock_get_logger.return_value.opt.return_value.warning.assert_called_once_with(CODE
Over-Commented Block49 hits · 45 pts
SeverityFileLineSnippetContext
LOWdocker/mosaico/smoke_test.sh1#!/usr/bin/env bashCOMMENT
LOWpr_agent/config_security.py1"""Shared configuration boundaries for repository-provided settings."""COMMENT
LOWpr_agent/config_security.py61 # not be able to name an arbitrary same-owner private sibling: the actor check bounds whoCOMMENT
LOWpr_agent/config_security.py101 return TrueCOMMENT
LOWpr_agent/config_security.py141# review findings, replacing pull-request labels with reviewer effort/security labels) orCOMMENT
LOWpr_agent/config_security.py181 "approve_pr_on_self_review", "demand_code_suggestions_self_review",COMMENT
LOWpr_agent/config_security.py201# repository path or extension, so a nested file could read arbitrary source files intoCOMMENT
LOWpr_agent/settings/custom_labels.toml1[config]COMMENT
LOWpr_agent/settings/configuration.toml101# The match is case-insensitive against the sender's display name. Overriding thisCOMMENT
LOWpr_agent/settings/configuration.toml121# model id now surfaces a provider-side error instead of the previous silent drop.COMMENT
LOWpr_agent/settings/configuration.toml141# Do not add adaptive-only models to claude_extended_thinking_models_override;COMMENT
LOWpr_agent/settings/configuration.toml321seconds_between_writes = 0 # seconds between write calls; 0 = no pacing (1.59 behaviour)COMMENT
LOWpr_agent/settings/configuration.toml381# When pr_code_suggestions.committable_code_suggestions is true, queue each suggestion as a GitLab draftCOMMENT
LOWpr_agent/settings/configuration.toml441# patch server where patches will be savedCOMMENT
LOWpr_agent/settings/configuration.toml461jira_requirements_field = ""COMMENT
LOWpr_agent/settings/configuration.toml481custom_llm_provider = ""COMMENT
LOWpr_agent/settings/configuration.toml501# cache_control blocks. LiteLLM's own default injectionCOMMENT
LOWpr_agent/settings/configuration.toml521# Valid values: "none", "minimal", "low", "medium", "high", "xhigh", "max".COMMENT
LOWpr_agent/settings/configuration.toml581# filesystem paths and injects their content into review/improve/describe andCOMMENT
LOWpr_agent/settings/.secrets_template.toml1# QUICKSTART:COMMENT
LOWpr_agent/tools/ticket_pr_compliance_check.py61# front; this bounds the cost of a PR whose text is mostly key-shaped noise.COMMENT
LOWpr_agent/git_providers/azuredevops_provider.py941 # repository_id=self.repo_slug,COMMENT
LOWpr_agent/git_providers/azuredevops_provider.py1361 @cache_languagesCOMMENT
LOWpr_agent/git_providers/git_provider.py501 return ""COMMENT
LOWpr_agent/git_providers/git_provider.py1341 # most_common_extension == 'java' and top_language == 'java' or \COMMENT
LOWpr_agent/algo/__init__.py1# ---------------------------------------------------------------------------COMMENT
LOWpr_agent/algo/__init__.py381# accept budget_tokens belong here. Adaptive-only models (Claude Opus 4.7/4.8,COMMENT
LOWpr_agent/algo/run_details.py41 # reaches the collector, e.g. streaming responses or the langchain handler.COMMENT
LOWpr_agent/algo/utils.py701 # markdown_text += f"<tr><td rowspan={number_of_splits}> {emoji}&nbsp;<strong>{key_nice}</strong></td>\n"COMMENT
LOWpr_agent/algo/ai_handlers/litellm_ai_handler.py3001 # litellm's parameter metadata (probed over suffix forms, mirroring theCOMMENT
LOWpr_agent/algo/ai_handlers/litellm_ai_handler.py3161 # standard "user" parameter; extra_body reaches theCOMMENT
LOWpr_agent/servers/gunicorn_config.py1import gcCOMMENT
LOWpr_agent/servers/gunicorn_config.py21# Must be a positive integer. Generally set in the 64-2048COMMENT
LOWpr_agent/servers/gunicorn_config.py41# sync class should handle most 'normal' types of workCOMMENT
LOWpr_agent/servers/gunicorn_config.py61#COMMENT
LOWpr_agent/servers/gunicorn_config.py161worker_connections = 1000COMMENT
LOWpr_agent/servers/gunicorn_config.py181# True or FalseCOMMENT
LOWpr_agent/servers/gunicorn_config.py201# umask - A mask for file permissions written by Gunicorn. Note thatCOMMENT
LOWpr_agent/servers/gunicorn_config.py221group = NoneCOMMENT
LOWpr_agent/servers/gunicorn_config.py241#COMMENT
LOWpr_agent/servers/gunicorn_config.py261#COMMENT
LOWpr_agent/servers/gerrit_server.py81 try:COMMENT
LOWtests/unittest/test_fetching_sub_issues.py1# Currently doing API calls - wrong !COMMENT
LOWtests/unittest/test_fetching_sub_issues.py21# """COMMENT
LOWtests/unittest/test_fetching_sub_issues.py41# # Verify tickets were extracted correctlyCOMMENT
LOWtests/unittest/test_fetching_sub_issues.py61# @patch.object(GithubProvider, 'repo_obj')COMMENT
LOWtests/unittest/test_fetching_sub_issues.py81#COMMENT
LOWtests/unittest/test_fetching_sub_issues.py101#COMMENT
LOWtests/unittest/test_fetching_sub_issues.py121#COMMENT
Overly Generic Function Names47 hits · 40 pts
SeverityFileLineSnippetContext
LOWpr_agent/agent/pr_agent.py494 async def handle_request(CODE
LOWpr_agent/servers/gitlab_webhook.py64async def handle_request(CODE
LOWpr_agent/servers/bitbucket_server_webhook.py37def handle_request(CODE
LOWpr_agent/servers/github_app.py427async def handle_request(body: Dict[str, Any], event: str, delivery_id: str | None = None):CODE
LOW⚡pr_agent/servers/gitea_app.py74async def handle_request(body: Dict[str, Any], event: str):CODE
LOWtests/unittest/test_extra_config_url.py338 async def handle_request(self, *_args, **_kwargs):CODE
LOWtests/unittest/test_run_status_acknowledgment.py256 async def handle_request(api_url, command, notify=None):CODE
LOWtests/unittest/test_github_action_runner_core.py303 async def handle_request(self, url, body, notify=None):CODE
LOWtests/unittest/test_github_action_runner_core.py331 async def handle_request(self, url, body, notify=None):CODE
LOWtests/unittest/test_github_action_runner_core.py352 async def handle_request(self, url, body, notify=None):CODE
LOWtests/unittest/test_github_action_runner_core.py388 async def handle_request(self, url, body, notify=None):CODE
LOWtests/unittest/test_github_action_runner_core.py418 async def handle_request(self, url, body, notify=None):CODE
LOWtests/unittest/test_github_action_runner_core.py579 async def handle_request(self, url, body, notify=None):CODE
LOWtests/unittest/test_github_action_runner_core.py627 async def handle_request(self, url, body, notify=None):CODE
LOWtests/unittest/test_github_action_runner_core.py781 async def handle_request(self, url, body, notify=None):CODE
LOWtests/unittest/test_github_action_runner_core.py812 async def handle_request(self, url, body, notify=None):CODE
LOWtests/unittest/test_github_action_runner_core.py840 async def handle_request(self, url, body, notify=None):CODE
LOWtests/unittest/test_github_action_runner_core.py899 async def handle_request(self, url, body, notify=None):CODE
LOWtests/unittest/test_github_action_runner_core.py1043 async def handle_request(self, url, body, notify=None):CODE
LOW⚡tests/unittest/test_cli_plain_diff_mode.py447 async def handle_request(self, target, request, notify=None):CODE
LOW⚡tests/unittest/test_cli_plain_diff_mode.py461 async def handle_request(self, target, request, notify=None):CODE
LOWtests/unittest/test_cli_plain_diff_mode.py198 async def handle_request(self, target, request, notify=None):CODE
LOWtests/unittest/test_cli_plain_diff_mode.py298 async def handle_request(self, target, request, notify=None):CODE
LOWtests/unittest/test_cli_plain_diff_mode.py365 async def handle_request(self, target, request, notify=None):CODE
LOWtests/unittest/test_cli_plain_diff_mode.py428 async def handle_request(self, target, request, notify=None):CODE
LOWtests/unittest/test_cli_plain_diff_mode.py481 async def handle_request(self, target, request, notify=None):CODE
LOWtests/unittest/test_gitlab_webhook_outcome_reactions.py113 async def handle_request(api_url, request, log_context, sender_id, notify=None):CODE
LOWtests/unittest/test_gitlab_webhook_outcome_reactions.py178 async def handle_request(api_url, body, log_context, sender_id, notify=None):CODE
LOWtests/unittest/test_gitlab_webhook_outcome_reactions.py214 async def handle_request(self, api_url, body, notify=None):CODE
LOWtests/unittest/test_github_empty_diff_cache.py114 async def handle_request(self, api_url, command, notify=None):CODE
LOWtests/unittest/test_webhook_logic_core.py377 async def handle_request(self, _url, command, notify=None):CODE
LOWtests/unittest/test_webhook_logic_core.py870 async def handle_request(self, _url, command):CODE
LOWtests/unittest/test_webhook_logic_core.py990 async def handle_request(self, _url, command):CODE
LOWtests/unittest/test_gerrit_webhook_authentication.py25 async def handle_request(self, url, body):CODE
LOWtests/unittest/test_pr_command_profiles.py67 async def handle_request(self, _url, command, notify=None):CODE
LOWtests/unittest/test_bitbucket_push_dedupe.py65 async def handle_request(self, _url, _command):CODE
LOWtests/unittest/test_cli_exit_status.py355 async def handle_request(self, target, _request, notify=None):CODE
LOWtests/unittest/test_cli_exit_status.py411 async def handle_request(self, *_args, **_kwargs):CODE
LOW⚡tests/unittest/test_comment_command_gating.py161 async def handle_request(self, api_url, body, notify=None, propagate_tool_errors=False):CODE
LOWtests/unittest/test_comment_command_gating.py207 async def handle_request(self, api_url, body, notify=None, propagate_tool_errors=False):CODE
LOWtests/unittest/test_comment_command_gating.py270 async def handle_request(self, pr_url, command, notify=None):CODE
LOWtests/unittest/test_comment_command_gating.py366 async def handle_request(self, pr_url, command, notify=None):CODE
LOWtests/unittest/test_gerrit_ask_dispatch.py26 async def handle_request(self, url, body):CODE
LOWtests/unittest/test_comment_reactions.py279 async def handle_request(api_url, command, notify=None, **_kwargs):CODE
LOWtests/unittest/test_comment_reactions.py296 async def handle_request(api_url, command, notify=None, **_kwargs):CODE
LOWtests/unittest/test_comment_reactions.py313 async def handle_request(api_url, command, notify=None, **_kwargs):CODE
LOWtests/unittest/test_cli_artifact_context.py37 async def handle_request(self, *_args, **_kwargs):CODE
Cross-Language Confusion6 hits · 35 pts
SeverityFileLineSnippetContext
HIGHpr_agent/git_providers/github_provider.py1977 repository's same-named branch. A deleted head fork (``head.repo`` is null)STRING
HIGH⚡tests/unittest/test_load_yaml.py129 "{title: !!null, type: [Bug fix]}",CODE
HIGHtests/unittest/test_load_yaml.py204 "{title: !!null, type: [Bug fix]}",CODE
HIGH⚡tests/unittest/test_gitlab_project_reads.py163 """An empty repository reports null, and that answer is worth caching like any other."""STRING
HIGHtests/unittest/test_pr_help_message_fallback.py80 snippets = "Use `a < b && c > d` and `<review enabled=\"true\">`."CODE
HIGH⚡tests/unittest/test_run_details.py170 # Raw OpenAI payloads can carry prompt_tokens_details: null; the cache lookup must notCOMMENT
Unused Imports49 hits · 34 pts
SeverityFileLineSnippetContext
LOWpr_agent/mosaico/server.py33CODE
LOWpr_agent/mosaico/server.py77CODE
LOWpr_agent/git_providers/azuredevops_provider.py1CODE
LOWpr_agent/git_providers/__init__.py1CODE
LOWpr_agent/algo/review_merge.py19CODE
LOWpr_agent/algo/run_output.py1CODE
LOWpr_agent/algo/comment_identity.py1CODE
LOWpr_agent/algo/token_budget.py1CODE
LOWpr_agent/algo/url_safety.py9CODE
LOWpr_agent/algo/model_routing.py7CODE
LOWpr_agent/algo/inline_comment_dedup.py33CODE
LOWpr_agent/algo/output_sinks.py3CODE
LOWpr_agent/algo/utils.py1CODE
LOWpr_agent/algo/skills_loader.py38CODE
LOWpr_agent/algo/review_finding_state.py3CODE
LOWpr_agent/algo/pr_processing.py1CODE
LOWpr_agent/algo/git_patch_processing.py1CODE
LOWpr_agent/algo/ai_handlers/litellm_ai_handler.py9CODE
LOWpr_agent/algo/ai_handlers/litellm_ai_handler.py53CODE
LOWpr_agent/algo/ai_handlers/litellm_ai_handler.py53CODE
LOWpr_agent/algo/ai_handlers/litellm_ai_handler.py53CODE
LOWpr_agent/algo/ai_handlers/litellm_ai_handler.py53CODE
LOWpr_agent/algo/ai_handlers/litellm_ai_handler.py53CODE
LOWpr_agent/algo/ai_handlers/litellm_ai_handler.py53CODE
LOWpr_agent/algo/ai_handlers/litellm_ai_handler.py53CODE
LOWpr_agent/algo/ai_handlers/litellm_ai_handler.py53CODE
LOWpr_agent/algo/ai_handlers/litellm_ai_handler.py53CODE
LOWpr_agent/algo/ai_handlers/litellm_ai_handler.py53CODE
LOWpr_agent/algo/ai_handlers/litellm_ai_handler.py53CODE
LOWpr_agent/algo/ai_handlers/litellm_ai_handler.py53CODE
LOWpr_agent/algo/ai_handlers/litellm_ai_handler.py53CODE
LOWpr_agent/algo/ai_handlers/litellm_ai_handler.py53CODE
LOWpr_agent/algo/ai_handlers/litellm_ai_handler.py53CODE
LOWpr_agent/algo/ai_handlers/litellm_ai_handler.py53CODE
LOWpr_agent/algo/ai_handlers/litellm_ai_handler.py53CODE
LOWpr_agent/algo/ai_handlers/litellm_ai_handler.py53CODE
LOWpr_agent/algo/ai_handlers/litellm_ai_handler.py53CODE
LOWpr_agent/algo/ai_handlers/litellm_ai_handler.py53CODE
LOWpr_agent/algo/ai_handlers/litellm_ai_handler.py53CODE
LOWpr_agent/log/__init__.py4CODE
LOWtests/unittest/test_mosaico_provider.py180CODE
LOWtests/unittest/test_mosaico_router.py29CODE
LOWtests/unittest/test_mosaico_a2a_roundtrip.py28CODE
LOWtests/unittest/test_fresh_vars_functionality.py22CODE
LOWtests/unittest/test_request_policy.py243CODE
LOWtests/unittest/test_request_policy.py453CODE
LOWscripts/check_docs_urls.py16CODE
LOWscripts/set_pyproject_version.py10CODE
LOWscripts/generate_config_reference.py12CODE
Fake / Example Data33 hits · 28 pts
SeverityFileLineSnippetContext
LOWpr_agent/algo/ai_handlers/cloud_auth.py77DUMMY_LITELLM_API_KEY = "dummy_key" # request-local guard against LiteLLM's process-wide key fallbacksCODE
LOWtests/unittest/test_pr_reviewer_core.py133 assert "user@example.com" not in commentCODE
LOW⚡tests/unittest/test_extra_config_url.py189 fake_token = "TEST-AUTH-TOKEN-NOT-REAL"CODE
LOW⚡tests/unittest/test_extra_config_url.py190 urlopen_stub.required_header = ("Private-Token", fake_token)CODE
LOW⚡tests/unittest/test_extra_config_url.py191 monkeypatch.setenv("PR_AGENT_EXTRA_CONFIG_AUTH_HEADER", f"PRIVATE-TOKEN: {fake_token}")CODE
LOW⚡tests/unittest/test_extra_config_url.py200 assert headers.get("private-token") == fake_tokenCODE
LOW⚡tests/unittest/test_extract_relevant_lines_str.py262 filler_40 = "\n".join(f"lorem ipsum line {i}" for i in range(1, 41))CODE
LOW⚡tests/unittest/test_extract_relevant_lines_str.py277 "Lorem ipsum: docs/ipsum/README.md contains values that look like "CODE
LOW⚡tests/unittest/test_extract_relevant_lines_str.py283 "issue_header": "[Secure] Lorem ipsum error messages expose response body\n",CODE
LOW⚡tests/unittest/test_extract_relevant_lines_str.py293 "issue_header": "[Correct] Lorem ipsum incorrect HTTP method in `ipsum_fetch`\n",CODE
LOW⚡tests/unittest/test_extract_relevant_lines_str.py303 "issue_header": "[Secure] Lorem ipsum placeholder values in README\n",CODE
LOW⚡tests/unittest/test_extract_relevant_lines_str.py306 "`'adipiscing-elit-sed-do-eiusmod'` (lorem ipsum example).\n"CODE
LOW⚡tests/unittest/test_extract_relevant_lines_str.py145 "Lorem ipsum `foo_param` and `bar_param` dolor sit amet. "STRING
LOW⚡tests/unittest/test_extract_relevant_lines_str.py145 "Lorem ipsum `foo_param` and `bar_param` dolor sit amet. "STRING
LOW⚡tests/unittest/test_extract_relevant_lines_str.py258 41: lorem ipsum flag value \\STRING
LOW⚡tests/unittest/test_extract_relevant_lines_str.py259 42: dolor sit amet flag valueSTRING
LOWtests/unittest/test_extract_relevant_lines_str.py171 "issue_header": "[Secure] Lorem ipsum placeholder values in README",STRING
LOWtests/unittest/test_gitlab_provider.py96 "GITLAB.PERSONAL_ACCESS_TOKEN": "fake_token"CODE
LOWtests/unittest/test_gitlab_provider.py2024 "GITLAB.PERSONAL_ACCESS_TOKEN": "fake_token",CODE
LOWtests/unittest/test_ticket_compliance.py374 get_settings().set("jira.jira_api_email", "user@example.com")CODE
LOWtests/unittest/test_litellm_api_key_guard.py638@pytest.mark.parametrize("key", (None, "owned-key", "dummy_key"))CODE
LOWtests/unittest/test_litellm_api_key_guard.py829@pytest.mark.parametrize("key", (None, "owned-key", "dummy_key"))CODE
LOWtests/unittest/test_litellm_api_key_guard.py938@pytest.mark.parametrize("key", (None, "owned-key", "dummy_key"))CODE
LOWtests/unittest/test_litellm_api_key_guard.py1101@pytest.mark.parametrize("key", (None, "owned-key", "dummy_key"))CODE
LOWtests/unittest/test_litellm_api_key_guard.py1687@pytest.mark.parametrize("api_key", ("owned-key", "dummy_key"))CODE
LOWtests/unittest/test_litellm_api_key_guard.py4891 "data": b'{"access_token":"fake-token","expires_in":3600,"token_type":"Bearer"}',CODE
LOWtests/unittest/test_litellm_api_key_guard.py4899 "fake-token", project or "credential-project",CODE
LOWtests/unittest/test_mosaico_health.py342 secret = "fake-key https://private-endpoint.example"CODE
LOWtests/unittest/test_mosaico_health.py364 for private_detail in ("fake-key", "private-endpoint"):CODE
LOWtests/unittest/test_mosaico_health.py383 private_detail = "fake-key https://private-endpoint.example"CODE
LOWtests/unittest/test_mosaico_health.py417 for detail in ("fake-key", "private-endpoint"):CODE
LOW⚡tests/unittest/test_git_provider_utils.py171 "settings": b"[github]\nuser_token = \"dummy-value\"\n[pr_reviewer]\nnum_max_findings =",CODE
LOWtests/unittest/test_git_provider_utils.py182 assert "dummy-value" not in provider.comments[1]CODE
Docstring Block Structure5 hits · 25 pts
SeverityFileLineSnippetContext
HIGHpr_agent/tools/pr_generate_labels.py136 Prepare the AI prediction for the PR labels based on the provided model. Args: model (str)STRING
HIGHpr_agent/algo/token_budget.py177 Clip the number of tokens in a string to a maximum number of tokens. This function limits text to a specified STRING
HIGHpr_agent/algo/utils.py792 Fix broken or incomplete JSON messages and return the parsed JSON data. Args: json_message (str): A stSTRING
HIGHpr_agent/algo/utils.py848 Update the settings of the Dynaconf object based on the arguments passed to the function. Args: args: STRING
HIGHpr_agent/algo/ai_handlers/litellm_helpers.py256 Process LITELLM.EXTRA_BODY configuration and update kwargs accordingly. Args: kwargs: The current kwarSTRING
Redundant / Tautological Comments10 hits · 14 pts
SeverityFileLineSnippetContext
LOW⚡pr_agent/tools/pr_help_docs.py115 # Check if it's an underline (heading is above it)COMMENT
LOW⚡pr_agent/tools/pr_help_docs.py514 # Check if file has one of the specified extensionsCOMMENT
LOWpr_agent/tools/pr_help_docs.py693 # Check if the updated list of documents does not exceed limits and trim if it does:COMMENT
LOWpr_agent/git_providers/github_provider.py1824 if parsed_url.path.startswith('/api/v3'): #Check if came from github appCODE
LOWpr_agent/git_providers/github_provider.py1828 if 'api.github.com' in parsed_url.netloc or '/api/v3' in issue_url: #Check if came from github appCODE
LOWpr_agent/agent/pr_agent.py429 # Check if the specific language instruction is already present to avoid duplicationCOMMENT
LOWpr_agent/servers/bitbucket_server_webhook.py81 # Check if ALL files are outside allowed foldersCOMMENT
LOWpr_agent/servers/bitbucket_server_webhook.py242 # Check if the parsed object is a list of stringsCOMMENT
LOWpr_agent/servers/github_action_runner.py215 # Check if required environment variables are setCOMMENT
LOWpr_agent/servers/bitbucket_app.py366 # Check if the PR should be processedCOMMENT
Modern AI Meta-Vocabulary5 hits · 12 pts
SeverityFileLineSnippetContext
MEDIUMtests/unittest/test_get_max_tokens.py1329 # context window. zai/glm-5.2 is covered by test_zai_glm_5_2_model_max_tokensCOMMENT
MEDIUMdocs/docs/usage-guide/changing_a_model.md746Keep the `openai/` prefix on the model name, whatever OrcaRouter model ID you use (`openai/anthropic/claude-fable-5`, `oCODE
MEDIUMdocs/docs/usage-guide/changing_a_model.md758custom_model_max_tokens = 400000 # the context window Neon publishes for the modelCODE
MEDIUMdocs/docs/usage-guide/changing_a_model.md810custom_model_max_tokens = 1048000 # the context window Atlas publishes for the modelCODE
MEDIUMdocs/docs/core-abilities/dynamic_context.md34## Challenges of expanding the context windowCOMMENT
AI Slop Vocabulary3 hits · 9 pts
SeverityFileLineSnippetContext
MEDIUMpr_agent/git_providers/github_provider.py1421 # Be robust to providers built without full __init__ (e.g. __new__ in tests/helpers):COMMENT
LOWpr_agent/git_providers/git_provider.py739 # if the existing description wasn't generated by the pr-agent, just return it as-isCOMMENT
MEDIUM⚡tests/unittest/test_pr_questions_helpers.py211 # rather than the exact full match, to remain robust to that quirk.COMMENT
AI Structural Patterns13 hits · 8 pts
SeverityFileLineSnippetContext
LOWpr_agent/tools/pr_code_suggestions.py722CODE
LOWpr_agent/tools/pr_code_suggestions.py1025CODE
LOWpr_agent/git_providers/git_provider.py1066CODE
LOWpr_agent/algo/pr_processing.py907CODE
LOWpr_agent/servers/utils.py344CODE
LOWpr_agent/servers/help.py22CODE
LOWtests/unittest/test_litellm_claude_adaptive_thinking.py53CODE
LOWtests/unittest/test_pr_description_output_core.py56CODE
LOWtests/unittest/test_ticket_extraction_async.py108CODE
LOWtests/unittest/test_gitlab_provider.py51CODE
LOWtests/unittest/test_litellm_api_key_guard.py187CODE
LOWtests/unittest/test_token_handler.py9CODE
LOWtests/unittest/test_gitea_provider.py1492CODE
Magic Placeholder Names2 hits · 8 pts
SeverityFileLineSnippetContext
HIGHpr_agent/settings/.secrets_template.toml95otlp_headers = "" # e.g., "x-honeycomb-team=YOUR_API_KEY" or "Authorization=Bearer YOUR_TOKEN"STRING
HIGHdocs/docs/usage-guide/additional_configurations.md377otlp_headers = "x-honeycomb-team=YOUR_API_KEY" # optional, "key1=value1,key2=value2"CODE
Dead Code3 hits · 6 pts
SeverityFileLineSnippetContext
MEDIUMtests/unittest/test_mosaico_a2a_roundtrip.py620CODE
MEDIUMtests/unittest/test_streaming_api_error_construction.py166CODE
MEDIUMtests/unittest/test_streaming_api_error_construction.py379CODE
Modern Structural Boilerplate3 hits · 2 pts
SeverityFileLineSnippetContext
LOWpr_agent/tools/progress_comment.py148 async def set_failed(self, count: int) -> None:CODE
LOWpr_agent/tools/progress_comment.py170 def _update_check_run_safely(self, line: str) -> None:CODE
LOWpr_agent/git_providers/git_provider.py917 def set_command_actor(self, actor) -> None:CODE
Example Usage Blocks1 hit · 2 pts
SeverityFileLineSnippetContext
LOWpr_agent/git_providers/git_provider.py517 # Example usage:COMMENT