Repository Analysis

The-PR-Agent/pr-agent

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

45.8 Strong AI signal View on GitHub

Analysis Overview

This report presents the forensic synthetic code analysis of The-PR-Agent/pr-agent, a Python project with 12,098 GitHub stars. SynthScan v2.0 examined 56,804 lines of code across 291 source files, recording 1958 pattern matches distributed across 19 syntactic categories. The overall adjusted score of 45.8 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).

45.8
Adjusted Score
45.8
Raw Score
100%
Time Factor
2026-07-10
Last Push
12.1K
Stars
Python
Language
56.8K
Lines of Code
291
Files
2.0K
Pattern Hits
2026-07-14
Scan Date
0.08
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 22MEDIUM 275LOW 1661

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 1958 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.

Hyper-Verbose Identifiers1049 hits · 997 pts
SeverityFileLineSnippetContext
LOWpr_agent/config_loader.py94def apply_secrets_manager_config():CODE
LOWpr_agent/mosaico/env_bridge.py64def _register_langfuse_callback(settings) -> None:CODE
LOWpr_agent/mosaico/dispatch.py115def _ask_needs_context_fallback() -> str:CODE
LOWpr_agent/mosaico/dispatch.py205def _pr_fetch_failed_fallback(pr_url: str) -> str:CODE
LOWpr_agent/mosaico/observability.py18def parse_observability_metadata(raw) -> dict:CODE
LOWpr_agent/tools/pr_update_changelog.py140 def _prepare_changelog_update(self) -> Tuple[str, str]:CODE
LOWpr_agent/tools/pr_code_suggestions.py247 def publish_persistent_comment_with_history(git_provider: GitProvider,CODE
LOWpr_agent/tools/pr_code_suggestions.py429 async def analyze_self_reflection_response(self, data, response_reflect):CODE
LOWpr_agent/tools/pr_code_suggestions.py495 def _prepare_pr_code_suggestions(self, predictions: str) -> Dict:CODE
LOWpr_agent/tools/pr_code_suggestions.py546 async def push_inline_code_suggestions(self, data):CODE
LOWpr_agent/tools/pr_code_suggestions.py628 def validate_one_liner_suggestion_not_repeating_code(self, suggestion):CODE
LOWpr_agent/tools/pr_code_suggestions.py743 async def convert_to_decoupled_with_line_numbers(self, patches_diff_list_no_line_numbers, model) -> List[str]:CODE
LOWpr_agent/tools/pr_code_suggestions.py779 def generate_summarized_suggestions(self, data: Dict) -> str:CODE
LOWpr_agent/tools/pr_code_suggestions.py909 async def self_reflect_on_suggestions(self,CODE
LOWpr_agent/tools/pr_description.py504 def _prepare_pr_answer_with_markers(self) -> Tuple[str, str, str, List[dict]]:STRING
LOWpr_agent/tools/pr_description.py665 def process_pr_files_prediction(self, pr_body, value):STRING
LOWpr_agent/tools/pr_similar_issue.py401 def _update_index_with_issues(self, issues_list, repo_name_for_index, upsert=False):CODE
LOWpr_agent/tools/pr_similar_issue.py496 def _update_table_with_issues(self, issues_list, repo_name_for_index, ingest=False):CODE
LOWpr_agent/tools/pr_similar_issue.py587 def _update_qdrant_with_issues(self, issues_list, repo_name_for_index, ingest=False):CODE
LOWpr_agent/tools/pr_line_questions.py104 def _load_conversation_history(self) -> str:CODE
LOWpr_agent/tools/pr_help_docs.py120def map_documentation_files_to_contents(base_path: str, doc_files: list[str], max_allowed_file_len=5000) -> dict[str, stCODE
LOWpr_agent/tools/pr_help_docs.py147def aggregate_documentation_files_for_prompt_contents(file_path_to_contents: dict[str, str], return_just_headings=False)CODE
LOWpr_agent/tools/pr_help_docs.py421 def _gen_filenames_to_contents_map_from_repo(self) -> dict[str, str]:CODE
LOWpr_agent/tools/pr_help_docs.py48def extract_model_answer_and_relevant_sources(ai_response: str) -> str | None:CODE
LOWpr_agent/tools/pr_help_docs.py75def get_maximal_text_input_length_for_token_count_estimation():CODE
LOWpr_agent/tools/pr_help_docs.py169def format_markdown_q_and_a_response(question_str: str, response_str: str, relevant_sections: list[dict[str, str]],CODE
LOWpr_agent/tools/pr_help_docs.py396 def _find_all_document_files_matching_exts(self, abs_docs_path: str, ignore_readme=False, max_allowed_files=5000) ->CODE
LOWpr_agent/tools/pr_help_docs.py494 async def _rank_docs_and_return_them_as_prompt(self, docs_filepath_to_contents: dict[str, str], max_allowed_txt_inpuCODE
LOWpr_agent/tools/pr_reviewer.py197 def _should_publish_review_no_suggestions(self, pr_review: str) -> bool:CODE
LOWpr_agent/tools/pr_reviewer.py316 def _get_previous_review_comment(self):CODE
LOWpr_agent/tools/pr_reviewer.py329 def _remove_previous_review_comment(self, comment):CODE
LOWpr_agent/tools/pr_reviewer.py339 def _can_run_incremental_review(self) -> bool:CODE
LOWpr_agent/tools/pr_help_message.py272 async def prepare_relevant_snippets(self, sim_results):CODE
LOWpr_agent/tools/ticket_pr_compliance_check.py38def extract_ticket_links_from_pr_description(pr_description, repo_path, base_url_html='https://github.com'):CODE
LOWpr_agent/tools/ticket_pr_compliance_check.py77def extract_ticket_links_from_branch_name(branch_name, repo_path, base_url_html="https://github.com"):CODE
LOWpr_agent/tools/ticket_pr_compliance_check.py243async def extract_and_cache_pr_tickets(git_provider, vars):CODE
LOWpr_agent/tools/pr_questions.py82 def identify_image_in_comment(self):CODE
LOWpr_agent/git_providers/codecommit_provider.py349 def _is_valid_codecommit_hostname(hostname: str) -> bool:CODE
LOWpr_agent/git_providers/codecommit_provider.py475 def _get_language_percentages(extensions):CODE
LOWpr_agent/git_providers/azuredevops_provider.py127 def reply_to_comment_from_comment_id(self, comment_id: int, body: str, is_temporary: bool = False) -> Comment:CODE
LOWpr_agent/git_providers/azuredevops_provider.py624 def publish_persistent_comment(self, pr_comment: str,CODE
LOWpr_agent/git_providers/github_provider.py532 def get_review_thread_comments(self, comment_id: int) -> list[dict]:CODE
LOWpr_agent/git_providers/github_provider.py713 def edit_comment_from_comment_id(self, comment_id: int, body: str):CODE
LOWpr_agent/git_providers/github_provider.py724 def reply_to_comment_from_comment_id(self, comment_id: int, body: str):CODE
LOWpr_agent/git_providers/github_provider.py735 def get_comment_body_from_comment_id(self, comment_id: int):CODE
LOWpr_agent/git_providers/github_provider.py881 def _get_global_repo_settings(self):CODE
LOWpr_agent/git_providers/github_provider.py387 def publish_persistent_comment(self, pr_comment: str,CODE
LOWpr_agent/git_providers/github_provider.py566 def _publish_inline_comments_fallback_with_verification(self, comments: list[dict]):CODE
LOWpr_agent/git_providers/github_provider.py626 def _try_fix_invalid_inline_comments(self, invalid_comments: list[dict]) -> list[dict]:CODE
LOWpr_agent/git_providers/github_provider.py898 def _fetch_global_repo_settings(self, repo_owner):CODE
LOWpr_agent/git_providers/github_provider.py1143 def generate_link_to_relevant_line_number(self, suggestion) -> str:CODE
LOWpr_agent/git_providers/github_provider.py1177 def get_lines_link_original_file(self, filepath: str, component_range: Range) -> str:CODE
LOWpr_agent/git_providers/github_provider.py1302 def validate_comments_inside_hunks(self, code_suggestions):STRING
LOWpr_agent/git_providers/github_provider.py1388 def _prepare_clone_url_with_token(self, repo_url_to_clone: str) -> str | None:STRING
LOWpr_agent/git_providers/gitea_provider.py197 def __set_repo_and_owner_from_pr(self):CODE
LOWpr_agent/git_providers/gitea_provider.py210 def __set_repo_and_owner_from_issue(self):CODE
LOWpr_agent/git_providers/gitea_provider.py431 def _get_file_content_from_base(self, filename: str) -> str:CODE
LOWpr_agent/git_providers/gitea_provider.py439 def _get_file_content_from_latest_commit(self, filename: str) -> str:CODE
LOWpr_agent/git_providers/gitea_provider.py235 def publish_persistent_comment(self, pr_comment: str,CODE
LOWpr_agent/git_providers/gitea_provider.py721 def _prepare_clone_url_with_token(self, repo_url_to_clone: str) -> str | None:CODE
989 more matches not shown…
Decorative Section Separators172 hits · 688 pts
SeverityFileLineSnippetContext
MEDIUMtests/unittest/test_extra_config_url.py93# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unittest/test_extra_config_url.py95# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unittest/test_extra_config_url.py237# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unittest/test_extra_config_url.py239# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unittest/test_extra_config_url.py21# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unittest/test_extra_config_url.py23# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unittest/test_extra_config_url.py319# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unittest/test_extra_config_url.py326# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unittest/test_extra_config_url.py689# ---------------------------------------------------------------------------STRING
MEDIUMtests/unittest/test_extra_config_url.py691# ---------------------------------------------------------------------------STRING
MEDIUMtests/unittest/test_diff_pipeline_core.py65# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unittest/test_diff_pipeline_core.py67# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unittest/test_diff_pipeline_core.py148# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unittest/test_diff_pipeline_core.py150# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unittest/test_diff_pipeline_core.py233# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unittest/test_diff_pipeline_core.py235# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unittest/test_diff_pipeline_core.py312# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unittest/test_diff_pipeline_core.py314# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unittest/test_diff_pipeline_core.py22# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unittest/test_diff_pipeline_core.py24# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unittest/test_mosaico_provider.py157# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unittest/test_mosaico_provider.py159# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unittest/test_pr_code_suggestions_rendering.py39# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unittest/test_pr_code_suggestions_rendering.py41# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unittest/test_pr_code_suggestions_rendering.py104# ---------------------------------------------------------------------------STRING
MEDIUMtests/unittest/test_pr_code_suggestions_rendering.py106# ---------------------------------------------------------------------------STRING
MEDIUMtests/unittest/test_pr_code_suggestions_rendering.py172# ---------------------------------------------------------------------------STRING
MEDIUMtests/unittest/test_pr_code_suggestions_rendering.py174# ---------------------------------------------------------------------------STRING
MEDIUMtests/unittest/test_pr_code_suggestions_rendering.py263# ---------------------------------------------------------------------------STRING
MEDIUMtests/unittest/test_pr_code_suggestions_rendering.py265# ---------------------------------------------------------------------------STRING
MEDIUMtests/unittest/test_pr_code_suggestions_rendering.py328# ---------------------------------------------------------------------------STRING
MEDIUMtests/unittest/test_pr_code_suggestions_rendering.py330# ---------------------------------------------------------------------------STRING
MEDIUMtests/unittest/test_mosaico_router.py85# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unittest/test_mosaico_router.py87# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unittest/test_mosaico_router.py107# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unittest/test_mosaico_router.py109# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unittest/test_mosaico_router.py172# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unittest/test_mosaico_router.py174# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unittest/test_mosaico_router.py242# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unittest/test_mosaico_router.py244# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unittest/test_mosaico_router.py301# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unittest/test_mosaico_router.py303# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unittest/test_mosaico_router.py342# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unittest/test_mosaico_router.py344# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unittest/test_mosaico_router.py570# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unittest/test_mosaico_router.py572# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unittest/test_mosaico_router.py421# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unittest/test_mosaico_router.py423# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unittest/test_mosaico_router.py489# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unittest/test_mosaico_router.py491# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unittest/test_pr_code_suggestions_filtering.py44# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unittest/test_pr_code_suggestions_filtering.py46# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unittest/test_pr_code_suggestions_filtering.py88# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unittest/test_pr_code_suggestions_filtering.py90# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unittest/test_pr_code_suggestions_filtering.py185# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unittest/test_pr_code_suggestions_filtering.py187# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unittest/test_pr_code_suggestions_filtering.py243# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unittest/test_pr_code_suggestions_filtering.py245# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unittest/test_pr_code_suggestions_filtering.py359# ---------------------------------------------------------------------------STRING
MEDIUMtests/unittest/test_pr_code_suggestions_filtering.py361# ---------------------------------------------------------------------------STRING
112 more matches not shown…
Excessive Try-Catch Wrapping428 hits · 488 pts
SeverityFileLineSnippetContext
LOWpr_agent/config_loader.py59 except Exception:CODE
LOWpr_agent/config_loader.py114 except Exception as e:CODE
LOWpr_agent/config_loader.py116 except Exception as e:CODE
LOWpr_agent/custom_merge_loader.py92 except Exception as e:CODE
LOW…agent/secret_providers/aws_secrets_manager_provider.py23 except Exception as e:CODE
LOW…agent/secret_providers/aws_secrets_manager_provider.py34 except Exception as e:CODE
LOW…agent/secret_providers/aws_secrets_manager_provider.py45 except Exception as e:CODE
LOW…agent/secret_providers/aws_secrets_manager_provider.py55 except Exception as e:CODE
MEDIUM…agent/secret_providers/aws_secrets_manager_provider.py11def __init__(self):CODE
LOW…cret_providers/google_cloud_storage_secret_provider.py16 except Exception as e:CODE
LOW…cret_providers/google_cloud_storage_secret_provider.py24 except Exception as e:CODE
LOW…cret_providers/google_cloud_storage_secret_provider.py32 except Exception as e:CODE
MEDIUM…cret_providers/google_cloud_storage_secret_provider.py10def __init__(self):CODE
LOWpr_agent/secret_providers/__init__.py14 except Exception as e:CODE
LOWpr_agent/secret_providers/__init__.py21 except Exception as e:CODE
LOWpr_agent/mosaico/server.py74 except Exception as e:CODE
LOWpr_agent/mosaico/dispatch.py135 except Exception:CODE
LOWpr_agent/mosaico/dispatch.py154 except Exception:CODE
LOWpr_agent/mosaico/dispatch.py200 except Exception as e:CODE
LOWpr_agent/mosaico/dispatch.py245 except Exception:CODE
LOWpr_agent/mosaico/dispatch.py310 except Exception:CODE
LOWpr_agent/mosaico/observability.py77 except Exception as e:CODE
LOWpr_agent/mosaico/executor.py72 except Exception as e:CODE
LOWpr_agent/mosaico/executor.py117 except Exception as e:CODE
LOWpr_agent/tools/pr_update_changelog.py181 except Exception:CODE
LOWpr_agent/tools/pr_update_changelog.py212 except Exception as e:CODE
MEDIUMpr_agent/tools/pr_update_changelog.py200def _get_changelog_file(self):CODE
MEDIUMpr_agent/tools/pr_code_suggestions.py97def run(self):CODE
MEDIUMpr_agent/tools/pr_code_suggestions.py628def validate_one_liner_suggestion_not_repeating_code(self, suggestion):CODE
LOWpr_agent/tools/pr_code_suggestions.py188 except Exception as e:CODE
LOWpr_agent/tools/pr_code_suggestions.py198 except Exception as e:CODE
LOWpr_agent/tools/pr_code_suggestions.py243 except Exception as e:CODE
LOWpr_agent/tools/pr_code_suggestions.py350 except Exception as e:CODE
LOWpr_agent/tools/pr_code_suggestions.py458 except Exception as e:CODE
LOWpr_agent/tools/pr_code_suggestions.py462 except Exception as e: #CODE
LOWpr_agent/tools/pr_code_suggestions.py480 except Exception as e:CODE
LOWpr_agent/tools/pr_code_suggestions.py540 except Exception as e:CODE
LOWpr_agent/tools/pr_code_suggestions.py579 except Exception:CODE
LOWpr_agent/tools/pr_code_suggestions.py623 except Exception as e:CODE
LOWpr_agent/tools/pr_code_suggestions.py650 except Exception as e:CODE
LOWpr_agent/tools/pr_code_suggestions.py673 except Exception as e:CODE
LOWpr_agent/tools/pr_code_suggestions.py734 except Exception as e:CODE
LOWpr_agent/tools/pr_code_suggestions.py774 except Exception as e:CODE
LOWpr_agent/tools/pr_code_suggestions.py895 except Exception as e:CODE
LOWpr_agent/tools/pr_code_suggestions.py948 except Exception as e:CODE
MEDIUMpr_agent/tools/pr_description.py99def run(self):CODE
LOWpr_agent/tools/pr_description.py204 except Exception as e:CODE
LOWpr_agent/tools/pr_description.py740 except Exception as e:CODE
LOWpr_agent/tools/pr_description.py398 except Exception as e:STRING
LOWpr_agent/tools/pr_description.py428 except Exception as e:STRING
LOWpr_agent/tools/pr_description.py500 except Exception as e:STRING
LOWpr_agent/tools/pr_description.py544 except Exception as e:STRING
LOWpr_agent/tools/pr_description.py660 except Exception as e:STRING
LOWpr_agent/tools/pr_similar_issue.py47 except Exception:CODE
LOWpr_agent/tools/pr_similar_issue.py184 except Exception:CODE
LOWpr_agent/tools/pr_similar_issue.py192 except Exception:CODE
LOWpr_agent/tools/pr_similar_issue.py269 except Exception as e:CODE
LOWpr_agent/tools/pr_similar_issue.py361 except Exception:CODE
LOWpr_agent/tools/pr_similar_issue.py593 except Exception:CODE
LOWpr_agent/tools/pr_similar_issue.py660 except Exception:CODE
368 more matches not shown…
Deep Nesting125 hits · 100 pts
SeverityFileLineSnippetContext
LOWpr_agent/config_loader.py94CODE
LOWpr_agent/config_loader.py125CODE
LOWpr_agent/cli.py89CODE
LOWpr_agent/custom_merge_loader.py12CODE
LOWpr_agent/mosaico/dispatch.py161CODE
LOWpr_agent/mosaico/diff_provider.py29CODE
LOWpr_agent/tools/pr_code_suggestions.py97CODE
LOWpr_agent/tools/pr_code_suggestions.py227CODE
LOWpr_agent/tools/pr_code_suggestions.py247CODE
LOWpr_agent/tools/pr_code_suggestions.py429CODE
LOWpr_agent/tools/pr_code_suggestions.py495CODE
LOWpr_agent/tools/pr_code_suggestions.py588CODE
LOWpr_agent/tools/pr_code_suggestions.py628CODE
LOWpr_agent/tools/pr_code_suggestions.py655CODE
LOWpr_agent/tools/pr_code_suggestions.py677CODE
LOWpr_agent/tools/pr_code_suggestions.py743CODE
LOWpr_agent/tools/pr_code_suggestions.py779CODE
LOWpr_agent/tools/pr_description.py99CODE
LOWpr_agent/tools/pr_description.py210CODE
LOWpr_agent/tools/pr_description.py331CODE
LOWpr_agent/tools/pr_description.py477CODE
LOWpr_agent/tools/pr_description.py555CODE
LOWpr_agent/tools/pr_description.py665CODE
LOWpr_agent/tools/pr_similar_issue.py19CODE
LOWpr_agent/tools/pr_similar_issue.py260CODE
LOWpr_agent/tools/pr_similar_issue.py401CODE
LOWpr_agent/tools/pr_similar_issue.py496CODE
LOWpr_agent/tools/pr_similar_issue.py587CODE
LOWpr_agent/tools/pr_add_docs.py169CODE
LOWpr_agent/tools/pr_add_docs.py136CODE
LOWpr_agent/tools/pr_generate_labels.py65CODE
LOWpr_agent/tools/pr_generate_labels.py159CODE
LOWpr_agent/tools/pr_help_docs.py81CODE
LOWpr_agent/tools/pr_help_docs.py120CODE
LOWpr_agent/tools/pr_help_docs.py147CODE
LOWpr_agent/tools/pr_help_docs.py169CODE
LOWpr_agent/tools/pr_help_docs.py396CODE
LOWpr_agent/tools/pr_help_docs.py421CODE
LOWpr_agent/tools/pr_reviewer.py292CODE
LOWpr_agent/tools/pr_reviewer.py383CODE
LOWpr_agent/tools/pr_help_message.py96CODE
LOWpr_agent/tools/ticket_pr_compliance_check.py38CODE
LOWpr_agent/tools/ticket_pr_compliance_check.py117CODE
LOWpr_agent/tools/ticket_pr_compliance_check.py243CODE
LOWpr_agent/git_providers/codecommit_provider.py428CODE
LOWpr_agent/git_providers/plain_diff_provider.py43CODE
LOWpr_agent/git_providers/azuredevops_provider.py405CODE
LOWpr_agent/git_providers/github_provider.py103CODE
LOWpr_agent/git_providers/github_provider.py250CODE
LOWpr_agent/git_providers/github_provider.py455CODE
LOWpr_agent/git_providers/github_provider.py746CODE
LOWpr_agent/git_providers/github_provider.py1302CODE
LOWpr_agent/git_providers/gitea_provider.py127CODE
LOWpr_agent/git_providers/gitea_provider.py447CODE
LOWpr_agent/git_providers/local_git_provider.py65CODE
LOWpr_agent/git_providers/gitlab_provider.py398CODE
LOWpr_agent/git_providers/gitlab_provider.py559CODE
LOWpr_agent/git_providers/gitlab_provider.py661CODE
LOWpr_agent/git_providers/gitlab_provider.py716CODE
LOWpr_agent/git_providers/diff_parsing.py31CODE
65 more matches not shown…
Unused Imports71 hits · 64 pts
SeverityFileLineSnippetContext
LOW…agent/secret_providers/aws_secrets_manager_provider.py3CODE
LOWpr_agent/mosaico/server.py28CODE
LOWpr_agent/mosaico/server.py61CODE
LOWpr_agent/tools/pr_update_changelog.py15CODE
LOWpr_agent/tools/pr_code_suggestions.py26CODE
LOWpr_agent/tools/pr_code_suggestions.py26CODE
LOWpr_agent/tools/pr_code_suggestions.py26CODE
LOWpr_agent/tools/pr_description.py25CODE
LOWpr_agent/tools/pr_description.py30CODE
LOWpr_agent/tools/pr_description.py30CODE
LOWpr_agent/tools/pr_line_questions.py1CODE
LOWpr_agent/tools/pr_line_questions.py9CODE
LOWpr_agent/tools/pr_line_questions.py11CODE
LOWpr_agent/tools/pr_line_questions.py19CODE
LOWpr_agent/tools/pr_generate_labels.py2CODE
LOWpr_agent/tools/pr_generate_labels.py4CODE
LOWpr_agent/tools/pr_reviewer.py3CODE
LOWpr_agent/tools/pr_reviewer.py4CODE
LOWpr_agent/tools/pr_reviewer.py22CODE
LOWpr_agent/tools/pr_reviewer.py28CODE
LOWpr_agent/git_providers/azuredevops_provider.py1CODE
LOWpr_agent/git_providers/azuredevops_provider.py12CODE
LOWpr_agent/git_providers/gitlab_provider.py2CODE
LOWpr_agent/git_providers/gitlab_provider.py5CODE
LOWpr_agent/git_providers/gitlab_provider.py5CODE
LOWpr_agent/git_providers/gitlab_provider.py6CODE
LOWpr_agent/git_providers/gitlab_provider.py9CODE
LOWpr_agent/algo/cli_args.py1CODE
LOWpr_agent/algo/cli_args.py1CODE
LOWpr_agent/algo/cli_args.py2CODE
LOWpr_agent/algo/utils.py1CODE
LOWpr_agent/algo/utils.py3CODE
LOWpr_agent/algo/skills_loader.py38CODE
LOWpr_agent/algo/pr_processing.py1CODE
LOWpr_agent/algo/pr_processing.py8CODE
LOWpr_agent/algo/pr_processing.py14CODE
LOWpr_agent/algo/git_patch_processing.py1CODE
LOWpr_agent/algo/git_patch_processing.py6CODE
LOWpr_agent/algo/ai_handlers/langchain_ai_handler.py10CODE
LOWpr_agent/log/__init__.py3CODE
LOWpr_agent/servers/github_app.py20CODE
LOWpr_agent/servers/github_polling.py3CODE
LOWtests/unittest/test_clip_tokens.py3CODE
LOWtests/unittest/test_mosaico_provider.py81CODE
LOWtests/unittest/test_mosaico_router.py14CODE
LOWtests/unittest/test_codecommit_provider.py5CODE
LOWtests/unittest/test_extract_issue_from_branch.py1CODE
LOWtests/unittest/test_mosaico_a2a_roundtrip.py25CODE
LOWtests/unittest/test_fresh_vars_functionality.py22CODE
LOWtests/unittest/test_aws_secrets_manager_provider.py5CODE
LOWtests/unittest/test_gitlab_provider.py4CODE
LOWtests/unittest/test_gitlab_provider.py6CODE
LOWtests/unittest/test_handle_patch_deletions.py2CODE
LOWtests/unittest/test_handle_patch_deletions.py5CODE
LOWtests/unittest/test_litellm_reasoning_effort.py1CODE
LOWtests/health_test/main.py1CODE
LOWtests/health_test/main.py5CODE
LOWtests/health_test/main.py9CODE
LOWtests/health_test/main.py10CODE
LOWtests/health_test/main.py13CODE
11 more matches not shown…
Self-Referential Comments18 hits · 53 pts
SeverityFileLineSnippetContext
MEDIUMpr_agent/tools/pr_description.py62 # Initialize the variables dictionaryCOMMENT
MEDIUMpr_agent/tools/pr_generate_labels.py40 # Initialize the variables dictionaryCOMMENT
MEDIUMpr_agent/git_providers/gitlab_provider.py624 # Create a general note on the file in the MRCOMMENT
MEDIUMpr_agent/algo/token_handler.py25 _lock = Lock() # Create a lock objectCODE
MEDIUMpr_agent/agent/pr_agent.py89 # 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.py27 # Define a FakeGitProvider for both apply_repo_settings and PRAddDocsCOMMENT
MEDIUMtests/unittest/test_codecommit_client.py8 # Create a mock CodeCommitClient instance and codecommit_client memberCOMMENT
MEDIUMtests/unittest/test_codecommit_client.py83 # Create a mock CodeCommitClient instance and codecommit_client memberCOMMENT
MEDIUMtests/unittest/test_codecommit_client.py107 # Create a mock CodeCommitClient instance and codecommit_client memberCOMMENT
MEDIUMtests/unittest/test_extend_patch.py123 # Create a TokenHandler instance with dummy dataCOMMENT
MEDIUMtests/unittest/test_extend_patch.py130 # 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.py43 # Create a new branch from the base branchCOMMENT
MEDIUMtests/e2e_tests/test_bitbucket_app.py58 # Create a pull requestCOMMENT
MEDIUMtests/e2e_tests/test_gitlab_webhook.py36 # Create a new branch from the base branchCOMMENT
MEDIUMtests/e2e_tests/test_gitlab_webhook.py50 # Create a merge requestCOMMENT
Synthetic Comment Markers7 hits · 50 pts
SeverityFileLineSnippetContext
HIGHpr_agent/settings/pr_reviewer_prompts.toml11### AI-generated changes summary:COMMENT
HIGH…e_suggestions/pr_code_suggestions_reflect_prompts.toml49### AI-generated changes summary:COMMENT
HIGH…ings/code_suggestions/pr_code_suggestions_prompts.toml13### AI-generated changes summary:COMMENT
HIGH…estions/pr_code_suggestions_prompts_not_decoupled.toml14### AI-generated changes summary:COMMENT
HIGHpr_agent/tools/pr_description.py187 # Pass None when the title is not AI-generated so the providerCOMMENT
HIGHpr_agent/algo/pr_processing.py534 f"### AI-generated changes summary:\n{file.ai_file_summary['long_summarCODE
HIGHdocs/docs/core-abilities/metadata.md31### AI-generated file summary:COMMENT
Cross-File Repetition9 hits · 45 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_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
Docstring Block Structure6 hits · 30 pts
SeverityFileLineSnippetContext
HIGHpr_agent/tools/pr_generate_labels.py105 Prepare the AI prediction for the PR labels based on the provided model. Args: model (str)STRING
HIGHpr_agent/algo/utils.py640 Fix broken or incomplete JSON messages and return the parsed JSON data. Args: json_message (str): A stSTRING
HIGHpr_agent/algo/utils.py707 Update the settings of the Dynaconf object based on the arguments passed to the function. Args: args: STRING
HIGHpr_agent/algo/utils.py1017 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/pr_processing.py377 Retrieves the diff files from a Git provider, sorts them by main language, and generates patches for each file. STRING
HIGHpr_agent/algo/ai_handlers/litellm_helpers.py84 Process LITELLM.EXTRA_BODY configuration and update kwargs accordingly. Args: kwargs: The current kwarSTRING
Over-Commented Block30 hits · 28 pts
SeverityFileLineSnippetContext
LOWrequirements.txt41html2text==2024.2.26COMMENT
LOW.pre-commit-config.yaml21 # rev must match what's in dev-requirements.txtCOMMENT
LOW.pre-commit-config.yaml41 # hooks:COMMENT
LOWpr_agent/settings/custom_labels.toml1[config]COMMENT
LOWpr_agent/settings/configuration.toml361#api_key = ...COMMENT
LOWpr_agent/settings/.secrets_template.toml1# QUICKSTART:COMMENT
LOWpr_agent/git_providers/azuredevops_provider.py461 # for c in commits:COMMENT
LOWpr_agent/git_providers/gitlab_provider.py1021COMMENT
LOWpr_agent/git_providers/utils.py21# from a repo's .pr_agent.toml. For each section listed here, only the keys inCOMMENT
LOWpr_agent/git_providers/git_provider.py501 # most_common_extension == 'ts' and top_language == 'typescript' or \COMMENT
LOWpr_agent/algo/utils.py481 markdown_text += f"___\n\nRelevant files:\n\n"COMMENT
LOWpr_agent/algo/utils.py501 # markdown_text += f"<ul>\n"COMMENT
LOWpr_agent/servers/gunicorn_config.py1import multiprocessingCOMMENT
LOWpr_agent/servers/gunicorn_config.py21#COMMENT
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.py81keepalive = 2COMMENT
LOWpr_agent/servers/gunicorn_config.py101# raw_env - Pass environment variables to the execution environment.COMMENT
LOWpr_agent/servers/gunicorn_config.py121#COMMENT
LOWpr_agent/servers/gunicorn_config.py141COMMENT
LOWpr_agent/servers/gunicorn_config.py161#COMMENT
LOWpr_agent/servers/gunicorn_config.py181# as arguments.COMMENT
LOWtests/unittest/test_plain_diff_provider.py161def test_path_traversal_file_not_read(cfg, tmp_path, monkeypatch):COMMENT
LOWtests/unittest/test_fetching_sub_issues.py1# Currently doing API calls - wrong !COMMENT
LOWtests/unittest/test_fetching_sub_issues.py21# github_provider = GithubProvider()COMMENT
LOWtests/unittest/test_fetching_sub_issues.py41# # Verify ticket structureCOMMENT
LOWtests/unittest/test_fetching_sub_issues.py61#COMMENT
LOWtests/unittest/test_fetching_sub_issues.py81#COMMENT
LOWtests/unittest/test_fetching_sub_issues.py101# Test fetch_sub_issues() to ensure an empty set is returned for an issue with no sub-issues.COMMENT
LOWdocs/docs/installation/azure.md1## Azure DevOps PipelineCOMMENT
AI Slop Vocabulary6 hits · 15 pts
SeverityFileLineSnippetContext
MEDIUMpr_agent/settings/configuration.toml392enable_auto_best_practices = true # public - general flag to disable all auto best practices usageSTRING
MEDIUMpr_agent/settings/configuration.toml393utilize_auto_best_practices = true # public - disable usage of auto best practices in the 'improve' toolSTRING
MEDIUMpr_agent/settings/configuration.toml394extra_instructions = "" # public - extra instructions to the auto best practices generation promptSTRING
MEDIUMpr_agent/git_providers/github_provider.py885 # Be robust to providers built without full __init__ (e.g. __new__ in tests/helpers):COMMENT
LOWpr_agent/git_providers/git_provider.py273 # if the existing description wasn't generated by the pr-agent, just return it as-isCOMMENT
MEDIUMtests/unittest/test_pr_questions_helpers.py85 # rather than the exact full match, to remain robust to that quirk.COMMENT
Redundant / Tautological Comments10 hits · 14 pts
SeverityFileLineSnippetContext
LOWpr_agent/tools/pr_help_docs.py107 # Check if it's an underline (heading is above it)COMMENT
LOWpr_agent/tools/pr_help_docs.py409 # Check if file has one of the specified extensionsCOMMENT
LOWpr_agent/tools/pr_help_docs.py525 # Check if the updated list of documents does not exceed limits and trim if it does:COMMENT
LOWpr_agent/git_providers/github_provider.py997 if parsed_url.path.startswith('/api/v3'): #Check if came from github appCODE
LOWpr_agent/git_providers/github_provider.py1001 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.py93 # Check if the specific language instruction is already present to avoid duplicationCOMMENT
LOWpr_agent/servers/bitbucket_server_webhook.py111 # Check if ALL files are outside allowed foldersCOMMENT
LOWpr_agent/servers/bitbucket_server_webhook.py237 # Check if the parsed object is a list of stringsCOMMENT
LOWpr_agent/servers/github_action_runner.py89 # Check if required environment variables are setCOMMENT
LOWpr_agent/servers/bitbucket_app.py251 # Check if the PR should be processedCOMMENT
Fake / Example Data9 hits · 11 pts
SeverityFileLineSnippetContext
LOWpr_agent/algo/ai_handlers/litellm_ai_handler.py27DUMMY_LITELLM_API_KEY = "dummy_key" # placeholder set when no OpenAI key is configuredCODE
LOWtests/unittest/test_extra_config_url.py160 fake_token = "TEST-AUTH-TOKEN-NOT-REAL"CODE
LOWtests/unittest/test_extra_config_url.py161 _CapturingHandler.require_header = ("Private-Token", fake_token)CODE
LOWtests/unittest/test_extra_config_url.py162 monkeypatch.setenv("PR_AGENT_EXTRA_CONFIG_AUTH_HEADER", f"PRIVATE-TOKEN: {fake_token}")CODE
LOWtests/unittest/test_extra_config_url.py170 assert _CapturingHandler.captured_headers.get("Private-Token") == fake_tokenCODE
LOWtests/unittest/test_gitlab_provider.py31 "GITLAB.PERSONAL_ACCESS_TOKEN": "fake_token"CODE
LOWtests/unittest/test_litellm_api_key_guard.py127 # Set after init so __init__'s own dummy-key assignment doesn't overwrite itCOMMENT
LOWtests/unittest/test_git_provider_utils.py169 "settings": b"[github]\nuser_token = \"dummy-value\"\n[pr_reviewer]\nnum_max_findings =",CODE
LOWtests/unittest/test_git_provider_utils.py180 assert "dummy-value" not in provider.comments[1]CODE
Overly Generic Function Names9 hits · 8 pts
SeverityFileLineSnippetContext
LOWpr_agent/agent/pr_agent.py122 async def handle_request(self, pr_url, request, notify=None) -> bool:CODE
LOWpr_agent/servers/gitlab_webhook.py30async def handle_request(api_url: str, body: str, log_context: dict, sender_id: str, notify=None):CODE
LOWpr_agent/servers/bitbucket_server_webhook.py29def handle_request(CODE
LOWpr_agent/servers/github_app.py312async def handle_request(body: Dict[str, Any], event: str):CODE
LOWpr_agent/servers/gitea_app.py64async def handle_request(body: Dict[str, Any], event: str):CODE
LOWtests/unittest/test_extra_config_url.py289 async def handle_request(self, *_args, **_kwargs):CODE
LOWtests/unittest/test_github_action_runner_core.py185 async def handle_request(self, url, body, notify=None):CODE
LOWtests/unittest/test_github_action_runner_core.py235 async def handle_request(self, url, body, notify=None):CODE
LOWtests/unittest/test_cli_plain_diff_mode.py71 async def handle_request(self, target, request, notify=None):CODE
AI Structural Patterns5 hits · 4 pts
SeverityFileLineSnippetContext
LOWpr_agent/tools/pr_update_changelog.py138CODE
LOWpr_agent/tools/pr_code_suggestions.py391CODE
LOWpr_agent/git_providers/bitbucket_provider.py483CODE
LOWpr_agent/servers/help.py20CODE
LOWtests/unittest/test_pr_description_output_core.py48CODE
Modern AI Meta-Vocabulary1 hit · 3 pts
SeverityFileLineSnippetContext
MEDIUMdocs/docs/core-abilities/dynamic_context.md30## Challenges of expanding the context windowCOMMENT
TODO Padding1 hit · 2 pts
SeverityFileLineSnippetContext
LOWpr_agent/git_providers/codecommit_provider.py370 # TODO: implement support for multiple targets in one CodeCommit PRCOMMENT
Example Usage Blocks1 hit · 2 pts
SeverityFileLineSnippetContext
LOWpr_agent/git_providers/git_provider.py137 # Example usage:COMMENT
Modern Structural Boilerplate1 hit · 1 pts
SeverityFileLineSnippetContext
LOWpr_agent/algo/skills_loader.py287def _set_cached_context(value: str) -> None:CODE