[{"data":1,"prerenderedAt":530},["ShallowReactive",2],{"navigation_docs":3,"-reporters-codeclimate":188,"-reporters-codeclimate-surround":525},[4,50,82,99,135,157,173,178,183],{"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},"Guides","\u002Fguides","2.guides\u002F1.index",[55,57,62,67,72,77],{"title":51,"path":52,"stem":53,"icon":56},"i-lucide-book-open",{"title":58,"path":59,"stem":60,"icon":61},"Types of Code Clones","\u002Fguides\u002Fclone-types","2.guides\u002F2.clone-types","i-lucide-copy",{"title":63,"path":64,"stem":65,"icon":66},"How Detection Works","\u002Fguides\u002Fhow-detection-works","2.guides\u002F3.how-detection-works","i-lucide-scan-search",{"title":68,"path":69,"stem":70,"icon":71},"Duplication Trend over Git History","\u002Fguides\u002Fhistory","2.guides\u002F4.history","i-lucide-chart-no-axes-combined",{"title":73,"path":74,"stem":75,"icon":76},"Project Dashboard","\u002Fguides\u002Fdashboard","2.guides\u002F5.dashboard","i-lucide-layout-dashboard",{"title":78,"path":79,"stem":80,"icon":81},"Project Health Score","\u002Fguides\u002Fhealth","2.guides\u002F6.health","i-lucide-heart-pulse",{"title":83,"path":84,"stem":85,"children":86,"icon":6},"CI & Hooks","\u002Fci-and-hooks","3.ci-and-hooks\u002F1.index",[87,89,94],{"title":83,"path":84,"stem":85,"icon":88},"i-lucide-git-pull-request",{"title":90,"path":91,"stem":92,"icon":93},"Use jscpd in CI","\u002Fci-and-hooks\u002Fci","3.ci-and-hooks\u002F2.ci","i-lucide-github",{"title":95,"path":96,"stem":97,"icon":98},"Use jscpd in Pre-Commit Hook","\u002Fci-and-hooks\u002Fpre-commit","3.ci-and-hooks\u002F3.pre-commit","i-lucide-git-commit",{"title":100,"path":101,"stem":102,"children":103,"icon":105},"Reporters","\u002Freporters","4.reporters\u002F1.index",[104,106,110,115,120,125,130],{"title":100,"path":101,"stem":102,"icon":105},"i-lucide-file-chart-column",{"title":107,"path":108,"stem":109,"icon":29},"HTML Reporter","\u002Freporters\u002Fhtml","4.reporters\u002F2.html",{"title":111,"path":112,"stem":113,"icon":114},"JSON Reporter","\u002Freporters\u002Fjson","4.reporters\u002F3.json","i-lucide-braces",{"title":116,"path":117,"stem":118,"icon":119},"Badge Reporter","\u002Freporters\u002Fbadge","4.reporters\u002F4.badge","i-lucide-award",{"title":121,"path":122,"stem":123,"icon":124},"SARIF Reporter","\u002Freporters\u002Fsarif","4.reporters\u002F5.sarif","i-lucide-shield-check",{"title":126,"path":127,"stem":128,"icon":129},"CodeClimate \u002F GitLab Reporter","\u002Freporters\u002Fcodeclimate","4.reporters\u002F6.codeclimate","i-lucide-flag-triangle-right",{"title":131,"path":132,"stem":133,"icon":134},"OpenMetrics Reporter","\u002Freporters\u002Fopenmetrics","4.reporters\u002F7.openmetrics","i-lucide-activity",{"title":136,"path":137,"stem":138,"children":139,"icon":6},"Benchmarks","\u002Fbenchmarks","5.benchmarks\u002F1.index",[140,142,147,152],{"title":136,"path":137,"stem":138,"icon":141},"i-lucide-gauge",{"title":143,"path":144,"stem":145,"icon":146},"Detection Speed","\u002Fbenchmarks\u002Fdetection-speed","5.benchmarks\u002F2.detection-speed","i-lucide-zap",{"title":148,"path":149,"stem":150,"icon":151},"Multi-Format Detection","\u002Fbenchmarks\u002Fcross-format","5.benchmarks\u002F3.cross-format","i-lucide-layers",{"title":153,"path":154,"stem":155,"icon":156},"AI Token Efficiency","\u002Fbenchmarks\u002Fai-token-efficiency","5.benchmarks\u002F4.ai-token-efficiency","i-lucide-sparkles",{"title":158,"path":159,"stem":160,"children":161,"icon":163},"API","\u002Fapi","6.api\u002F1.index",[162,164,169],{"title":158,"path":159,"stem":160,"icon":163},"i-lucide-code",{"title":165,"path":166,"stem":167,"icon":168},"Rust Crates (v5)","\u002Fapi\u002Fcore","6.api\u002F2.core","i-lucide-box",{"title":170,"path":171,"stem":172,"icon":168},"MCP Server","\u002Fapi\u002Fmcp-server","6.api\u002F4.mcp-server",{"title":174,"path":175,"stem":176,"icon":177},"Trending","\u002Ftrending","7.trending","i-lucide-trending-up",{"title":179,"path":180,"stem":181,"icon":182},"Research","\u002Fresearch","8.research","i-lucide-graduation-cap",{"title":184,"path":185,"stem":186,"icon":187},"Articles","\u002Farticles","9.articles","i-lucide-newspaper",{"id":189,"title":126,"body":190,"description":516,"extension":517,"links":518,"meta":519,"navigation":520,"path":127,"seo":521,"stem":128,"__hash__":524},"docs\u002F4.reporters\u002F6.codeclimate.md",{"type":191,"value":192,"toc":509},"minimark",[193,198,227,235,239,286,292,296,394,401,405,438,441,505],[194,195,197],"h2",{"id":196},"overview","Overview",[199,200,201,202,206,207,210,211,214,215,222,223,226],"p",{},"The ",[203,204,205],"code",{},"codeclimate"," reporter (alias: ",[203,208,209],{},"gitlab",") writes ",[203,212,213],{},"gl-code-quality-report.json"," in the ",[216,217,221],"a",{"href":218,"rel":219},"https:\u002F\u002Fdocs.gitlab.com\u002Fci\u002Ftesting\u002Fcode_quality\u002F#code-quality-report-format",[220],"nofollow","CodeClimate issue format",", restricted to the subset GitLab defines for its Code Quality reports. Declare it as an ",[203,224,225],{},"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.",[199,228,229,230,234],{},"Available since ",[231,232,233],"strong",{},"v5.1.0",".",[194,236,238],{"id":237},"usage","Usage",[240,241,246],"pre",{"className":242,"code":243,"language":244,"meta":245,"style":245},"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","",[203,247,248,267,274],{"__ignoreMap":245},[249,250,253,257,261,264],"span",{"class":251,"line":252},"line",1,[249,254,256],{"class":255},"sBMFI","jscpd",[249,258,260],{"class":259},"sfazB"," --reporters",[249,262,263],{"class":259}," codeclimate",[249,265,266],{"class":259}," .\u002Fsrc\n",[249,268,270],{"class":251,"line":269},2,[249,271,273],{"class":272},"sHwdD","# or the alias:\n",[249,275,277,279,281,284],{"class":251,"line":276},3,[249,278,256],{"class":255},[249,280,260],{"class":259},[249,282,283],{"class":259}," gitlab",[249,285,266],{"class":259},[199,287,288,289],{},"Output file: ",[203,290,291],{},".\u002Freport\u002Fgl-code-quality-report.json",[194,293,295],{"id":294},"gitlab-ci-integration","GitLab CI Integration",[240,297,302],{"className":298,"code":299,"filename":300,"language":301,"meta":245,"style":245},"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",[203,303,304,313,324,334,342,351,359,367,375,383],{"__ignoreMap":245},[249,305,306,309],{"class":251,"line":252},[249,307,256],{"class":308},"swJcz",[249,310,312],{"class":311},"sMK4o",":\n",[249,314,315,318,321],{"class":251,"line":269},[249,316,317],{"class":308},"  stage",[249,319,320],{"class":311},":",[249,322,323],{"class":259}," test\n",[249,325,326,329,331],{"class":251,"line":276},[249,327,328],{"class":308},"  image",[249,330,320],{"class":311},[249,332,333],{"class":259}," node:22\n",[249,335,337,340],{"class":251,"line":336},4,[249,338,339],{"class":308},"  before_script",[249,341,312],{"class":311},[249,343,345,348],{"class":251,"line":344},5,[249,346,347],{"class":311},"    -",[249,349,350],{"class":259}," npm install -g jscpd@5\n",[249,352,354,357],{"class":251,"line":353},6,[249,355,356],{"class":308},"  script",[249,358,312],{"class":311},[249,360,362,364],{"class":251,"line":361},7,[249,363,347],{"class":311},[249,365,366],{"class":259}," jscpd --reporters console,codeclimate --output report .\n",[249,368,370,373],{"class":251,"line":369},8,[249,371,372],{"class":308},"  artifacts",[249,374,312],{"class":311},[249,376,378,381],{"class":251,"line":377},9,[249,379,380],{"class":308},"    reports",[249,382,312],{"class":311},[249,384,386,389,391],{"class":251,"line":385},10,[249,387,388],{"class":308},"      codequality",[249,390,320],{"class":311},[249,392,393],{"class":259}," report\u002Fgl-code-quality-report.json\n",[199,395,396,397,400],{},"Merge requests then show a ",[231,398,399],{},"Code Quality"," widget listing new and resolved duplication issues compared to the target branch.",[194,402,404],{"id":403},"how-it-works","How It Works",[406,407,408,416,419],"ul",{},[409,410,411,412,415],"li",{},"Each clone yields one issue per fragment; every issue describes the counterpart location in its message and in the CodeClimate ",[203,413,414],{},"other_locations"," field.",[409,417,418],{},"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.",[409,420,421,422,425,426,429,430,434,435,234],{},"Severity is ",[203,423,424],{},"minor",", escalating to ",[203,427,428],{},"major"," for clones absent from a configured ",[216,431,433],{"href":432},"\u002Fci-and-hooks\u002Fci#gate-on-new-duplication-baseline","baseline"," or when the run exceeds ",[203,436,437],{},"--threshold",[194,439,21],{"id":440},"configuration",[240,442,447],{"className":443,"code":444,"filename":445,"language":446,"meta":245,"style":245},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"reporters\": [\"codeclimate\"],\n  \"output\": \".\u002Freport\"\n}\n",".jscpd.json","json",[203,448,449,454,480,500],{"__ignoreMap":245},[249,450,451],{"class":251,"line":252},[249,452,453],{"class":311},"{\n",[249,455,456,459,463,466,468,471,473,475,477],{"class":251,"line":269},[249,457,458],{"class":311},"  \"",[249,460,462],{"class":461},"spNyl","reporters",[249,464,465],{"class":311},"\"",[249,467,320],{"class":311},[249,469,470],{"class":311}," [",[249,472,465],{"class":311},[249,474,205],{"class":259},[249,476,465],{"class":311},[249,478,479],{"class":311},"],\n",[249,481,482,484,487,489,491,494,497],{"class":251,"line":276},[249,483,458],{"class":311},[249,485,486],{"class":461},"output",[249,488,465],{"class":311},[249,490,320],{"class":311},[249,492,493],{"class":311}," \"",[249,495,496],{"class":259},".\u002Freport",[249,498,499],{"class":311},"\"\n",[249,501,502],{"class":251,"line":336},[249,503,504],{"class":311},"}\n",[506,507,508],"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":245,"searchDepth":269,"depth":269,"links":510},[511,512,513,514,515],{"id":196,"depth":269,"text":197},{"id":237,"depth":269,"text":238},{"id":294,"depth":269,"text":295},{"id":403,"depth":269,"text":404},{"id":440,"depth":269,"text":21},"Generate GitLab Code Quality reports in the CodeClimate issue format.","md",null,{},{"icon":129},{"title":522,"description":523},"CodeClimate \u002F GitLab Code Quality Reporter","Surface jscpd duplication findings as code quality issues in GitLab merge requests via the CodeClimate report format.","d9fGqMbiPfpBmKX6kAbFMmzMCf1-VJVYcCE1xXlYzvA",[526,528],{"title":121,"path":122,"stem":123,"description":527,"icon":124,"children":-1},"Generate SARIF reports for GitHub Code Scanning integration.",{"title":131,"path":132,"stem":133,"description":529,"icon":134,"children":-1},"Generate OpenMetrics reports for GitLab CI metrics integration.",1790314235818]