[{"data":1,"prerenderedAt":555},["ShallowReactive",2],{"navigation_docs":3,"trending-repo-morluto\u002Frea":239},[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",{"name":240,"url":241,"appearances":242,"latest":256},"morluto\u002Frea","https:\u002F\u002Fgithub.com\u002Fmorluto\u002Frea",[243],{"date":244,"rank":245,"stars":246,"starsToday":247,"headSha":248,"sources":249,"lines":250,"clones":251,"duplicatedLines":252,"percentage":253,"healthScore":254,"healthGrade":255},"2026-10-07",5,10290,2956,"da0970672da725dbb095ffcaefad07303ae85aab",1709,281798,529,7573,2.69,71.8,"B",{"date":244,"generatedAt":257,"name":240,"url":241,"description":258,"language":259,"stars":246,"starsToday":247,"defaultBranch":260,"headSha":248,"durationMs":261,"total":262,"formats":266,"topClones":329,"health":419,"complexity":459,"deadCode":510},"2026-10-07T05:32:04.506Z","Reverse engineer anything with agents, from app behavior down to native binaries.","TypeScript","main",1704,{"sources":249,"lines":250,"tokens":263,"clones":251,"duplicatedLines":252,"duplicatedTokens":264,"percentage":253,"percentageTokens":265},1676857,41455,2.47,[267,274,281,288,294,301,307,312,318,323],{"format":268,"sources":269,"lines":270,"clones":271,"duplicatedLines":272,"percentage":273},"typescript",1354,230762,442,5809,2.52,{"format":275,"sources":276,"lines":277,"clones":278,"duplicatedLines":279,"percentage":280},"javascript",155,23976,31,341,1.42,{"format":282,"sources":283,"lines":284,"clones":285,"duplicatedLines":286,"percentage":287},"json",25,2892,15,510,17.63,{"format":289,"sources":290,"lines":291,"clones":290,"duplicatedLines":292,"percentage":293},"txt",14,1399,657,46.96,{"format":295,"sources":296,"lines":297,"clones":298,"duplicatedLines":299,"percentage":300},"bash",33,1099,9,57,5.19,{"format":302,"sources":303,"lines":304,"clones":305,"duplicatedLines":303,"percentage":306},"markdown",60,11843,6,0.51,{"format":308,"sources":290,"lines":309,"clones":245,"duplicatedLines":310,"percentage":311},"yaml",1310,73,5.57,{"format":313,"sources":314,"lines":315,"clones":316,"duplicatedLines":285,"percentage":317},"java",8,4026,2,0.37,{"format":319,"sources":305,"lines":320,"clones":316,"duplicatedLines":321,"percentage":322},"python",2084,16,0.77,{"format":324,"sources":325,"lines":326,"clones":316,"duplicatedLines":327,"percentage":328},"markup",3,145,29,20,[330,341,352,360,368,378,385,392,400,409],{"format":268,"lines":331,"tokens":332,"firstFile":333,"secondFile":337},149,674,{"name":334,"start":335,"end":336},"tests\u002Fboundary\u002Fprocess\u002FjavascriptRuntimeReconciliationAmbiguity.test.ts",185,333,{"name":338,"start":339,"end":340},"tests\u002Fcomposition\u002Fruntime-observation\u002FjavascriptRuntimeReconciliation.test.ts",302,450,{"format":268,"lines":342,"tokens":343,"firstFile":344,"secondFile":348},100,551,{"name":345,"start":346,"end":347},"src\u002Fdomain\u002FjavascriptSemanticGraphQuery.test.ts",127,226,{"name":349,"start":350,"end":351},"src\u002Fdomain\u002FjavascriptSemanticGraphTraversal.test.ts",116,215,{"format":268,"lines":353,"tokens":354,"firstFile":355,"secondFile":358},109,540,{"name":356,"start":357,"end":353},"src\u002Fapplication\u002FReconstructionObligationLedger.authority.test.ts",1,{"name":359,"start":357,"end":353},"src\u002Fapplication\u002FReconstructionObligationLedger.closure.test.ts",{"format":289,"lines":361,"tokens":362,"firstFile":363,"secondFile":366},147,385,{"name":364,"start":305,"end":365},"tests\u002Ffixtures\u002Fnative-macos\u002Fnative-macho-header\u002Fotool-header-load.txt",152,{"name":367,"start":357,"end":361},"tests\u002Ffixtures\u002Fnative-macos\u002Fnative-macho-header\u002Fotool-load.txt",{"format":268,"lines":369,"tokens":370,"firstFile":371,"secondFile":374},70,350,{"name":372,"start":298,"end":373},"tests\u002Fboundary\u002Fmcp\u002FenhancedTools.06-rejects-incomplete-function-dossiers-at.test.ts",78,{"name":375,"start":376,"end":377},"tests\u002Fboundary\u002Fmcp\u002FenhancedToolsHarness.ts",23,92,{"format":268,"lines":379,"tokens":380,"firstFile":381,"secondFile":383},67,346,{"name":372,"start":325,"end":382},69,{"name":384,"start":325,"end":382},"tests\u002Fboundary\u002Fmcp\u002FenhancedTools.inputValidation.test.ts",{"format":268,"lines":373,"tokens":386,"firstFile":387,"secondFile":390},338,{"name":345,"start":388,"end":389},21,98,{"name":349,"start":328,"end":391},97,{"format":268,"lines":393,"tokens":394,"firstFile":395,"secondFile":397},63,285,{"name":396,"start":314,"end":369},"src\u002Fdomain\u002FprocessTraceAdapters.test.ts",{"name":398,"start":328,"end":399},"tests\u002Fboundary\u002Fmcp\u002FprocessTraceAdaptersParity.test.ts",80,{"format":268,"lines":401,"tokens":402,"firstFile":403,"secondFile":405},55,272,{"name":404,"start":285,"end":382},"src\u002Fbrowser\u002FPlaywrightElectronActiveActions.ts",{"name":406,"start":407,"end":408},"src\u002Fdomain\u002FelectronActiveObservation.ts",124,178,{"format":302,"lines":410,"tokens":411,"firstFile":412,"secondFile":416},17,249,{"name":413,"start":414,"end":415},"CHANGELOG.md:markdown",1346,1362,{"name":413,"start":417,"end":418},1395,1411,{"score":254,"grade":255,"size":420,"dimensions":424},{"lines":421,"files":422,"class":423},263653,1555,"L",[425,444,452],{"id":426,"source":427,"value":428,"adjusted":429,"lines":430,"halfLife":431,"formats":432,"excluded":440,"weight":357,"score":443},"duplication","jscpd",2.3,2.4,6187,8.5,[268,275,313,319,433,295,434,435,436,437,438,439],"cpp","c","swift","perl","cpp-header","objectivec","csharp",[324,441,442],"text","data",82.5,{"id":445,"source":427,"value":446,"adjusted":446,"lines":447,"halfLife":448,"coverage":449,"weight":450,"score":451},"dead-code",3.6,9311,7.5,97.5,0.975,71.6,{"id":453,"source":427,"value":454,"adjusted":455,"lines":456,"halfLife":457,"weight":357,"score":458},"complexity",33.8,33.7,89054,50,62.7,{"total":460,"mean":461,"files":462},37622,24.2,[463,467,472,477,482,487,492,496,501,506],{"path":464,"complexity":332,"lines":465,"bytes":466},"bridge\u002Fghidra\u002FReaGhidraBridge.java",3278,155748,{"path":468,"complexity":469,"lines":470,"bytes":471},"bridge\u002Fhopper_bridge.py",278,950,38297,{"path":473,"complexity":474,"lines":475,"bytes":476},"src\u002Fdomain\u002FjavascriptSemanticProjection.ts",248,638,22371,{"path":478,"complexity":479,"lines":480,"bytes":481},"src\u002Fdomain\u002FjavascriptStaticAnalysisHelpers.ts",214,523,18831,{"path":483,"complexity":484,"lines":485,"bytes":486},"scripts\u002Fverify-package-setup.mjs",202,794,25875,{"path":488,"complexity":489,"lines":490,"bytes":491},"scripts\u002Fverify-real-ghidra-assertions.mjs",192,457,15129,{"path":493,"complexity":365,"lines":494,"bytes":495},"src\u002Fapplication\u002FJavaScriptArtifactPathResolution.ts",575,19550,{"path":497,"complexity":498,"lines":499,"bytes":500},"src\u002Fapplication\u002FProcessSampling.ts",141,532,15588,{"path":502,"complexity":503,"lines":504,"bytes":505},"src\u002Fdomain\u002FjavascriptSemanticPromises.ts",136,476,15445,{"path":507,"complexity":503,"lines":508,"bytes":509},"src\u002Fdomain\u002FjavascriptSemanticValues.ts",506,17105,{"percentage":511,"findings":512,"files":513,"byCategory":514,"largest":526},3.62,75,1552,[515,518,521,524],{"category":516,"count":517},"unused-file",49,{"category":519,"count":520},"unused-export",18,{"category":522,"count":523},"unused-symbol",4,{"category":525,"count":523},"unused-import",[527,531,534,536,539,542,544,546,549,552],{"category":516,"path":528,"name":529,"line":357,"lines":530},"src\u002Fdomain\u002FjavascriptApplicationGraph.fixture.ts","",486,{"category":516,"path":532,"name":529,"line":357,"lines":533},"src\u002Fdotnet\u002FManagedPe.fixture.ts",460,{"category":516,"path":535,"name":529,"line":357,"lines":271},"src\u002Fcontracts\u002FreconstructionReadinessExample.ts",{"category":516,"path":537,"name":529,"line":357,"lines":538},"src\u002Fdomain\u002FconformanceTrustGate.ts",417,{"category":516,"path":540,"name":529,"line":357,"lines":541},"src\u002Fdomain\u002FreconstructionReadinessJourneyFindings.ts",401,{"category":516,"path":543,"name":529,"line":357,"lines":541},"src\u002FmcpDoctor.ts",{"category":516,"path":545,"name":529,"line":357,"lines":362},"src\u002Fdomain\u002FreconstructionReadinessIntegrityFindings.ts",{"category":516,"path":547,"name":529,"line":357,"lines":548},"src\u002Fdomain\u002FconformancePackage.ts",322,{"category":516,"path":550,"name":529,"line":357,"lines":551},"src\u002Fdomain\u002FreconstructionReadinessSchemas.ts",299,{"category":516,"path":553,"name":529,"line":357,"lines":554},"src\u002Fdomain\u002FappleApplication.ts",267,1791351210429]