The-PR-Agent/pr-agent

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

Python★ 14,874+280 that day#5 on trending

Analyzed November 5, 2026 at a8c6047 (main) with jscpd v5 in 2.0s.

C56.7/100
Project health213,397 lines of code (L)
Duplication70
4.4% in python, javascript, jsx, bash, docker
Dead code68
4.2%
Complexity38
69.5%

The score is jscpd's own --health model: markup, data and text left out, tests kept. The numbers below are the trending scan's.

1.47%duplicated code · 809 of 54,889 lines
65clones in code
116code files of 668 scanned
4.56%duplicated over all files · 875 clones

The code number leaves out tests, fixtures, docs, examples, data files, styles, translations and vendored code, and 1 generated file: pr_agent/tools/pr_help_docs.py.

Largest clones in the code

  • 48 lines in 2 placespython246 tokens
    616counter = 0
    617issues_iterator = iter(issues_list)
    618while True:
    619    if counter >= self.max_issues_to_scan:
    620        get_logger().info(f"Scanned {self.max_issues_to_scan} issues, stopping")
    621        break
    622    try:
    623        issue = next(issues_iterator)
    624    except StopIteration:
    625        break
    

    First 10 of 48 lines.

  • 47 lines in 2 placespython241 tokens
    608get_logger().info('Processing issues...')
    609corpus = Corpus()
    610example_issue_record = Record(
    611    id=f"example_issue_{repo_name_for_index}",
    612    text="example_issue",
    613    metadata=Metadata(repo=repo_name_for_index)
    614)
    615
    616counter = 0
    617issues_iterator = iter(issues_list)
    

    First 10 of 47 lines.

  • 23 lines in 2 placespython190 tokens
    335def _prepare_code_suggestion(self, suggestion: dict) -> dict | None:
    336    body = suggestion["body"]
    337    original_suggestion = suggestion.get('original_suggestion', None)  # needed for diff code
    338    if original_suggestion:
    339        try:
    340            existing_code = original_suggestion['existing_code'].rstrip() + "\n"
    341            improved_code = original_suggestion['improved_code'].rstrip() + "\n"
    342            diff = difflib.unified_diff(existing_code.split('\n'), improved_code.split('\n'), n=999)
    343            patch_orig = "\n".join(diff)
    344            patch = "\n".join(patch_orig.splitlines()[5:]).strip('\n')
    

    First 10 of 23 lines.

7 more
Largest clones over all files, tests and data included
By format, code only
FormatFilesLinesClonesDuplicated linesDuplication
python11554,739658091.48%
bash1150000%
By format, all files
FormatFilesLinesClonesDuplicated linesDuplication
python533212,5298129,3664.41%
toml274,3904291820.91%
markdown489,104121071.18%
yaml241,7616895.05%
bash112362114.66%
json415013120.67%
css51,428000%
javascript3336000%
jsx3306000%
text6133000%

Trending appearances

DayRankStarsFilesLinesClonesAll filesCodeHealthCommit
Nov 5, 2026#514,874 (+280)668230,5138754.56%1.47%C 56.7a8c6047

Want this for your own project? Install jscpd and run jscpd ., or measure it the way the baselines were measured.