[{"data":1,"prerenderedAt":488},["ShallowReactive",2],{"navigation_docs":3,"-reporters-sarif":129,"-reporters-sarif-surround":483},[4,45,62,88,108],{"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],{"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,"children":49,"icon":6},"CI & Hooks","\u002Fci-and-hooks","2.ci-and-hooks\u002F1.index",[50,52,57],{"title":46,"path":47,"stem":48,"icon":51},"i-lucide-git-pull-request",{"title":53,"path":54,"stem":55,"icon":56},"Use jscpd in CI","\u002Fci-and-hooks\u002Fci","2.ci-and-hooks\u002F2.ci","i-lucide-github",{"title":58,"path":59,"stem":60,"icon":61},"Use jscpd in Pre-Commit Hook","\u002Fci-and-hooks\u002Fpre-commit","2.ci-and-hooks\u002F3.pre-commit","i-lucide-git-commit",{"title":63,"path":64,"stem":65,"children":66,"icon":68},"Reporters","\u002Freporters","3.reporters\u002F1.index",[67,69,73,78,83],{"title":63,"path":64,"stem":65,"icon":68},"i-lucide-file-chart-column",{"title":70,"path":71,"stem":72,"icon":29},"HTML Reporter","\u002Freporters\u002Fhtml","3.reporters\u002F2.html",{"title":74,"path":75,"stem":76,"icon":77},"JSON Reporter","\u002Freporters\u002Fjson","3.reporters\u002F3.json","i-lucide-braces",{"title":79,"path":80,"stem":81,"icon":82},"Badge Reporter","\u002Freporters\u002Fbadge","3.reporters\u002F4.badge","i-lucide-award",{"title":84,"path":85,"stem":86,"icon":87},"SARIF Reporter","\u002Freporters\u002Fsarif","3.reporters\u002F5.sarif","i-lucide-shield-check",{"title":89,"icon":6,"path":90,"stem":91,"children":92,"page":6},"Benchmarks","\u002Fbenchmarks","4.benchmarks",[93,98,103],{"title":94,"path":95,"stem":96,"icon":97},"Detection Speed","\u002Fbenchmarks\u002Fdetection-speed","4.benchmarks\u002F1.detection-speed","i-lucide-zap",{"title":99,"path":100,"stem":101,"icon":102},"Multi-Format Detection","\u002Fbenchmarks\u002Fcross-format","4.benchmarks\u002F2.cross-format","i-lucide-layers",{"title":104,"path":105,"stem":106,"icon":107},"AI Token Efficiency","\u002Fbenchmarks\u002Fai-token-efficiency","4.benchmarks\u002F3.ai-token-efficiency","i-lucide-sparkles",{"title":109,"path":110,"stem":111,"children":112,"icon":114},"API","\u002Fapi","5.api\u002F1.index",[113,115,120,125],{"title":109,"path":110,"stem":111,"icon":114},"i-lucide-code",{"title":116,"path":117,"stem":118,"icon":119},"Rust Crates (v5)","\u002Fapi\u002Fcore","5.api\u002F2.core","i-lucide-box",{"title":121,"path":122,"stem":123,"icon":124},"Server API","\u002Fapi\u002Fserver","5.api\u002F3.server","i-lucide-server",{"title":126,"path":127,"stem":128,"icon":119},"MCP Server","\u002Fapi\u002Fmcp-server","5.api\u002F4.mcp-server",{"id":130,"title":84,"body":131,"description":475,"extension":476,"links":477,"meta":478,"navigation":479,"path":85,"seo":480,"stem":86,"__hash__":482},"docs\u002F3.reporters\u002F5.sarif.md",{"type":132,"value":133,"toc":468},"minimark",[134,138,142,146,175,181,185,188,366,374,377,441,445,464],[135,136,16],"h2",{"id":137},"installation",[139,140,141],"p",{},"The SARIF reporter is included in jscpd v5 by default — no separate installation needed.",[135,143,145],{"id":144},"usage","Usage",[147,148,153],"pre",{"className":149,"code":150,"language":151,"meta":152,"style":152},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","jscpd --reporters sarif .\u002Fsrc\n","bash","",[154,155,156],"code",{"__ignoreMap":152},[157,158,161,165,169,172],"span",{"class":159,"line":160},"line",1,[157,162,164],{"class":163},"sBMFI","jscpd",[157,166,168],{"class":167},"sfazB"," --reporters",[157,170,171],{"class":167}," sarif",[157,173,174],{"class":167}," .\u002Fsrc\n",[139,176,177,178],{},"Output file: ",[154,179,180],{},".\u002Freport\u002Fjscpd-sarif.json",[135,182,184],{"id":183},"github-code-scanning-integration","GitHub Code Scanning Integration",[139,186,187],{},"Upload the SARIF output to GitHub to surface duplication findings inline in pull requests:",[147,189,194],{"className":190,"code":191,"filename":192,"language":193,"meta":152,"style":152},"language-yaml shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","name: Code duplication check\non: [push, pull_request]\n\njobs:\n  jscpd:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions\u002Fcheckout@v4\n\n      - name: Run jscpd\n        run: jscpd --reporters sarif --output .\u002Freports .\n\n      - name: Upload SARIF to GitHub Code Scanning\n        uses: github\u002Fcodeql-action\u002Fupload-sarif@v3\n        with:\n          sarif_file: .\u002Freports\u002Fjscpd-sarif.json\n",".github\u002Fworkflows\u002Fjscpd.yml","yaml",[154,195,196,209,233,240,249,257,268,276,290,295,308,319,324,336,347,355],{"__ignoreMap":152},[157,197,198,202,206],{"class":159,"line":160},[157,199,201],{"class":200},"swJcz","name",[157,203,205],{"class":204},"sMK4o",":",[157,207,208],{"class":167}," Code duplication check\n",[157,210,212,216,218,221,224,227,230],{"class":159,"line":211},2,[157,213,215],{"class":214},"sfNiH","on",[157,217,205],{"class":204},[157,219,220],{"class":204}," [",[157,222,223],{"class":167},"push",[157,225,226],{"class":204},",",[157,228,229],{"class":167}," pull_request",[157,231,232],{"class":204},"]\n",[157,234,236],{"class":159,"line":235},3,[157,237,239],{"emptyLinePlaceholder":238},true,"\n",[157,241,243,246],{"class":159,"line":242},4,[157,244,245],{"class":200},"jobs",[157,247,248],{"class":204},":\n",[157,250,252,255],{"class":159,"line":251},5,[157,253,254],{"class":200},"  jscpd",[157,256,248],{"class":204},[157,258,260,263,265],{"class":159,"line":259},6,[157,261,262],{"class":200},"    runs-on",[157,264,205],{"class":204},[157,266,267],{"class":167}," ubuntu-latest\n",[157,269,271,274],{"class":159,"line":270},7,[157,272,273],{"class":200},"    steps",[157,275,248],{"class":204},[157,277,279,282,285,287],{"class":159,"line":278},8,[157,280,281],{"class":204},"      -",[157,283,284],{"class":200}," uses",[157,286,205],{"class":204},[157,288,289],{"class":167}," actions\u002Fcheckout@v4\n",[157,291,293],{"class":159,"line":292},9,[157,294,239],{"emptyLinePlaceholder":238},[157,296,298,300,303,305],{"class":159,"line":297},10,[157,299,281],{"class":204},[157,301,302],{"class":200}," name",[157,304,205],{"class":204},[157,306,307],{"class":167}," Run jscpd\n",[157,309,311,314,316],{"class":159,"line":310},11,[157,312,313],{"class":200},"        run",[157,315,205],{"class":204},[157,317,318],{"class":167}," jscpd --reporters sarif --output .\u002Freports .\n",[157,320,322],{"class":159,"line":321},12,[157,323,239],{"emptyLinePlaceholder":238},[157,325,327,329,331,333],{"class":159,"line":326},13,[157,328,281],{"class":204},[157,330,302],{"class":200},[157,332,205],{"class":204},[157,334,335],{"class":167}," Upload SARIF to GitHub Code Scanning\n",[157,337,339,342,344],{"class":159,"line":338},14,[157,340,341],{"class":200},"        uses",[157,343,205],{"class":204},[157,345,346],{"class":167}," github\u002Fcodeql-action\u002Fupload-sarif@v3\n",[157,348,350,353],{"class":159,"line":349},15,[157,351,352],{"class":200},"        with",[157,354,248],{"class":204},[157,356,358,361,363],{"class":159,"line":357},16,[157,359,360],{"class":200},"          sarif_file",[157,362,205],{"class":204},[157,364,365],{"class":167}," .\u002Freports\u002Fjscpd-sarif.json\n",[139,367,368,369,373],{},"Results appear in the ",[370,371,372],"strong",{},"Security → Code Scanning"," tab of your repository and as inline annotations on pull request diffs.",[135,375,21],{"id":376},"configuration",[147,378,383],{"className":379,"code":380,"filename":381,"language":382,"meta":152,"style":152},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"reporters\": [\"sarif\"],\n  \"output\": \".\u002Freports\u002Fjscpd\"\n}\n",".jscpd.json","json",[154,384,385,390,416,436],{"__ignoreMap":152},[157,386,387],{"class":159,"line":160},[157,388,389],{"class":204},"{\n",[157,391,392,395,399,402,404,406,408,411,413],{"class":159,"line":211},[157,393,394],{"class":204},"  \"",[157,396,398],{"class":397},"spNyl","reporters",[157,400,401],{"class":204},"\"",[157,403,205],{"class":204},[157,405,220],{"class":204},[157,407,401],{"class":204},[157,409,410],{"class":167},"sarif",[157,412,401],{"class":204},[157,414,415],{"class":204},"],\n",[157,417,418,420,423,425,427,430,433],{"class":159,"line":235},[157,419,394],{"class":204},[157,421,422],{"class":397},"output",[157,424,401],{"class":204},[157,426,205],{"class":204},[157,428,429],{"class":204}," \"",[157,431,432],{"class":167},".\u002Freports\u002Fjscpd",[157,434,435],{"class":204},"\"\n",[157,437,438],{"class":159,"line":242},[157,439,440],{"class":204},"}\n",[135,442,444],{"id":443},"how-it-works","How It Works",[139,446,447,448,451,452,455,456,459,460,463],{},"Each detected clone is reported as a ",[154,449,450],{},"warning","-level SARIF result with precise file locations (line and column). If the overall duplication percentage exceeds the configured ",[154,453,454],{},"--threshold",", an additional ",[154,457,458],{},"error","-level result is emitted under the ",[154,461,462],{},"duplications-threshold"," rule.",[465,466,467],"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 .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 .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}",{"title":152,"searchDepth":211,"depth":211,"links":469},[470,471,472,473,474],{"id":137,"depth":211,"text":16},{"id":144,"depth":211,"text":145},{"id":183,"depth":211,"text":184},{"id":376,"depth":211,"text":21},{"id":443,"depth":211,"text":444},"Generate SARIF reports for GitHub Code Scanning integration.","md",null,{},{"icon":87},{"title":84,"description":481},"Generate SARIF duplication reports compatible with GitHub Code Scanning.","GiTk2bXxH-R7TzYDT1PQx3FEnxdScNA89vQ-sZECWRs",[484,486],{"title":79,"path":80,"stem":81,"description":485,"icon":82,"children":-1},"Generate SVG badges for your README.",{"title":94,"path":95,"stem":96,"description":487,"icon":97,"children":-1},"Benchmark comparison of jscpd@5 vs 6 other CPD tools — speed and detection accuracy.",1783541129680]