[{"data":1,"prerenderedAt":488},["ShallowReactive",2],{"navigation_docs":3,"-reporters-codeclimate":146,"-reporters-codeclimate-surround":483},[4,50,67,103,125,141],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":6},"Getting Started",false,"\u002Fgetting-started","1.getting-started",[10,15,20,25,30,35,40,45],{"title":11,"path":12,"stem":13,"icon":14},"Introduction","\u002Fgetting-started\u002Fintroduction","1.getting-started\u002F2.introduction","i-lucide-house",{"title":16,"path":17,"stem":18,"icon":19},"Installation","\u002Fgetting-started\u002Finstallation","1.getting-started\u002F3.installation","i-lucide-download",{"title":21,"path":22,"stem":23,"icon":24},"Configuration","\u002Fgetting-started\u002Fconfiguration","1.getting-started\u002F4.configuration","i-lucide-settings",{"title":26,"path":27,"stem":28,"icon":29},"Supported Formats","\u002Fgetting-started\u002Fsupported-formats","1.getting-started\u002F5.supported-formats","i-lucide-file-code",{"title":31,"path":32,"stem":33,"icon":34},"Agent Skill","\u002Fgetting-started\u002Fagent-skill","1.getting-started\u002F6.agent-skill","i-lucide-cpu",{"title":36,"path":37,"stem":38,"icon":39},"Changelog","\u002Fgetting-started\u002Fchangelog","1.getting-started\u002F7.changelog","i-lucide-scroll-text",{"title":41,"path":42,"stem":43,"icon":44},"Migrating from v4 to v5","\u002Fgetting-started\u002Fmigration","1.getting-started\u002F8.migration","i-lucide-arrow-right-left",{"title":46,"path":47,"stem":48,"icon":49},"jscpd v4 (TypeScript)","\u002Fgetting-started\u002Fv4","1.getting-started\u002F9.v4","i-simple-icons-typescript",{"title":51,"path":52,"stem":53,"children":54,"icon":6},"CI & Hooks","\u002Fci-and-hooks","2.ci-and-hooks\u002F1.index",[55,57,62],{"title":51,"path":52,"stem":53,"icon":56},"i-lucide-git-pull-request",{"title":58,"path":59,"stem":60,"icon":61},"Use jscpd in CI","\u002Fci-and-hooks\u002Fci","2.ci-and-hooks\u002F2.ci","i-lucide-github",{"title":63,"path":64,"stem":65,"icon":66},"Use jscpd in Pre-Commit Hook","\u002Fci-and-hooks\u002Fpre-commit","2.ci-and-hooks\u002F3.pre-commit","i-lucide-git-commit",{"title":68,"path":69,"stem":70,"children":71,"icon":73},"Reporters","\u002Freporters","3.reporters\u002F1.index",[72,74,78,83,88,93,98],{"title":68,"path":69,"stem":70,"icon":73},"i-lucide-file-chart-column",{"title":75,"path":76,"stem":77,"icon":29},"HTML Reporter","\u002Freporters\u002Fhtml","3.reporters\u002F2.html",{"title":79,"path":80,"stem":81,"icon":82},"JSON Reporter","\u002Freporters\u002Fjson","3.reporters\u002F3.json","i-lucide-braces",{"title":84,"path":85,"stem":86,"icon":87},"Badge Reporter","\u002Freporters\u002Fbadge","3.reporters\u002F4.badge","i-lucide-award",{"title":89,"path":90,"stem":91,"icon":92},"SARIF Reporter","\u002Freporters\u002Fsarif","3.reporters\u002F5.sarif","i-lucide-shield-check",{"title":94,"path":95,"stem":96,"icon":97},"CodeClimate \u002F GitLab Reporter","\u002Freporters\u002Fcodeclimate","3.reporters\u002F6.codeclimate","i-lucide-flag-triangle-right",{"title":99,"path":100,"stem":101,"icon":102},"OpenMetrics Reporter","\u002Freporters\u002Fopenmetrics","3.reporters\u002F7.openmetrics","i-lucide-activity",{"title":104,"path":105,"stem":106,"children":107,"icon":6},"Benchmarks","\u002Fbenchmarks","4.benchmarks\u002F1.index",[108,110,115,120],{"title":104,"path":105,"stem":106,"icon":109},"i-lucide-gauge",{"title":111,"path":112,"stem":113,"icon":114},"Detection Speed","\u002Fbenchmarks\u002Fdetection-speed","4.benchmarks\u002F2.detection-speed","i-lucide-zap",{"title":116,"path":117,"stem":118,"icon":119},"Multi-Format Detection","\u002Fbenchmarks\u002Fcross-format","4.benchmarks\u002F3.cross-format","i-lucide-layers",{"title":121,"path":122,"stem":123,"icon":124},"AI Token Efficiency","\u002Fbenchmarks\u002Fai-token-efficiency","4.benchmarks\u002F4.ai-token-efficiency","i-lucide-sparkles",{"title":126,"path":127,"stem":128,"children":129,"icon":131},"API","\u002Fapi","5.api\u002F1.index",[130,132,137],{"title":126,"path":127,"stem":128,"icon":131},"i-lucide-code",{"title":133,"path":134,"stem":135,"icon":136},"Rust Crates (v5)","\u002Fapi\u002Fcore","5.api\u002F2.core","i-lucide-box",{"title":138,"path":139,"stem":140,"icon":136},"MCP Server","\u002Fapi\u002Fmcp-server","5.api\u002F4.mcp-server",{"title":142,"path":143,"stem":144,"icon":145},"Trending","\u002Ftrending","6.trending","i-lucide-trending-up",{"id":147,"title":94,"body":148,"description":474,"extension":475,"links":476,"meta":477,"navigation":478,"path":95,"seo":479,"stem":96,"__hash__":482},"docs\u002F3.reporters\u002F6.codeclimate.md",{"type":149,"value":150,"toc":467},"minimark",[151,156,185,193,197,244,250,254,352,359,363,396,399,463],[152,153,155],"h2",{"id":154},"overview","Overview",[157,158,159,160,164,165,168,169,172,173,180,181,184],"p",{},"The ",[161,162,163],"code",{},"codeclimate"," reporter (alias: ",[161,166,167],{},"gitlab",") writes ",[161,170,171],{},"gl-code-quality-report.json"," in the ",[174,175,179],"a",{"href":176,"rel":177},"https:\u002F\u002Fdocs.gitlab.com\u002Fci\u002Ftesting\u002Fcode_quality\u002F#code-quality-report-format",[178],"nofollow","CodeClimate issue format",", restricted to the subset GitLab defines for its Code Quality reports. Declare it as an ",[161,182,183],{},"artifacts:reports:codequality"," artifact and duplicated code appears as code quality issues directly in merge requests — unlike SARIF, which GitLab ingests as security vulnerability findings.",[157,186,187,188,192],{},"Available since ",[189,190,191],"strong",{},"v5.1.0",".",[152,194,196],{"id":195},"usage","Usage",[198,199,204],"pre",{"className":200,"code":201,"language":202,"meta":203,"style":203},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","jscpd --reporters codeclimate .\u002Fsrc\n# or the alias:\njscpd --reporters gitlab .\u002Fsrc\n","bash","",[161,205,206,225,232],{"__ignoreMap":203},[207,208,211,215,219,222],"span",{"class":209,"line":210},"line",1,[207,212,214],{"class":213},"sBMFI","jscpd",[207,216,218],{"class":217},"sfazB"," --reporters",[207,220,221],{"class":217}," codeclimate",[207,223,224],{"class":217}," .\u002Fsrc\n",[207,226,228],{"class":209,"line":227},2,[207,229,231],{"class":230},"sHwdD","# or the alias:\n",[207,233,235,237,239,242],{"class":209,"line":234},3,[207,236,214],{"class":213},[207,238,218],{"class":217},[207,240,241],{"class":217}," gitlab",[207,243,224],{"class":217},[157,245,246,247],{},"Output file: ",[161,248,249],{},".\u002Freport\u002Fgl-code-quality-report.json",[152,251,253],{"id":252},"gitlab-ci-integration","GitLab CI Integration",[198,255,260],{"className":256,"code":257,"filename":258,"language":259,"meta":203,"style":203},"language-yaml shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","jscpd:\n  stage: test\n  image: node:22\n  before_script:\n    - npm install -g jscpd@5\n  script:\n    - jscpd --reporters console,codeclimate --output report .\n  artifacts:\n    reports:\n      codequality: report\u002Fgl-code-quality-report.json\n",".gitlab-ci.yml","yaml",[161,261,262,271,282,292,300,309,317,325,333,341],{"__ignoreMap":203},[207,263,264,267],{"class":209,"line":210},[207,265,214],{"class":266},"swJcz",[207,268,270],{"class":269},"sMK4o",":\n",[207,272,273,276,279],{"class":209,"line":227},[207,274,275],{"class":266},"  stage",[207,277,278],{"class":269},":",[207,280,281],{"class":217}," test\n",[207,283,284,287,289],{"class":209,"line":234},[207,285,286],{"class":266},"  image",[207,288,278],{"class":269},[207,290,291],{"class":217}," node:22\n",[207,293,295,298],{"class":209,"line":294},4,[207,296,297],{"class":266},"  before_script",[207,299,270],{"class":269},[207,301,303,306],{"class":209,"line":302},5,[207,304,305],{"class":269},"    -",[207,307,308],{"class":217}," npm install -g jscpd@5\n",[207,310,312,315],{"class":209,"line":311},6,[207,313,314],{"class":266},"  script",[207,316,270],{"class":269},[207,318,320,322],{"class":209,"line":319},7,[207,321,305],{"class":269},[207,323,324],{"class":217}," jscpd --reporters console,codeclimate --output report .\n",[207,326,328,331],{"class":209,"line":327},8,[207,329,330],{"class":266},"  artifacts",[207,332,270],{"class":269},[207,334,336,339],{"class":209,"line":335},9,[207,337,338],{"class":266},"    reports",[207,340,270],{"class":269},[207,342,344,347,349],{"class":209,"line":343},10,[207,345,346],{"class":266},"      codequality",[207,348,278],{"class":269},[207,350,351],{"class":217}," report\u002Fgl-code-quality-report.json\n",[157,353,354,355,358],{},"Merge requests then show a ",[189,356,357],{},"Code Quality"," widget listing new and resolved duplication issues compared to the target branch.",[152,360,362],{"id":361},"how-it-works","How It Works",[364,365,366,374,377],"ul",{},[367,368,369,370,373],"li",{},"Each clone yields one issue per fragment; every issue describes the counterpart location in its message and in the CodeClimate ",[161,371,372],{},"other_locations"," field.",[367,375,376],{},"Issues carry a deterministic fingerprint derived from the clone's content hash, so GitLab can tell pre-existing issues from new ones across pipeline runs.",[367,378,379,380,383,384,387,388,392,393,192],{},"Severity is ",[161,381,382],{},"minor",", escalating to ",[161,385,386],{},"major"," for clones absent from a configured ",[174,389,391],{"href":390},"\u002Fci-and-hooks\u002Fci#gate-on-new-duplication-baseline","baseline"," or when the run exceeds ",[161,394,395],{},"--threshold",[152,397,21],{"id":398},"configuration",[198,400,405],{"className":401,"code":402,"filename":403,"language":404,"meta":203,"style":203},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"reporters\": [\"codeclimate\"],\n  \"output\": \".\u002Freport\"\n}\n",".jscpd.json","json",[161,406,407,412,438,458],{"__ignoreMap":203},[207,408,409],{"class":209,"line":210},[207,410,411],{"class":269},"{\n",[207,413,414,417,421,424,426,429,431,433,435],{"class":209,"line":227},[207,415,416],{"class":269},"  \"",[207,418,420],{"class":419},"spNyl","reporters",[207,422,423],{"class":269},"\"",[207,425,278],{"class":269},[207,427,428],{"class":269}," [",[207,430,423],{"class":269},[207,432,163],{"class":217},[207,434,423],{"class":269},[207,436,437],{"class":269},"],\n",[207,439,440,442,445,447,449,452,455],{"class":209,"line":234},[207,441,416],{"class":269},[207,443,444],{"class":419},"output",[207,446,423],{"class":269},[207,448,278],{"class":269},[207,450,451],{"class":269}," \"",[207,453,454],{"class":217},".\u002Freport",[207,456,457],{"class":269},"\"\n",[207,459,460],{"class":209,"line":294},[207,461,462],{"class":269},"}\n",[464,465,466],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}",{"title":203,"searchDepth":227,"depth":227,"links":468},[469,470,471,472,473],{"id":154,"depth":227,"text":155},{"id":195,"depth":227,"text":196},{"id":252,"depth":227,"text":253},{"id":361,"depth":227,"text":362},{"id":398,"depth":227,"text":21},"Generate GitLab Code Quality reports in the CodeClimate issue format.","md",null,{},{"icon":97},{"title":480,"description":481},"CodeClimate \u002F GitLab Code Quality Reporter","Surface jscpd duplication findings as code quality issues in GitLab merge requests via the CodeClimate report format.","OrZriXUgc5GQ2fGahMfepcQOLbpRl63cjIhNKjRfa18",[484,486],{"title":89,"path":90,"stem":91,"description":485,"icon":92,"children":-1},"Generate SARIF reports for GitHub Code Scanning integration.",{"title":99,"path":100,"stem":101,"description":487,"icon":102,"children":-1},"Generate OpenMetrics reports for GitLab CI metrics integration.",1788342645812]