[{"data":1,"prerenderedAt":1283},["ShallowReactive",2],{"navigation_docs":3,"-reference-reporters":239,"-reference-reporters-surround":1278},[4,29,94,114,184],{"title":5,"icon":6,"path":7,"stem":8,"children":9},"Start",false,"\u002Fstart","1.start",[10,14,19,24],{"title":11,"path":7,"stem":12,"icon":13},"What jscpd finds","1.start\u002Findex","i-lucide-house",{"title":15,"path":16,"stem":17,"icon":18},"Installation","\u002Fstart\u002Finstallation","1.start\u002F2.installation","i-lucide-download",{"title":20,"path":21,"stem":22,"icon":23},"Quickstart","\u002Fstart\u002Fquickstart","1.start\u002F3.quickstart","i-lucide-rocket",{"title":25,"path":26,"stem":27,"icon":28},"Configuration basics","\u002Fstart\u002Fconfiguration","1.start\u002F4.configuration","i-lucide-settings-2",{"title":30,"icon":6,"path":31,"stem":32,"children":33,"page":6},"Guides","\u002Fguides","2.guides",[34,39,44,49,54,59,64,69,74,79,84,89],{"title":35,"path":36,"stem":37,"icon":38},"Use jscpd in CI","\u002Fguides\u002Fci","2.guides\u002F01.ci","i-lucide-github",{"title":40,"path":41,"stem":42,"icon":43},"Pre-commit hooks","\u002Fguides\u002Fpre-commit","2.guides\u002F02.pre-commit","i-lucide-git-commit",{"title":45,"path":46,"stem":47,"icon":48},"Fail only on new duplication","\u002Fguides\u002Fbaseline","2.guides\u002F03.baseline","i-lucide-git-compare",{"title":50,"path":51,"stem":52,"icon":53},"Monorepos","\u002Fguides\u002Fmonorepos","2.guides\u002F04.monorepos","i-lucide-folder-tree",{"title":55,"path":56,"stem":57,"icon":58},"Cross-format detection","\u002Fguides\u002Fcross-format","2.guides\u002F05.cross-format","i-lucide-layers",{"title":60,"path":61,"stem":62,"icon":63},"Agents","\u002Fguides\u002Fagents","2.guides\u002F06.agents","i-lucide-cpu",{"title":65,"path":66,"stem":67,"icon":68},"Editors","\u002Fguides\u002Feditors","2.guides\u002F07.editors","i-lucide-code",{"title":70,"path":71,"stem":72,"icon":73},"Duplication over git history","\u002Fguides\u002Fhistory","2.guides\u002F08.history","i-lucide-chart-no-axes-combined",{"title":75,"path":76,"stem":77,"icon":78},"Dashboard and health score","\u002Fguides\u002Fdashboard","2.guides\u002F09.dashboard","i-lucide-layout-dashboard",{"title":80,"path":81,"stem":82,"icon":83},"Dead code","\u002Fguides\u002Fdead-code","2.guides\u002F10.dead-code","i-lucide-ghost",{"title":85,"path":86,"stem":87,"icon":88},"Comparing two codebases","\u002Fguides\u002Fcompare","2.guides\u002F11.compare","i-lucide-git-compare-arrows",{"title":90,"path":91,"stem":92,"icon":93},"Semantic clones","\u002Fguides\u002Fsemantic-clones","2.guides\u002F12.semantic-clones","i-lucide-brain-circuit",{"title":95,"icon":6,"path":96,"stem":97,"children":98,"page":6},"Concepts","\u002Fconcepts","3.concepts",[99,104,109],{"title":100,"path":101,"stem":102,"icon":103},"Types of code clones","\u002Fconcepts\u002Fclone-types","3.concepts\u002F1.clone-types","i-lucide-copy",{"title":105,"path":106,"stem":107,"icon":108},"How detection works","\u002Fconcepts\u002Fhow-detection-works","3.concepts\u002F2.how-detection-works","i-lucide-scan-search",{"title":110,"path":111,"stem":112,"icon":113},"The health score","\u002Fconcepts\u002Fhealth-score","3.concepts\u002F3.health-score","i-lucide-heart-pulse",{"title":115,"icon":6,"path":116,"stem":117,"children":118,"page":6},"Reference","\u002Freference","4.reference",[119,124,129,134,171,176,180],{"title":120,"path":121,"stem":122,"icon":123},"CLI options","\u002Freference\u002Fcli","4.reference\u002F1.cli","i-lucide-terminal",{"title":125,"path":126,"stem":127,"icon":128},"The config file","\u002Freference\u002Fconfig-file","4.reference\u002F2.config-file","i-lucide-settings",{"title":130,"path":131,"stem":132,"icon":133},"Exit codes","\u002Freference\u002Fexit-codes","4.reference\u002F3.exit-codes","i-lucide-log-out",{"title":135,"icon":6,"path":136,"stem":137,"children":138},"Reporters","\u002Freference\u002Freporters","4.reference\u002F4.reporters\u002Findex",[139,141,146,151,156,161,166],{"title":135,"path":136,"stem":137,"icon":140},"i-lucide-file-chart-column",{"title":142,"path":143,"stem":144,"icon":145},"HTML reporter","\u002Freference\u002Freporters\u002Fhtml","4.reference\u002F4.reporters\u002F2.html","i-lucide-file-code",{"title":147,"path":148,"stem":149,"icon":150},"JSON reporter","\u002Freference\u002Freporters\u002Fjson","4.reference\u002F4.reporters\u002F3.json","i-lucide-braces",{"title":152,"path":153,"stem":154,"icon":155},"Badge reporter","\u002Freference\u002Freporters\u002Fbadge","4.reference\u002F4.reporters\u002F4.badge","i-lucide-award",{"title":157,"path":158,"stem":159,"icon":160},"SARIF reporter","\u002Freference\u002Freporters\u002Fsarif","4.reference\u002F4.reporters\u002F5.sarif","i-lucide-shield-check",{"title":162,"path":163,"stem":164,"icon":165},"CodeClimate reporter","\u002Freference\u002Freporters\u002Fcodeclimate","4.reference\u002F4.reporters\u002F6.codeclimate","i-lucide-flag-triangle-right",{"title":167,"path":168,"stem":169,"icon":170},"OpenMetrics reporter","\u002Freference\u002Freporters\u002Fopenmetrics","4.reference\u002F4.reporters\u002F7.openmetrics","i-lucide-activity",{"title":172,"path":173,"stem":174,"icon":175},"Supported formats","\u002Freference\u002Fsupported-formats","4.reference\u002F5.supported-formats","i-lucide-languages",{"title":177,"path":178,"stem":179,"icon":38},"GitHub Action","\u002Freference\u002Fgithub-action","4.reference\u002F6.github-action",{"title":181,"path":182,"stem":183,"icon":68},"Rust crates","\u002Freference\u002Frust-crates","4.reference\u002F7.rust-crates",{"title":185,"icon":6,"path":186,"stem":187,"children":188,"page":6},"Project","\u002Fproject","5.project",[189,194,199,204,229,234],{"title":190,"path":191,"stem":192,"icon":193},"Changelog","\u002Fproject\u002Fchangelog","5.project\u002F1.changelog","i-lucide-scroll-text",{"title":195,"path":196,"stem":197,"icon":198},"Migrating from v4 to v5","\u002Fproject\u002Fmigration","5.project\u002F2.migration","i-lucide-arrow-right-left",{"title":200,"path":201,"stem":202,"icon":203},"jscpd v4 (TypeScript)","\u002Fproject\u002Fv4","5.project\u002F3.v4","i-simple-icons-typescript",{"title":205,"icon":6,"path":206,"stem":207,"children":208},"Benchmarks","\u002Fproject\u002Fbenchmarks","5.project\u002F4.benchmarks\u002Findex",[209,211,216,220,225],{"title":205,"path":206,"stem":207,"icon":210},"i-lucide-gauge",{"title":212,"path":213,"stem":214,"icon":215},"Detection Speed","\u002Fproject\u002Fbenchmarks\u002Fdetection-speed","5.project\u002F4.benchmarks\u002F2.detection-speed","i-lucide-zap",{"title":217,"path":218,"stem":219,"icon":58},"Multi-Format Detection","\u002Fproject\u002Fbenchmarks\u002Fcross-format","5.project\u002F4.benchmarks\u002F3.cross-format",{"title":221,"path":222,"stem":223,"icon":224},"AI Token Efficiency","\u002Fproject\u002Fbenchmarks\u002Fai-token-efficiency","5.project\u002F4.benchmarks\u002F4.ai-token-efficiency","i-lucide-sparkles",{"title":226,"path":227,"stem":228,"icon":93},"Embedding Models","\u002Fproject\u002Fbenchmarks\u002Fembedding-models","5.project\u002F4.benchmarks\u002F5.embedding-models",{"title":230,"path":231,"stem":232,"icon":233},"Research","\u002Fproject\u002Fresearch","5.project\u002F5.research","i-lucide-graduation-cap",{"title":235,"path":236,"stem":237,"icon":238},"Articles","\u002Fproject\u002Farticles","5.project\u002F6.articles","i-lucide-newspaper",{"id":240,"title":135,"body":241,"description":1271,"extension":1272,"links":1273,"meta":1274,"navigation":1275,"path":136,"seo":1276,"stem":137,"__hash__":1277},"docs\u002F4.reference\u002F4.reporters\u002Findex.md",{"type":242,"value":243,"toc":1263},"minimark",[244,269,274,535,545,549,584,587,595,601,686,690,704,733,739,754,766,790,796,811,819,825,831,835,847,1048,1054,1058,1061,1200,1204,1259],[245,246,247,248,252,253,256,257,260,261,264,265,268],"p",{},"Every reporter ships inside the jscpd binary, so there is nothing to install. ",[249,250,251],"code",{},"-r"," (",[249,254,255],{},"--reporters",") takes a comma-separated list, ",[249,258,259],{},"console"," is the default, and the reporters that write files put them in ",[249,262,263],{},"--output",", which is ",[249,266,267],{},".\u002Freport\u002F"," unless you change it. The console reporters print to stdout, so one run can print to the terminal and write any number of files.",[270,271,273],"h2",{"id":272},"the-reporters","The reporters",[275,276,277,293],"table",{},[278,279,280],"thead",{},[281,282,283,287,290],"tr",{},[284,285,286],"th",{},"Reporter",[284,288,289],{},"Writes",[284,291,292],{},"Pick it when",[294,295,296,309,334,348,364,376,393,408,423,438,453,468,486,501,520],"tbody",{},[281,297,298,303,306],{},[299,300,301],"td",{},[249,302,259],{},[299,304,305],{},"the terminal",[299,307,308],{},"you read the result where you ran it: the clones, then a table per format (the default)",[281,310,311,325,327],{},[299,312,313,316,317,320,321,324],{},[249,314,315],{},"console-full"," (aliases ",[249,318,319],{},"consoleFull",", ",[249,322,323],{},"full",")",[299,326,305],{},[299,328,329,330,333],{},"you want the code of both copies under each clone; with ",[249,331,332],{},"--blame"," each line carries its author on both sides",[281,335,336,341,343],{},[299,337,338],{},[249,339,340],{},"ai",[299,342,305],{},[299,344,345,346],{},"an agent or an LLM reads the output: one line per clone and no code, about 79% fewer tokens than ",[249,347,259],{},[281,349,350,355,357],{},[299,351,352],{},[249,353,354],{},"xcode",[299,356,305],{},[299,358,359,360,363],{},"a build log parser such as Xcode's turns ",[249,361,362],{},"path:line:column: warning:"," lines into warnings",[281,365,366,371,373],{},[299,367,368],{},[249,369,370],{},"silent",[299,372,305],{},[299,374,375],{},"you only want the one-line summary and the exit code",[281,377,378,383,386],{},[299,379,380],{},[249,381,382],{},"threshold",[299,384,385],{},"nothing",[299,387,388,389,392],{},"a v4 config lists it; ",[249,390,391],{},"--threshold"," runs the same check on its own",[281,394,395,400,405],{},[299,396,397],{},[249,398,399],{},"json",[299,401,402],{},[249,403,404],{},"jscpd-report.json",[299,406,407],{},"a script reads the clones and the statistics",[281,409,410,415,420],{},[299,411,412],{},[249,413,414],{},"xml",[299,416,417],{},[249,418,419],{},"jscpd-report.xml",[299,421,422],{},"a tool expects the PMD CPD XML format",[281,424,425,430,435],{},[299,426,427],{},[249,428,429],{},"csv",[299,431,432],{},[249,433,434],{},"jscpd-report.csv",[299,436,437],{},"the per-format statistics go into a spreadsheet",[281,439,440,445,450],{},[299,441,442],{},[249,443,444],{},"markdown",[299,446,447],{},[249,448,449],{},"jscpd-report.md",[299,451,452],{},"the statistics table goes into a pull request comment or a wiki page",[281,454,455,460,465],{},[299,456,457],{},[249,458,459],{},"html",[299,461,462],{},[249,463,464],{},"jscpd-report.html",[299,466,467],{},"a person reads the report in a browser",[281,469,470,475,483],{},[299,471,472],{},[249,473,474],{},"badge",[299,476,477,320,480],{},[249,478,479],{},"jscpd-badge.svg",[249,481,482],{},"jscpd-lines-badge.svg",[299,484,485],{},"a README shows the duplication",[281,487,488,493,498],{},[299,489,490],{},[249,491,492],{},"sarif",[299,494,495],{},[249,496,497],{},"jscpd-report.sarif",[299,499,500],{},"GitHub code scanning or another SARIF consumer shows the clones on the diff",[281,502,503,512,517],{},[299,504,505,508,509,324],{},[249,506,507],{},"codeclimate"," (alias ",[249,510,511],{},"gitlab",[299,513,514],{},[249,515,516],{},"gl-code-quality-report.json",[299,518,519],{},"GitLab lists the clones in the Code Quality widget of a merge request (5.1.0+)",[281,521,522,527,532],{},[299,523,524],{},[249,525,526],{},"openmetrics",[299,528,529],{},[249,530,531],{},"jscpd-metrics.txt",[299,533,534],{},"GitLab metrics reports or a Prometheus-style parser track the numbers (5.1.0+)",[245,536,537,538,541,542,544],{},"jscpd 5 has no ",[249,539,540],{},"time"," reporter: the timing line prints on its own, and a ",[249,543,540],{}," entry left over from a v4 config is accepted and ignored.",[270,546,548],{"id":547},"run-it","Run it",[550,551,557],"pre",{"className":552,"code":553,"filename":554,"language":555,"meta":556,"style":556},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","jscpd . -r console,json,html --output report\n","Terminal","bash","",[249,558,559],{"__ignoreMap":556},[560,561,564,568,572,575,578,581],"span",{"class":562,"line":563},"line",1,[560,565,567],{"class":566},"sBMFI","jscpd",[560,569,571],{"class":570},"sfazB"," .",[560,573,574],{"class":570}," -r",[560,576,577],{"class":570}," console,json,html",[560,579,580],{"class":570}," --output",[560,582,583],{"class":570}," report\n",[245,585,586],{},"The console part prints first, then one line per file:",[550,588,593],{"className":589,"code":591,"language":592,"meta":556},[590],"language-text","Found 3 clones.\nJSON report saved to report\u002Fjscpd-report.json\nHTML report saved to report\u002Fjscpd-report.html\ntime: 4.566ms\n","text",[249,594,591],{"__ignoreMap":556},[245,596,597,600],{},[249,598,599],{},"--no-colors"," drops the ANSI colors from the console reporters, which keeps a CI log readable. The same reporters in the config file:",[550,602,606],{"className":603,"code":604,"filename":605,"language":399,"meta":556,"style":556},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"reporters\": [\"console\", \"json\", \"html\"],\n  \"output\": \"report\"\n}\n",".jscpd.json",[249,607,608,614,660,680],{"__ignoreMap":556},[560,609,610],{"class":562,"line":563},[560,611,613],{"class":612},"sMK4o","{\n",[560,615,617,620,624,627,630,633,635,637,639,642,645,647,649,651,653,655,657],{"class":562,"line":616},2,[560,618,619],{"class":612},"  \"",[560,621,623],{"class":622},"spNyl","reporters",[560,625,626],{"class":612},"\"",[560,628,629],{"class":612},":",[560,631,632],{"class":612}," [",[560,634,626],{"class":612},[560,636,259],{"class":570},[560,638,626],{"class":612},[560,640,641],{"class":612},",",[560,643,644],{"class":612}," \"",[560,646,399],{"class":570},[560,648,626],{"class":612},[560,650,641],{"class":612},[560,652,644],{"class":612},[560,654,459],{"class":570},[560,656,626],{"class":612},[560,658,659],{"class":612},"],\n",[560,661,663,665,668,670,672,674,677],{"class":562,"line":662},3,[560,664,619],{"class":612},[560,666,667],{"class":622},"output",[560,669,626],{"class":612},[560,671,629],{"class":612},[560,673,644],{"class":612},[560,675,676],{"class":570},"report",[560,678,679],{"class":612},"\"\n",[560,681,683],{"class":562,"line":682},4,[560,684,685],{"class":612},"}\n",[270,687,689],{"id":688},"what-the-terminal-shows","What the terminal shows",[245,691,692,693,695,696,699,700,703],{},"The ",[249,694,259],{}," reporter prints one header per clone, the two locations as ",[249,697,698],{},"[line:column - line:column]",", and a table per format. The header names the format and, when the clone is not an exact copy, its kind. On the ",[249,701,702],{},"fixtures\u002Fmcp-demo"," folder of the repository, with the flags that find renamed and near-miss clones:",[550,705,707],{"className":552,"code":706,"filename":554,"language":555,"meta":556,"style":556},"jscpd . --ignore-identifiers --ignore-literals --max-gap-lines 1 -r console\n",[249,708,709],{"__ignoreMap":556},[560,710,711,713,715,718,721,724,728,730],{"class":562,"line":563},[560,712,567],{"class":566},[560,714,571],{"class":570},[560,716,717],{"class":570}," --ignore-identifiers",[560,719,720],{"class":570}," --ignore-literals",[560,722,723],{"class":570}," --max-gap-lines",[560,725,727],{"class":726},"sbssI"," 1",[560,729,574],{"class":570},[560,731,732],{"class":570}," console\n",[550,734,737],{"className":735,"code":736,"language":592,"meta":556},[590],"Clone found (javascript, similar (gap) ~0.95)\n - src\u002Finvoice.js [1:1 - 12:2] (12 lines, 197 tokens)\n   src\u002Fprint\u002Finvoice.js [1:1 - 13:2]\nClone found (javascript)\n - src\u002Forders.js [1:1 - 12:2] (12 lines, 124 tokens)\n   src\u002Freports\u002Forders.js [1:1 - 12:2]\nClone found (javascript, renamed)\n - src\u002Freturns.js [1:1 - 10:2] (10 lines, 104 tokens)\n   src\u002Fshipping.js [1:1 - 10:2]\nFound 3 clones.\ntime: 6.764ms\n",[249,738,736],{"__ignoreMap":556},[245,740,741,742,320,744,746,747,750,751,753],{},"The table is shortened here: the real one has a row for every format in the scan, including the ones without clones (",[249,743,555],{},[249,745,444],{}," and ",[249,748,749],{},"python"," in this folder). ",[249,752,315],{}," prints the same headers with the source lines of both copies underneath.",[245,755,692,756,758,759,762,763,629],{},[249,757,340],{}," reporter drops the table and the code and factors the common path prefix out of each pair. A renamed clone gets ",[249,760,761],{},"(renamed)",", a near-miss clone its similarity and the mechanism that found it, a semantic clone ",[249,764,765],{},"[~0.78 semantic]",[550,767,769],{"className":552,"code":768,"filename":554,"language":555,"meta":556,"style":556},"jscpd . --ignore-identifiers --ignore-literals --max-gap-lines 1 -r ai\n",[249,770,771],{"__ignoreMap":556},[560,772,773,775,777,779,781,783,785,787],{"class":562,"line":563},[560,774,567],{"class":566},[560,776,571],{"class":570},[560,778,717],{"class":570},[560,780,720],{"class":570},[560,782,723],{"class":570},[560,784,727],{"class":726},[560,786,574],{"class":570},[560,788,789],{"class":570}," ai\n",[550,791,794],{"className":792,"code":793,"language":592,"meta":556},[590],"Clones:\nsrc\u002F invoice.js:1-12 ~ print\u002Finvoice.js:1-13 [~0.95 gap]\nsrc\u002F orders.js:1-12 ~ reports\u002Forders.js:1-12\nsrc\u002F returns.js:1-10 ~ shipping.js:1-10 (renamed)\n---\n3 clones · 17.7% duplication\n",[249,795,793],{"__ignoreMap":556},[245,797,798,799,802,803,805,806,810],{},"On the repository's ",[249,800,801],{},"fixtures\u002F"," tree (132 files, 91 clones) this came to about 1,100 tokens against about 5,400 for ",[249,804,259],{},". ",[807,808,809],"a",{"href":222},"AI token efficiency"," has a second measurement on the larger benchmark corpus.",[245,812,813,815,816,818],{},[249,814,354],{}," prints one line per clone in the shape build tools parse, and ",[249,817,370],{}," prints the summary line only:",[550,820,823],{"className":821,"code":822,"language":592,"meta":556},[590],"src\u002Finvoice.js:1:0: warning: Found 11 lines (1-12) duplicated on file src\u002Fprint\u002Finvoice.js (1-13)\nsrc\u002Forders.js:1:0: warning: Found 11 lines (1-12) duplicated on file src\u002Freports\u002Forders.js (1-12)\nsrc\u002Freturns.js:1:0: warning: Found 9 lines (1-10) duplicated on file src\u002Fshipping.js (1-10)\nFound 3 clones.\n",[249,824,822],{"__ignoreMap":556},[550,826,829],{"className":827,"code":828,"language":592,"meta":556},[590],"Duplications detection: Found 3 exact clones with 25(13.02%) duplicated lines in 9 (4 formats) files.\n",[249,830,828],{"__ignoreMap":556},[270,832,834],{"id":833},"how-kinds-and-gates-show-up","How kinds and gates show up",[245,836,692,837,840,841,746,844,846],{},[807,838,839],{"href":101},"kind of a clone",", a ",[807,842,843],{"href":46},"baseline",[249,845,391],{}," reach each format differently. The exit code is the same for all of them, and jscpd writes the files before the gates run, so a failing job still has its reports.",[275,848,849,866],{},[278,850,851],{},[281,852,853,855,858,861],{},[284,854,286],{},[284,856,857],{},"Kind of clone",[284,859,860],{},"New against a baseline",[284,862,863,864],{},"Over ",[249,865,391],{},[294,867,868,907,930,963,983,1005,1024],{},[281,869,870,876,891,900],{},[299,871,872,320,874],{},[249,873,259],{},[249,875,315],{},[299,877,878,879,320,882,320,885,320,888],{},"in the header: ",[249,880,881],{},"renamed",[249,883,884],{},"similar (gap) ~0.95",[249,886,887],{},"similar (ast) ~0.75",[249,889,890],{},"semantic ~0.78",[299,892,893,896,897],{},[249,894,895],{},"[NEW]"," after the header and ",[249,898,899],{},"Found 3 clones (2 new).",[299,901,902,903,906],{},"an ",[249,904,905],{},"ERROR:"," line, exit 1",[281,908,909,913,925,927],{},[299,910,911],{},[249,912,340],{},[299,914,915,320,917,320,920,320,923],{},[249,916,761],{},[249,918,919],{},"[~0.95 gap]",[249,921,922],{},"[~0.75 ast]",[249,924,765],{},[299,926,385],{},[299,928,929],{},"exit 1",[281,931,932,936,947,960],{},[299,933,934],{},[249,935,399],{},[299,937,938,320,941,320,944],{},[249,939,940],{},"kind",[249,942,943],{},"similarity",[249,945,946],{},"method",[299,948,949,952,953,746,956,959],{},[249,950,951],{},"isNew"," per clone, ",[249,954,955],{},"newClones",[249,957,958],{},"newDuplicatedLines"," in the statistics",[299,961,962],{},"nothing in the file, exit 1",[281,964,965,969,972,978],{},[299,966,967],{},[249,968,492],{},[299,970,971],{},"the rule id",[299,973,974,975],{},"level ",[249,976,977],{},"error",[299,979,980,981],{},"every result at level ",[249,982,977],{},[281,984,985,989,994,1000],{},[299,986,987],{},[249,988,507],{},[299,990,991],{},[249,992,993],{},"check_name",[299,995,996,997],{},"severity ",[249,998,999],{},"major",[299,1001,1002,1003],{},"every issue at ",[249,1004,999],{},[281,1006,1007,1011,1013,1021],{},[299,1008,1009],{},[249,1010,526],{},[299,1012,385],{},[299,1014,1015,320,1018],{},[249,1016,1017],{},"jscpd_new_clones",[249,1019,1020],{},"jscpd_new_duplicated_lines",[299,1022,1023],{},"nothing in the file",[281,1025,1026,1042,1044,1046],{},[299,1027,1028,320,1030,320,1032,320,1034,320,1036,320,1038,320,1040],{},[249,1029,459],{},[249,1031,414],{},[249,1033,429],{},[249,1035,444],{},[249,1037,474],{},[249,1039,354],{},[249,1041,370],{},[299,1043,385],{},[299,1045,385],{},[299,1047,1023],{},[245,1049,1050,1053],{},[249,1051,1052],{},"--kind"," narrows every reporter to the kinds you name, and the statistics follow the clones that are reported.",[270,1055,1057],{"id":1056},"other-modes","Other modes",[245,1059,1060],{},"The modes beside clone detection reuse the reporter names and write files of their own:",[275,1062,1063,1075],{},[278,1064,1065],{},[281,1066,1067,1070,1072],{},[284,1068,1069],{},"Mode",[284,1071,135],{},[284,1073,1074],{},"Files",[294,1076,1077,1109,1144,1180],{},[281,1078,1079,1086,1098],{},[299,1080,1081],{},[807,1082,1083],{"href":86},[249,1084,1085],{},"--compare",[299,1087,1088,320,1090,320,1092,320,1094,320,1096],{},[249,1089,259],{},[249,1091,315],{},[249,1093,399],{},[249,1095,444],{},[249,1097,459],{},[299,1099,1100,320,1103,320,1106],{},[249,1101,1102],{},"jscpd-compare.json",[249,1104,1105],{},"jscpd-compare.md",[249,1107,1108],{},"jscpd-compare.html",[281,1110,1111,1118,1130],{},[299,1112,1113],{},[807,1114,1115],{"href":76},[249,1116,1117],{},"--dashboard",[299,1119,1120,320,1122,320,1124,320,1126,320,1128],{},[249,1121,259],{},[249,1123,399],{},[249,1125,474],{},[249,1127,444],{},[249,1129,459],{},[299,1131,1132,320,1135,320,1138,320,1141],{},[249,1133,1134],{},"jscpd-dashboard.json",[249,1136,1137],{},"jscpd-dashboard.md",[249,1139,1140],{},"jscpd-dashboard.html",[249,1142,1143],{},"jscpd-health-badge.svg",[281,1145,1146,1153,1167],{},[299,1147,1148],{},[807,1149,1150],{"href":111},[249,1151,1152],{},"--health",[299,1154,1155,320,1157,320,1159,320,1161,320,1163,320,1165],{},[249,1156,259],{},[249,1158,340],{},[249,1160,399],{},[249,1162,474],{},[249,1164,444],{},[249,1166,459],{},[299,1168,1169,320,1172,320,1175,320,1178],{},[249,1170,1171],{},"jscpd-health.json",[249,1173,1174],{},"jscpd-health.md",[249,1176,1177],{},"jscpd-health.html",[249,1179,1143],{},[281,1181,1182,1187,1195],{},[299,1183,1184],{},[249,1185,1186],{},"--complexity",[299,1188,1189,320,1191,320,1193],{},[249,1190,259],{},[249,1192,340],{},[249,1194,399],{},[299,1196,1197],{},[249,1198,1199],{},"jscpd-complexity.json",[270,1201,1203],{"id":1202},"related","Related",[1205,1206,1207,1228,1239,1253],"ul",{},[1208,1209,1210,320,1213,320,1216,320,1218,320,1221,746,1224,1227],"li",{},[807,1211,1212],{"href":143},"HTML",[807,1214,1215],{"href":148},"JSON",[807,1217,474],{"href":153},[807,1219,1220],{"href":158},"SARIF",[807,1222,1223],{"href":163},"CodeClimate",[807,1225,1226],{"href":168},"OpenMetrics"," have a page each.",[1208,1229,1230,1232,1233,320,1235,1238],{},[807,1231,120],{"href":121}," for ",[249,1234,251],{},[249,1236,1237],{},"-o"," and every flag a reporter reads.",[1208,1240,1241,1243,1244,320,1246,746,1249,1252],{},[807,1242,130],{"href":131}," for what ",[249,1245,391],{},[249,1247,1248],{},"--exit-code",[249,1250,1251],{},"--fail-on-new-clones"," do to a run.",[1208,1254,1255,1258],{},[807,1256,1257],{"href":36},"CI"," for the workflows that collect these files.",[1260,1261,1262],"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 .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}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}",{"title":556,"searchDepth":616,"depth":616,"links":1264},[1265,1266,1267,1268,1269,1270],{"id":272,"depth":616,"text":273},{"id":547,"depth":616,"text":548},{"id":688,"depth":616,"text":689},{"id":833,"depth":616,"text":834},{"id":1056,"depth":616,"text":1057},{"id":1202,"depth":616,"text":1203},"The 15 reporters of jscpd, what each one writes, and which to pick for a terminal, a script, a merge request widget or a README.","md",null,{},{"icon":140},{"title":135,"description":1271},"LT_99c9PCkj0s46MnRc9XEYLYoV8XT7E-HTX0B5cWys",[1279,1281],{"title":130,"path":131,"stem":132,"description":1280,"icon":133,"children":-1},"What makes a jscpd run exit with 0, 1, 2 or a code of your own, and which flag controls each case.",{"title":142,"path":143,"stem":144,"description":1282,"icon":145,"children":-1},"One self-contained page with the statistics per format and the code of every clone, for reading a report in a browser.",1791302980518]