🚀 PR Agent: The Original Open-Source PR Reviewer. This project It is not the Qodo free tier.
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).
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.
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.
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.
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.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | pr_agent/config_loader.py | 94 | def apply_secrets_manager_config(): | CODE |
| LOW | pr_agent/mosaico/env_bridge.py | 64 | def _register_langfuse_callback(settings) -> None: | CODE |
| LOW | pr_agent/mosaico/dispatch.py | 115 | def _ask_needs_context_fallback() -> str: | CODE |
| LOW | pr_agent/mosaico/dispatch.py | 205 | def _pr_fetch_failed_fallback(pr_url: str) -> str: | CODE |
| LOW | pr_agent/mosaico/observability.py | 18 | def parse_observability_metadata(raw) -> dict: | CODE |
| LOW | pr_agent/tools/pr_update_changelog.py | 140 | def _prepare_changelog_update(self) -> Tuple[str, str]: | CODE |
| LOW | pr_agent/tools/pr_code_suggestions.py | 247 | def publish_persistent_comment_with_history(git_provider: GitProvider, | CODE |
| LOW | pr_agent/tools/pr_code_suggestions.py | 429 | async def analyze_self_reflection_response(self, data, response_reflect): | CODE |
| LOW | pr_agent/tools/pr_code_suggestions.py | 495 | def _prepare_pr_code_suggestions(self, predictions: str) -> Dict: | CODE |
| LOW | pr_agent/tools/pr_code_suggestions.py | 546 | async def push_inline_code_suggestions(self, data): | CODE |
| LOW | pr_agent/tools/pr_code_suggestions.py | 628 | def validate_one_liner_suggestion_not_repeating_code(self, suggestion): | CODE |
| LOW | pr_agent/tools/pr_code_suggestions.py | 743 | async def convert_to_decoupled_with_line_numbers(self, patches_diff_list_no_line_numbers, model) -> List[str]: | CODE |
| LOW | pr_agent/tools/pr_code_suggestions.py | 779 | def generate_summarized_suggestions(self, data: Dict) -> str: | CODE |
| LOW | pr_agent/tools/pr_code_suggestions.py | 909 | async def self_reflect_on_suggestions(self, | CODE |
| LOW | pr_agent/tools/pr_description.py | 504 | def _prepare_pr_answer_with_markers(self) -> Tuple[str, str, str, List[dict]]: | STRING |
| LOW | pr_agent/tools/pr_description.py | 665 | def process_pr_files_prediction(self, pr_body, value): | STRING |
| LOW | pr_agent/tools/pr_similar_issue.py | 401 | def _update_index_with_issues(self, issues_list, repo_name_for_index, upsert=False): | CODE |
| LOW | pr_agent/tools/pr_similar_issue.py | 496 | def _update_table_with_issues(self, issues_list, repo_name_for_index, ingest=False): | CODE |
| LOW | pr_agent/tools/pr_similar_issue.py | 587 | def _update_qdrant_with_issues(self, issues_list, repo_name_for_index, ingest=False): | CODE |
| LOW | pr_agent/tools/pr_line_questions.py | 104 | def _load_conversation_history(self) -> str: | CODE |
| LOW⚡ | pr_agent/tools/pr_help_docs.py | 120 | def map_documentation_files_to_contents(base_path: str, doc_files: list[str], max_allowed_file_len=5000) -> dict[str, st | CODE |
| LOW⚡ | pr_agent/tools/pr_help_docs.py | 147 | def aggregate_documentation_files_for_prompt_contents(file_path_to_contents: dict[str, str], return_just_headings=False) | CODE |
| LOW⚡ | pr_agent/tools/pr_help_docs.py | 421 | def _gen_filenames_to_contents_map_from_repo(self) -> dict[str, str]: | CODE |
| LOW | pr_agent/tools/pr_help_docs.py | 48 | def extract_model_answer_and_relevant_sources(ai_response: str) -> str | None: | CODE |
| LOW | pr_agent/tools/pr_help_docs.py | 75 | def get_maximal_text_input_length_for_token_count_estimation(): | CODE |
| LOW | pr_agent/tools/pr_help_docs.py | 169 | def format_markdown_q_and_a_response(question_str: str, response_str: str, relevant_sections: list[dict[str, str]], | CODE |
| LOW | pr_agent/tools/pr_help_docs.py | 396 | def _find_all_document_files_matching_exts(self, abs_docs_path: str, ignore_readme=False, max_allowed_files=5000) -> | CODE |
| LOW | pr_agent/tools/pr_help_docs.py | 494 | async def _rank_docs_and_return_them_as_prompt(self, docs_filepath_to_contents: dict[str, str], max_allowed_txt_inpu | CODE |
| LOW | pr_agent/tools/pr_reviewer.py | 197 | def _should_publish_review_no_suggestions(self, pr_review: str) -> bool: | CODE |
| LOW⚡ | pr_agent/tools/pr_reviewer.py | 316 | def _get_previous_review_comment(self): | CODE |
| LOW⚡ | pr_agent/tools/pr_reviewer.py | 329 | def _remove_previous_review_comment(self, comment): | CODE |
| LOW⚡ | pr_agent/tools/pr_reviewer.py | 339 | def _can_run_incremental_review(self) -> bool: | CODE |
| LOW | pr_agent/tools/pr_help_message.py | 272 | async def prepare_relevant_snippets(self, sim_results): | CODE |
| LOW | pr_agent/tools/ticket_pr_compliance_check.py | 38 | def extract_ticket_links_from_pr_description(pr_description, repo_path, base_url_html='https://github.com'): | CODE |
| LOW | pr_agent/tools/ticket_pr_compliance_check.py | 77 | def extract_ticket_links_from_branch_name(branch_name, repo_path, base_url_html="https://github.com"): | CODE |
| LOW⚡ | pr_agent/tools/ticket_pr_compliance_check.py | 243 | async def extract_and_cache_pr_tickets(git_provider, vars): | CODE |
| LOW | pr_agent/tools/pr_questions.py | 82 | def identify_image_in_comment(self): | CODE |
| LOW | pr_agent/git_providers/codecommit_provider.py | 349 | def _is_valid_codecommit_hostname(hostname: str) -> bool: | CODE |
| LOW | pr_agent/git_providers/codecommit_provider.py | 475 | def _get_language_percentages(extensions): | CODE |
| LOW | pr_agent/git_providers/azuredevops_provider.py | 127 | def reply_to_comment_from_comment_id(self, comment_id: int, body: str, is_temporary: bool = False) -> Comment: | CODE |
| LOW | pr_agent/git_providers/azuredevops_provider.py | 624 | def publish_persistent_comment(self, pr_comment: str, | CODE |
| LOW⚡ | pr_agent/git_providers/github_provider.py | 532 | def get_review_thread_comments(self, comment_id: int) -> list[dict]: | CODE |
| LOW⚡ | pr_agent/git_providers/github_provider.py | 713 | def edit_comment_from_comment_id(self, comment_id: int, body: str): | CODE |
| LOW⚡ | pr_agent/git_providers/github_provider.py | 724 | def reply_to_comment_from_comment_id(self, comment_id: int, body: str): | CODE |
| LOW⚡ | pr_agent/git_providers/github_provider.py | 735 | def get_comment_body_from_comment_id(self, comment_id: int): | CODE |
| LOW⚡ | pr_agent/git_providers/github_provider.py | 881 | def _get_global_repo_settings(self): | CODE |
| LOW | pr_agent/git_providers/github_provider.py | 387 | def publish_persistent_comment(self, pr_comment: str, | CODE |
| LOW | pr_agent/git_providers/github_provider.py | 566 | def _publish_inline_comments_fallback_with_verification(self, comments: list[dict]): | CODE |
| LOW | pr_agent/git_providers/github_provider.py | 626 | def _try_fix_invalid_inline_comments(self, invalid_comments: list[dict]) -> list[dict]: | CODE |
| LOW | pr_agent/git_providers/github_provider.py | 898 | def _fetch_global_repo_settings(self, repo_owner): | CODE |
| LOW | pr_agent/git_providers/github_provider.py | 1143 | def generate_link_to_relevant_line_number(self, suggestion) -> str: | CODE |
| LOW | pr_agent/git_providers/github_provider.py | 1177 | def get_lines_link_original_file(self, filepath: str, component_range: Range) -> str: | CODE |
| LOW | pr_agent/git_providers/github_provider.py | 1302 | def validate_comments_inside_hunks(self, code_suggestions): | STRING |
| LOW | pr_agent/git_providers/github_provider.py | 1388 | def _prepare_clone_url_with_token(self, repo_url_to_clone: str) -> str | None: | STRING |
| LOW⚡ | pr_agent/git_providers/gitea_provider.py | 197 | def __set_repo_and_owner_from_pr(self): | CODE |
| LOW⚡ | pr_agent/git_providers/gitea_provider.py | 210 | def __set_repo_and_owner_from_issue(self): | CODE |
| LOW⚡ | pr_agent/git_providers/gitea_provider.py | 431 | def _get_file_content_from_base(self, filename: str) -> str: | CODE |
| LOW⚡ | pr_agent/git_providers/gitea_provider.py | 439 | def _get_file_content_from_latest_commit(self, filename: str) -> str: | CODE |
| LOW | pr_agent/git_providers/gitea_provider.py | 235 | def publish_persistent_comment(self, pr_comment: str, | CODE |
| LOW | pr_agent/git_providers/gitea_provider.py | 721 | def _prepare_clone_url_with_token(self, repo_url_to_clone: str) -> str | None: | CODE |
| 989 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | tests/unittest/test_extra_config_url.py | 93 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unittest/test_extra_config_url.py | 95 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unittest/test_extra_config_url.py | 237 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unittest/test_extra_config_url.py | 239 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/unittest/test_extra_config_url.py | 21 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/unittest/test_extra_config_url.py | 23 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/unittest/test_extra_config_url.py | 319 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/unittest/test_extra_config_url.py | 326 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unittest/test_extra_config_url.py | 689 | # --------------------------------------------------------------------------- | STRING |
| MEDIUM⚡ | tests/unittest/test_extra_config_url.py | 691 | # --------------------------------------------------------------------------- | STRING |
| MEDIUM⚡ | tests/unittest/test_diff_pipeline_core.py | 65 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unittest/test_diff_pipeline_core.py | 67 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unittest/test_diff_pipeline_core.py | 148 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unittest/test_diff_pipeline_core.py | 150 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unittest/test_diff_pipeline_core.py | 233 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unittest/test_diff_pipeline_core.py | 235 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unittest/test_diff_pipeline_core.py | 312 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unittest/test_diff_pipeline_core.py | 314 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/unittest/test_diff_pipeline_core.py | 22 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/unittest/test_diff_pipeline_core.py | 24 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/unittest/test_mosaico_provider.py | 157 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/unittest/test_mosaico_provider.py | 159 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unittest/test_pr_code_suggestions_rendering.py | 39 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unittest/test_pr_code_suggestions_rendering.py | 41 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unittest/test_pr_code_suggestions_rendering.py | 104 | # --------------------------------------------------------------------------- | STRING |
| MEDIUM⚡ | tests/unittest/test_pr_code_suggestions_rendering.py | 106 | # --------------------------------------------------------------------------- | STRING |
| MEDIUM⚡ | tests/unittest/test_pr_code_suggestions_rendering.py | 172 | # --------------------------------------------------------------------------- | STRING |
| MEDIUM⚡ | tests/unittest/test_pr_code_suggestions_rendering.py | 174 | # --------------------------------------------------------------------------- | STRING |
| MEDIUM⚡ | tests/unittest/test_pr_code_suggestions_rendering.py | 263 | # --------------------------------------------------------------------------- | STRING |
| MEDIUM⚡ | tests/unittest/test_pr_code_suggestions_rendering.py | 265 | # --------------------------------------------------------------------------- | STRING |
| MEDIUM⚡ | tests/unittest/test_pr_code_suggestions_rendering.py | 328 | # --------------------------------------------------------------------------- | STRING |
| MEDIUM⚡ | tests/unittest/test_pr_code_suggestions_rendering.py | 330 | # --------------------------------------------------------------------------- | STRING |
| MEDIUM⚡ | tests/unittest/test_mosaico_router.py | 85 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unittest/test_mosaico_router.py | 87 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unittest/test_mosaico_router.py | 107 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unittest/test_mosaico_router.py | 109 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unittest/test_mosaico_router.py | 172 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unittest/test_mosaico_router.py | 174 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unittest/test_mosaico_router.py | 242 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unittest/test_mosaico_router.py | 244 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unittest/test_mosaico_router.py | 301 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unittest/test_mosaico_router.py | 303 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unittest/test_mosaico_router.py | 342 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unittest/test_mosaico_router.py | 344 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unittest/test_mosaico_router.py | 570 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unittest/test_mosaico_router.py | 572 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/unittest/test_mosaico_router.py | 421 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/unittest/test_mosaico_router.py | 423 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/unittest/test_mosaico_router.py | 489 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/unittest/test_mosaico_router.py | 491 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unittest/test_pr_code_suggestions_filtering.py | 44 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unittest/test_pr_code_suggestions_filtering.py | 46 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unittest/test_pr_code_suggestions_filtering.py | 88 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unittest/test_pr_code_suggestions_filtering.py | 90 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unittest/test_pr_code_suggestions_filtering.py | 185 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unittest/test_pr_code_suggestions_filtering.py | 187 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unittest/test_pr_code_suggestions_filtering.py | 243 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unittest/test_pr_code_suggestions_filtering.py | 245 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unittest/test_pr_code_suggestions_filtering.py | 359 | # --------------------------------------------------------------------------- | STRING |
| MEDIUM⚡ | tests/unittest/test_pr_code_suggestions_filtering.py | 361 | # --------------------------------------------------------------------------- | STRING |
| 112 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | pr_agent/config_loader.py | 59 | except Exception: | CODE |
| LOW | pr_agent/config_loader.py | 114 | except Exception as e: | CODE |
| LOW | pr_agent/config_loader.py | 116 | except Exception as e: | CODE |
| LOW | pr_agent/custom_merge_loader.py | 92 | except Exception as e: | CODE |
| LOW | …agent/secret_providers/aws_secrets_manager_provider.py | 23 | except Exception as e: | CODE |
| LOW | …agent/secret_providers/aws_secrets_manager_provider.py | 34 | except Exception as e: | CODE |
| LOW | …agent/secret_providers/aws_secrets_manager_provider.py | 45 | except Exception as e: | CODE |
| LOW | …agent/secret_providers/aws_secrets_manager_provider.py | 55 | except Exception as e: | CODE |
| MEDIUM | …agent/secret_providers/aws_secrets_manager_provider.py | 11 | def __init__(self): | CODE |
| LOW⚡ | …cret_providers/google_cloud_storage_secret_provider.py | 16 | except Exception as e: | CODE |
| LOW⚡ | …cret_providers/google_cloud_storage_secret_provider.py | 24 | except Exception as e: | CODE |
| LOW⚡ | …cret_providers/google_cloud_storage_secret_provider.py | 32 | except Exception as e: | CODE |
| MEDIUM | …cret_providers/google_cloud_storage_secret_provider.py | 10 | def __init__(self): | CODE |
| LOW | pr_agent/secret_providers/__init__.py | 14 | except Exception as e: | CODE |
| LOW | pr_agent/secret_providers/__init__.py | 21 | except Exception as e: | CODE |
| LOW | pr_agent/mosaico/server.py | 74 | except Exception as e: | CODE |
| LOW | pr_agent/mosaico/dispatch.py | 135 | except Exception: | CODE |
| LOW | pr_agent/mosaico/dispatch.py | 154 | except Exception: | CODE |
| LOW | pr_agent/mosaico/dispatch.py | 200 | except Exception as e: | CODE |
| LOW | pr_agent/mosaico/dispatch.py | 245 | except Exception: | CODE |
| LOW | pr_agent/mosaico/dispatch.py | 310 | except Exception: | CODE |
| LOW | pr_agent/mosaico/observability.py | 77 | except Exception as e: | CODE |
| LOW | pr_agent/mosaico/executor.py | 72 | except Exception as e: | CODE |
| LOW | pr_agent/mosaico/executor.py | 117 | except Exception as e: | CODE |
| LOW | pr_agent/tools/pr_update_changelog.py | 181 | except Exception: | CODE |
| LOW | pr_agent/tools/pr_update_changelog.py | 212 | except Exception as e: | CODE |
| MEDIUM | pr_agent/tools/pr_update_changelog.py | 200 | def _get_changelog_file(self): | CODE |
| MEDIUM | pr_agent/tools/pr_code_suggestions.py | 97 | def run(self): | CODE |
| MEDIUM | pr_agent/tools/pr_code_suggestions.py | 628 | def validate_one_liner_suggestion_not_repeating_code(self, suggestion): | CODE |
| LOW | pr_agent/tools/pr_code_suggestions.py | 188 | except Exception as e: | CODE |
| LOW | pr_agent/tools/pr_code_suggestions.py | 198 | except Exception as e: | CODE |
| LOW | pr_agent/tools/pr_code_suggestions.py | 243 | except Exception as e: | CODE |
| LOW | pr_agent/tools/pr_code_suggestions.py | 350 | except Exception as e: | CODE |
| LOW | pr_agent/tools/pr_code_suggestions.py | 458 | except Exception as e: | CODE |
| LOW | pr_agent/tools/pr_code_suggestions.py | 462 | except Exception as e: # | CODE |
| LOW | pr_agent/tools/pr_code_suggestions.py | 480 | except Exception as e: | CODE |
| LOW | pr_agent/tools/pr_code_suggestions.py | 540 | except Exception as e: | CODE |
| LOW | pr_agent/tools/pr_code_suggestions.py | 579 | except Exception: | CODE |
| LOW | pr_agent/tools/pr_code_suggestions.py | 623 | except Exception as e: | CODE |
| LOW | pr_agent/tools/pr_code_suggestions.py | 650 | except Exception as e: | CODE |
| LOW | pr_agent/tools/pr_code_suggestions.py | 673 | except Exception as e: | CODE |
| LOW | pr_agent/tools/pr_code_suggestions.py | 734 | except Exception as e: | CODE |
| LOW | pr_agent/tools/pr_code_suggestions.py | 774 | except Exception as e: | CODE |
| LOW | pr_agent/tools/pr_code_suggestions.py | 895 | except Exception as e: | CODE |
| LOW | pr_agent/tools/pr_code_suggestions.py | 948 | except Exception as e: | CODE |
| MEDIUM | pr_agent/tools/pr_description.py | 99 | def run(self): | CODE |
| LOW | pr_agent/tools/pr_description.py | 204 | except Exception as e: | CODE |
| LOW | pr_agent/tools/pr_description.py | 740 | except Exception as e: | CODE |
| LOW | pr_agent/tools/pr_description.py | 398 | except Exception as e: | STRING |
| LOW | pr_agent/tools/pr_description.py | 428 | except Exception as e: | STRING |
| LOW | pr_agent/tools/pr_description.py | 500 | except Exception as e: | STRING |
| LOW | pr_agent/tools/pr_description.py | 544 | except Exception as e: | STRING |
| LOW | pr_agent/tools/pr_description.py | 660 | except Exception as e: | STRING |
| LOW | pr_agent/tools/pr_similar_issue.py | 47 | except Exception: | CODE |
| LOW | pr_agent/tools/pr_similar_issue.py | 184 | except Exception: | CODE |
| LOW | pr_agent/tools/pr_similar_issue.py | 192 | except Exception: | CODE |
| LOW | pr_agent/tools/pr_similar_issue.py | 269 | except Exception as e: | CODE |
| LOW | pr_agent/tools/pr_similar_issue.py | 361 | except Exception: | CODE |
| LOW | pr_agent/tools/pr_similar_issue.py | 593 | except Exception: | CODE |
| LOW | pr_agent/tools/pr_similar_issue.py | 660 | except Exception: | CODE |
| 368 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | pr_agent/config_loader.py | 94 | CODE | |
| LOW | pr_agent/config_loader.py | 125 | CODE | |
| LOW | pr_agent/cli.py | 89 | CODE | |
| LOW | pr_agent/custom_merge_loader.py | 12 | CODE | |
| LOW | pr_agent/mosaico/dispatch.py | 161 | CODE | |
| LOW | pr_agent/mosaico/diff_provider.py | 29 | CODE | |
| LOW | pr_agent/tools/pr_code_suggestions.py | 97 | CODE | |
| LOW | pr_agent/tools/pr_code_suggestions.py | 227 | CODE | |
| LOW | pr_agent/tools/pr_code_suggestions.py | 247 | CODE | |
| LOW | pr_agent/tools/pr_code_suggestions.py | 429 | CODE | |
| LOW | pr_agent/tools/pr_code_suggestions.py | 495 | CODE | |
| LOW | pr_agent/tools/pr_code_suggestions.py | 588 | CODE | |
| LOW | pr_agent/tools/pr_code_suggestions.py | 628 | CODE | |
| LOW | pr_agent/tools/pr_code_suggestions.py | 655 | CODE | |
| LOW | pr_agent/tools/pr_code_suggestions.py | 677 | CODE | |
| LOW | pr_agent/tools/pr_code_suggestions.py | 743 | CODE | |
| LOW | pr_agent/tools/pr_code_suggestions.py | 779 | CODE | |
| LOW | pr_agent/tools/pr_description.py | 99 | CODE | |
| LOW | pr_agent/tools/pr_description.py | 210 | CODE | |
| LOW | pr_agent/tools/pr_description.py | 331 | CODE | |
| LOW | pr_agent/tools/pr_description.py | 477 | CODE | |
| LOW | pr_agent/tools/pr_description.py | 555 | CODE | |
| LOW | pr_agent/tools/pr_description.py | 665 | CODE | |
| LOW | pr_agent/tools/pr_similar_issue.py | 19 | CODE | |
| LOW | pr_agent/tools/pr_similar_issue.py | 260 | CODE | |
| LOW | pr_agent/tools/pr_similar_issue.py | 401 | CODE | |
| LOW | pr_agent/tools/pr_similar_issue.py | 496 | CODE | |
| LOW | pr_agent/tools/pr_similar_issue.py | 587 | CODE | |
| LOW | pr_agent/tools/pr_add_docs.py | 169 | CODE | |
| LOW | pr_agent/tools/pr_add_docs.py | 136 | CODE | |
| LOW | pr_agent/tools/pr_generate_labels.py | 65 | CODE | |
| LOW | pr_agent/tools/pr_generate_labels.py | 159 | CODE | |
| LOW | pr_agent/tools/pr_help_docs.py | 81 | CODE | |
| LOW | pr_agent/tools/pr_help_docs.py | 120 | CODE | |
| LOW | pr_agent/tools/pr_help_docs.py | 147 | CODE | |
| LOW | pr_agent/tools/pr_help_docs.py | 169 | CODE | |
| LOW | pr_agent/tools/pr_help_docs.py | 396 | CODE | |
| LOW | pr_agent/tools/pr_help_docs.py | 421 | CODE | |
| LOW | pr_agent/tools/pr_reviewer.py | 292 | CODE | |
| LOW | pr_agent/tools/pr_reviewer.py | 383 | CODE | |
| LOW | pr_agent/tools/pr_help_message.py | 96 | CODE | |
| LOW | pr_agent/tools/ticket_pr_compliance_check.py | 38 | CODE | |
| LOW | pr_agent/tools/ticket_pr_compliance_check.py | 117 | CODE | |
| LOW | pr_agent/tools/ticket_pr_compliance_check.py | 243 | CODE | |
| LOW | pr_agent/git_providers/codecommit_provider.py | 428 | CODE | |
| LOW | pr_agent/git_providers/plain_diff_provider.py | 43 | CODE | |
| LOW | pr_agent/git_providers/azuredevops_provider.py | 405 | CODE | |
| LOW | pr_agent/git_providers/github_provider.py | 103 | CODE | |
| LOW | pr_agent/git_providers/github_provider.py | 250 | CODE | |
| LOW | pr_agent/git_providers/github_provider.py | 455 | CODE | |
| LOW | pr_agent/git_providers/github_provider.py | 746 | CODE | |
| LOW | pr_agent/git_providers/github_provider.py | 1302 | CODE | |
| LOW | pr_agent/git_providers/gitea_provider.py | 127 | CODE | |
| LOW | pr_agent/git_providers/gitea_provider.py | 447 | CODE | |
| LOW | pr_agent/git_providers/local_git_provider.py | 65 | CODE | |
| LOW | pr_agent/git_providers/gitlab_provider.py | 398 | CODE | |
| LOW | pr_agent/git_providers/gitlab_provider.py | 559 | CODE | |
| LOW | pr_agent/git_providers/gitlab_provider.py | 661 | CODE | |
| LOW | pr_agent/git_providers/gitlab_provider.py | 716 | CODE | |
| LOW | pr_agent/git_providers/diff_parsing.py | 31 | CODE | |
| 65 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …agent/secret_providers/aws_secrets_manager_provider.py | 3 | CODE | |
| LOW | pr_agent/mosaico/server.py | 28 | CODE | |
| LOW | pr_agent/mosaico/server.py | 61 | CODE | |
| LOW | pr_agent/tools/pr_update_changelog.py | 15 | CODE | |
| LOW | pr_agent/tools/pr_code_suggestions.py | 26 | CODE | |
| LOW | pr_agent/tools/pr_code_suggestions.py | 26 | CODE | |
| LOW | pr_agent/tools/pr_code_suggestions.py | 26 | CODE | |
| LOW | pr_agent/tools/pr_description.py | 25 | CODE | |
| LOW | pr_agent/tools/pr_description.py | 30 | CODE | |
| LOW | pr_agent/tools/pr_description.py | 30 | CODE | |
| LOW | pr_agent/tools/pr_line_questions.py | 1 | CODE | |
| LOW | pr_agent/tools/pr_line_questions.py | 9 | CODE | |
| LOW | pr_agent/tools/pr_line_questions.py | 11 | CODE | |
| LOW | pr_agent/tools/pr_line_questions.py | 19 | CODE | |
| LOW | pr_agent/tools/pr_generate_labels.py | 2 | CODE | |
| LOW | pr_agent/tools/pr_generate_labels.py | 4 | CODE | |
| LOW | pr_agent/tools/pr_reviewer.py | 3 | CODE | |
| LOW | pr_agent/tools/pr_reviewer.py | 4 | CODE | |
| LOW | pr_agent/tools/pr_reviewer.py | 22 | CODE | |
| LOW | pr_agent/tools/pr_reviewer.py | 28 | CODE | |
| LOW | pr_agent/git_providers/azuredevops_provider.py | 1 | CODE | |
| LOW | pr_agent/git_providers/azuredevops_provider.py | 12 | CODE | |
| LOW | pr_agent/git_providers/gitlab_provider.py | 2 | CODE | |
| LOW | pr_agent/git_providers/gitlab_provider.py | 5 | CODE | |
| LOW | pr_agent/git_providers/gitlab_provider.py | 5 | CODE | |
| LOW | pr_agent/git_providers/gitlab_provider.py | 6 | CODE | |
| LOW | pr_agent/git_providers/gitlab_provider.py | 9 | CODE | |
| LOW | pr_agent/algo/cli_args.py | 1 | CODE | |
| LOW | pr_agent/algo/cli_args.py | 1 | CODE | |
| LOW | pr_agent/algo/cli_args.py | 2 | CODE | |
| LOW | pr_agent/algo/utils.py | 1 | CODE | |
| LOW | pr_agent/algo/utils.py | 3 | CODE | |
| LOW | pr_agent/algo/skills_loader.py | 38 | CODE | |
| LOW | pr_agent/algo/pr_processing.py | 1 | CODE | |
| LOW | pr_agent/algo/pr_processing.py | 8 | CODE | |
| LOW | pr_agent/algo/pr_processing.py | 14 | CODE | |
| LOW | pr_agent/algo/git_patch_processing.py | 1 | CODE | |
| LOW | pr_agent/algo/git_patch_processing.py | 6 | CODE | |
| LOW | pr_agent/algo/ai_handlers/langchain_ai_handler.py | 10 | CODE | |
| LOW | pr_agent/log/__init__.py | 3 | CODE | |
| LOW | pr_agent/servers/github_app.py | 20 | CODE | |
| LOW | pr_agent/servers/github_polling.py | 3 | CODE | |
| LOW | tests/unittest/test_clip_tokens.py | 3 | CODE | |
| LOW | tests/unittest/test_mosaico_provider.py | 81 | CODE | |
| LOW | tests/unittest/test_mosaico_router.py | 14 | CODE | |
| LOW | tests/unittest/test_codecommit_provider.py | 5 | CODE | |
| LOW | tests/unittest/test_extract_issue_from_branch.py | 1 | CODE | |
| LOW | tests/unittest/test_mosaico_a2a_roundtrip.py | 25 | CODE | |
| LOW | tests/unittest/test_fresh_vars_functionality.py | 22 | CODE | |
| LOW | tests/unittest/test_aws_secrets_manager_provider.py | 5 | CODE | |
| LOW | tests/unittest/test_gitlab_provider.py | 4 | CODE | |
| LOW | tests/unittest/test_gitlab_provider.py | 6 | CODE | |
| LOW | tests/unittest/test_handle_patch_deletions.py | 2 | CODE | |
| LOW | tests/unittest/test_handle_patch_deletions.py | 5 | CODE | |
| LOW | tests/unittest/test_litellm_reasoning_effort.py | 1 | CODE | |
| LOW | tests/health_test/main.py | 1 | CODE | |
| LOW | tests/health_test/main.py | 5 | CODE | |
| LOW | tests/health_test/main.py | 9 | CODE | |
| LOW | tests/health_test/main.py | 10 | CODE | |
| LOW | tests/health_test/main.py | 13 | CODE | |
| 11 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | pr_agent/tools/pr_description.py | 62 | # Initialize the variables dictionary | COMMENT |
| MEDIUM | pr_agent/tools/pr_generate_labels.py | 40 | # Initialize the variables dictionary | COMMENT |
| MEDIUM | pr_agent/git_providers/gitlab_provider.py | 624 | # Create a general note on the file in the MR | COMMENT |
| MEDIUM | pr_agent/algo/token_handler.py | 25 | _lock = Lock() # Create a lock object | CODE |
| MEDIUM | pr_agent/agent/pr_agent.py | 89 | # Define the language-specific instruction and the separator | COMMENT |
| MEDIUM | pr_agent/servers/azuredevops_server_webhook.py | 1 | # This file contains the code for the Azure DevOps Server webhook server. | COMMENT |
| MEDIUM | tests/unittest/test_add_docs_trigger.py | 27 | # Define a FakeGitProvider for both apply_repo_settings and PRAddDocs | COMMENT |
| MEDIUM | tests/unittest/test_codecommit_client.py | 8 | # Create a mock CodeCommitClient instance and codecommit_client member | COMMENT |
| MEDIUM | tests/unittest/test_codecommit_client.py | 83 | # Create a mock CodeCommitClient instance and codecommit_client member | COMMENT |
| MEDIUM | tests/unittest/test_codecommit_client.py | 107 | # Create a mock CodeCommitClient instance and codecommit_client member | COMMENT |
| MEDIUM | tests/unittest/test_extend_patch.py | 123 | # Create a TokenHandler instance with dummy data | COMMENT |
| MEDIUM | tests/unittest/test_extend_patch.py | 130 | # Create a list of languages with files containing base_file and patch data | COMMENT |
| MEDIUM | tests/e2e_tests/test_github_app.py | 39 | # Create a new branch from the base branch | COMMENT |
| MEDIUM | tests/e2e_tests/test_github_app.py | 59 | # Create a pull request | COMMENT |
| MEDIUM | tests/e2e_tests/test_bitbucket_app.py | 43 | # Create a new branch from the base branch | COMMENT |
| MEDIUM | tests/e2e_tests/test_bitbucket_app.py | 58 | # Create a pull request | COMMENT |
| MEDIUM | tests/e2e_tests/test_gitlab_webhook.py | 36 | # Create a new branch from the base branch | COMMENT |
| MEDIUM | tests/e2e_tests/test_gitlab_webhook.py | 50 | # Create a merge request | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | pr_agent/settings/pr_reviewer_prompts.toml | 11 | ### AI-generated changes summary: | COMMENT |
| HIGH | …e_suggestions/pr_code_suggestions_reflect_prompts.toml | 49 | ### AI-generated changes summary: | COMMENT |
| HIGH | …ings/code_suggestions/pr_code_suggestions_prompts.toml | 13 | ### AI-generated changes summary: | COMMENT |
| HIGH | …estions/pr_code_suggestions_prompts_not_decoupled.toml | 14 | ### AI-generated changes summary: | COMMENT |
| HIGH | pr_agent/tools/pr_description.py | 187 | # Pass None when the title is not AI-generated so the provider | COMMENT |
| HIGH | pr_agent/algo/pr_processing.py | 534 | f"### AI-generated changes summary:\n{file.ai_file_summary['long_summar | CODE |
| HIGH | docs/docs/core-abilities/metadata.md | 31 | ### AI-generated file summary: | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | pr_agent/git_providers/codecommit_provider.py | 0 | retrieves the list of files that have been modified, added, deleted, or renamed in a pull request in gitlab, along with | STRING |
| HIGH | pr_agent/git_providers/github_provider.py | 0 | retrieves the list of files that have been modified, added, deleted, or renamed in a pull request in gitlab, along with | STRING |
| HIGH | pr_agent/git_providers/gitlab_provider.py | 0 | retrieves the list of files that have been modified, added, deleted, or renamed in a pull request in gitlab, along with | STRING |
| HIGH | tests/unittest/test_mosaico_smoke.py | 0 | \ review: estimated_effort_to_review_[1-5]: '2' score: '85' relevant_tests: 'no' key_issues_to_review: - relevant_file: | STRING |
| HIGH | tests/unittest/test_mosaico_provider.py | 0 | \ review: estimated_effort_to_review_[1-5]: '2' score: '85' relevant_tests: 'no' key_issues_to_review: - relevant_file: | STRING |
| HIGH | tests/unittest/test_mosaico_a2a_roundtrip.py | 0 | \ review: estimated_effort_to_review_[1-5]: '2' score: '85' relevant_tests: 'no' key_issues_to_review: - relevant_file: | STRING |
| HIGH | tests/unittest/test_plain_diff_provider.py | 0 | diff --git a/foo.py b/foo.py index 1111111..2222222 100644 --- a/foo.py +++ b/foo.py @@ -1,3 +1,3 @@ line1 -line2 +line2 | STRING |
| HIGH | tests/unittest/test_plain_diff_mode_e2e.py | 0 | diff --git a/foo.py b/foo.py index 1111111..2222222 100644 --- a/foo.py +++ b/foo.py @@ -1,3 +1,3 @@ line1 -line2 +line2 | STRING |
| HIGH | tests/unittest/test_diff_parsing.py | 0 | diff --git a/foo.py b/foo.py index 1111111..2222222 100644 --- a/foo.py +++ b/foo.py @@ -1,3 +1,3 @@ line1 -line2 +line2 | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | pr_agent/tools/pr_generate_labels.py | 105 | Prepare the AI prediction for the PR labels based on the provided model. Args: model (str) | STRING |
| HIGH | pr_agent/algo/utils.py | 640 | Fix broken or incomplete JSON messages and return the parsed JSON data. Args: json_message (str): A st | STRING |
| HIGH | pr_agent/algo/utils.py | 707 | Update the settings of the Dynaconf object based on the arguments passed to the function. Args: args: | STRING |
| HIGH | pr_agent/algo/utils.py | 1017 | Clip the number of tokens in a string to a maximum number of tokens. This function limits text to a specified | STRING |
| HIGH | pr_agent/algo/pr_processing.py | 377 | Retrieves the diff files from a Git provider, sorts them by main language, and generates patches for each file. | STRING |
| HIGH | pr_agent/algo/ai_handlers/litellm_helpers.py | 84 | Process LITELLM.EXTRA_BODY configuration and update kwargs accordingly. Args: kwargs: The current kwar | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | requirements.txt | 41 | html2text==2024.2.26 | COMMENT |
| LOW | .pre-commit-config.yaml | 21 | # rev must match what's in dev-requirements.txt | COMMENT |
| LOW | .pre-commit-config.yaml | 41 | # hooks: | COMMENT |
| LOW | pr_agent/settings/custom_labels.toml | 1 | [config] | COMMENT |
| LOW | pr_agent/settings/configuration.toml | 361 | #api_key = ... | COMMENT |
| LOW | pr_agent/settings/.secrets_template.toml | 1 | # QUICKSTART: | COMMENT |
| LOW | pr_agent/git_providers/azuredevops_provider.py | 461 | # for c in commits: | COMMENT |
| LOW | pr_agent/git_providers/gitlab_provider.py | 1021 | COMMENT | |
| LOW | pr_agent/git_providers/utils.py | 21 | # from a repo's .pr_agent.toml. For each section listed here, only the keys in | COMMENT |
| LOW | pr_agent/git_providers/git_provider.py | 501 | # most_common_extension == 'ts' and top_language == 'typescript' or \ | COMMENT |
| LOW | pr_agent/algo/utils.py | 481 | markdown_text += f"___\n\nRelevant files:\n\n" | COMMENT |
| LOW | pr_agent/algo/utils.py | 501 | # markdown_text += f"<ul>\n" | COMMENT |
| LOW | pr_agent/servers/gunicorn_config.py | 1 | import multiprocessing | COMMENT |
| LOW | pr_agent/servers/gunicorn_config.py | 21 | # | COMMENT |
| LOW | pr_agent/servers/gunicorn_config.py | 41 | # sync class should handle most 'normal' types of work | COMMENT |
| LOW | pr_agent/servers/gunicorn_config.py | 61 | # | COMMENT |
| LOW | pr_agent/servers/gunicorn_config.py | 81 | keepalive = 2 | COMMENT |
| LOW | pr_agent/servers/gunicorn_config.py | 101 | # raw_env - Pass environment variables to the execution environment. | COMMENT |
| LOW | pr_agent/servers/gunicorn_config.py | 121 | # | COMMENT |
| LOW | pr_agent/servers/gunicorn_config.py | 141 | COMMENT | |
| LOW | pr_agent/servers/gunicorn_config.py | 161 | # | COMMENT |
| LOW | pr_agent/servers/gunicorn_config.py | 181 | # as arguments. | COMMENT |
| LOW | tests/unittest/test_plain_diff_provider.py | 161 | def test_path_traversal_file_not_read(cfg, tmp_path, monkeypatch): | COMMENT |
| LOW | tests/unittest/test_fetching_sub_issues.py | 1 | # Currently doing API calls - wrong ! | COMMENT |
| LOW | tests/unittest/test_fetching_sub_issues.py | 21 | # github_provider = GithubProvider() | COMMENT |
| LOW | tests/unittest/test_fetching_sub_issues.py | 41 | # # Verify ticket structure | COMMENT |
| LOW | tests/unittest/test_fetching_sub_issues.py | 61 | # | COMMENT |
| LOW | tests/unittest/test_fetching_sub_issues.py | 81 | # | COMMENT |
| LOW | tests/unittest/test_fetching_sub_issues.py | 101 | # Test fetch_sub_issues() to ensure an empty set is returned for an issue with no sub-issues. | COMMENT |
| LOW | docs/docs/installation/azure.md | 1 | ## Azure DevOps Pipeline | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | pr_agent/settings/configuration.toml | 392 | enable_auto_best_practices = true # public - general flag to disable all auto best practices usage | STRING |
| MEDIUM⚡ | pr_agent/settings/configuration.toml | 393 | utilize_auto_best_practices = true # public - disable usage of auto best practices in the 'improve' tool | STRING |
| MEDIUM⚡ | pr_agent/settings/configuration.toml | 394 | extra_instructions = "" # public - extra instructions to the auto best practices generation prompt | STRING |
| MEDIUM⚡ | pr_agent/git_providers/github_provider.py | 885 | # Be robust to providers built without full __init__ (e.g. __new__ in tests/helpers): | COMMENT |
| LOW | pr_agent/git_providers/git_provider.py | 273 | # if the existing description wasn't generated by the pr-agent, just return it as-is | COMMENT |
| MEDIUM⚡ | tests/unittest/test_pr_questions_helpers.py | 85 | # rather than the exact full match, to remain robust to that quirk. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | pr_agent/tools/pr_help_docs.py | 107 | # Check if it's an underline (heading is above it) | COMMENT |
| LOW⚡ | pr_agent/tools/pr_help_docs.py | 409 | # Check if file has one of the specified extensions | COMMENT |
| LOW | pr_agent/tools/pr_help_docs.py | 525 | # Check if the updated list of documents does not exceed limits and trim if it does: | COMMENT |
| LOW | pr_agent/git_providers/github_provider.py | 997 | if parsed_url.path.startswith('/api/v3'): #Check if came from github app | CODE |
| LOW | pr_agent/git_providers/github_provider.py | 1001 | if 'api.github.com' in parsed_url.netloc or '/api/v3' in issue_url: #Check if came from github app | CODE |
| LOW | pr_agent/agent/pr_agent.py | 93 | # Check if the specific language instruction is already present to avoid duplication | COMMENT |
| LOW | pr_agent/servers/bitbucket_server_webhook.py | 111 | # Check if ALL files are outside allowed folders | COMMENT |
| LOW | pr_agent/servers/bitbucket_server_webhook.py | 237 | # Check if the parsed object is a list of strings | COMMENT |
| LOW | pr_agent/servers/github_action_runner.py | 89 | # Check if required environment variables are set | COMMENT |
| LOW | pr_agent/servers/bitbucket_app.py | 251 | # Check if the PR should be processed | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | pr_agent/algo/ai_handlers/litellm_ai_handler.py | 27 | DUMMY_LITELLM_API_KEY = "dummy_key" # placeholder set when no OpenAI key is configured | CODE |
| LOW⚡ | tests/unittest/test_extra_config_url.py | 160 | fake_token = "TEST-AUTH-TOKEN-NOT-REAL" | CODE |
| LOW⚡ | tests/unittest/test_extra_config_url.py | 161 | _CapturingHandler.require_header = ("Private-Token", fake_token) | CODE |
| LOW⚡ | tests/unittest/test_extra_config_url.py | 162 | monkeypatch.setenv("PR_AGENT_EXTRA_CONFIG_AUTH_HEADER", f"PRIVATE-TOKEN: {fake_token}") | CODE |
| LOW⚡ | tests/unittest/test_extra_config_url.py | 170 | assert _CapturingHandler.captured_headers.get("Private-Token") == fake_token | CODE |
| LOW | tests/unittest/test_gitlab_provider.py | 31 | "GITLAB.PERSONAL_ACCESS_TOKEN": "fake_token" | CODE |
| LOW | tests/unittest/test_litellm_api_key_guard.py | 127 | # Set after init so __init__'s own dummy-key assignment doesn't overwrite it | COMMENT |
| LOW⚡ | tests/unittest/test_git_provider_utils.py | 169 | "settings": b"[github]\nuser_token = \"dummy-value\"\n[pr_reviewer]\nnum_max_findings =", | CODE |
| LOW | tests/unittest/test_git_provider_utils.py | 180 | assert "dummy-value" not in provider.comments[1] | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | pr_agent/agent/pr_agent.py | 122 | async def handle_request(self, pr_url, request, notify=None) -> bool: | CODE |
| LOW | pr_agent/servers/gitlab_webhook.py | 30 | async def handle_request(api_url: str, body: str, log_context: dict, sender_id: str, notify=None): | CODE |
| LOW | pr_agent/servers/bitbucket_server_webhook.py | 29 | def handle_request( | CODE |
| LOW | pr_agent/servers/github_app.py | 312 | async def handle_request(body: Dict[str, Any], event: str): | CODE |
| LOW | pr_agent/servers/gitea_app.py | 64 | async def handle_request(body: Dict[str, Any], event: str): | CODE |
| LOW | tests/unittest/test_extra_config_url.py | 289 | async def handle_request(self, *_args, **_kwargs): | CODE |
| LOW | tests/unittest/test_github_action_runner_core.py | 185 | async def handle_request(self, url, body, notify=None): | CODE |
| LOW | tests/unittest/test_github_action_runner_core.py | 235 | async def handle_request(self, url, body, notify=None): | CODE |
| LOW | tests/unittest/test_cli_plain_diff_mode.py | 71 | async def handle_request(self, target, request, notify=None): | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | pr_agent/tools/pr_update_changelog.py | 138 | CODE | |
| LOW | pr_agent/tools/pr_code_suggestions.py | 391 | CODE | |
| LOW | pr_agent/git_providers/bitbucket_provider.py | 483 | CODE | |
| LOW | pr_agent/servers/help.py | 20 | CODE | |
| LOW | tests/unittest/test_pr_description_output_core.py | 48 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | docs/docs/core-abilities/dynamic_context.md | 30 | ## Challenges of expanding the context window | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | pr_agent/git_providers/codecommit_provider.py | 370 | # TODO: implement support for multiple targets in one CodeCommit PR | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | pr_agent/git_providers/git_provider.py | 137 | # Example usage: | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | pr_agent/algo/skills_loader.py | 287 | def _set_cached_context(value: str) -> None: | CODE |