[{"data":1,"prerenderedAt":547},["ShallowReactive",2],{"navigation_docs":3,"trending-repo-alibaba\u002Fopen-code-review":188},[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",{"name":189,"url":190,"appearances":191,"latest":258},"alibaba\u002Fopen-code-review","https:\u002F\u002Fgithub.com\u002Falibaba\u002Fopen-code-review",[192,204,215,226,236,245],{"date":193,"rank":194,"stars":195,"starsToday":196,"headSha":197,"sources":198,"lines":199,"clones":200,"duplicatedLines":201,"percentage":202,"healthScore":203,"healthGrade":203},"2026-09-14",11,23782,443,"78a6978296a3c0cdfbe87d2e9ce911591032da3c",900,226403,998,29020,12.82,null,{"date":205,"rank":206,"stars":207,"starsToday":208,"headSha":209,"sources":210,"lines":211,"clones":212,"duplicatedLines":213,"percentage":214,"healthScore":203,"healthGrade":203},"2026-09-15",2,26278,1571,"e0bab8e03ac41554e46508a19fbbdd0ab117d820",901,227245,1002,29105,12.81,{"date":216,"rank":217,"stars":218,"starsToday":219,"headSha":220,"sources":221,"lines":222,"clones":223,"duplicatedLines":224,"percentage":225,"healthScore":203,"healthGrade":203},"2026-09-16",1,29206,2756,"a694be568d9b9a935b2ba11a867d5a91d7ffd833",908,229032,1150,31651,13.82,{"date":227,"rank":217,"stars":228,"starsToday":229,"headSha":230,"sources":231,"lines":232,"clones":233,"duplicatedLines":234,"percentage":235,"healthScore":203,"healthGrade":203},"2026-09-17",32553,3231,"8316e0d443ffcd8002d82f7549ee4acb3d1aa3c4",910,230053,1154,31499,13.69,{"date":237,"rank":217,"stars":238,"starsToday":239,"headSha":240,"sources":241,"lines":242,"clones":243,"duplicatedLines":244,"percentage":235,"healthScore":203,"healthGrade":203},"2026-09-18",35378,3286,"78c0765d2f69f944bcae7d06d6140986916ea7f6",914,233934,1186,32020,{"date":246,"rank":247,"stars":248,"starsToday":249,"headSha":250,"sources":251,"lines":252,"clones":253,"duplicatedLines":254,"percentage":255,"healthScore":256,"healthGrade":257},"2026-09-19",3,36861,2704,"85cecfe5f935da2b2aae8f91ce4fee8ed343a681",984,242456,1191,32079,13.23,50.7,"D",{"date":246,"generatedAt":259,"name":189,"url":190,"description":260,"language":261,"stars":248,"starsToday":249,"defaultBranch":262,"headSha":250,"durationMs":263,"total":264,"formats":268,"topClones":337,"health":416,"complexity":451,"deadCode":505},"2026-09-19T05:26:25.682Z","Secure, fast, efficient, battle-tested at Alibaba's scale. Hybrid architecture code review tool: deterministic pipelines + LLM Agent, precise line-level comments, built-in multi-language ruleset (NPE, thread-safety, XSS, SQL injection), OpenAI & Anthropic compatible.","Go","main",1461,{"sources":251,"lines":252,"tokens":265,"clones":253,"duplicatedLines":254,"duplicatedTokens":266,"percentage":255,"percentageTokens":267},1398497,109778,7.85,[269,276,283,290,297,304,311,318,324,331],{"format":270,"sources":271,"lines":272,"clones":273,"duplicatedLines":274,"percentage":275},"go",337,107344,844,8173,7.61,{"format":277,"sources":278,"lines":279,"clones":280,"duplicatedLines":281,"percentage":282},"javascript",25,16667,79,827,4.96,{"format":284,"sources":285,"lines":286,"clones":287,"duplicatedLines":288,"percentage":289},"bash",102,19838,70,9029,45.51,{"format":291,"sources":292,"lines":293,"clones":294,"duplicatedLines":295,"percentage":296},"markdown",185,34432,68,1320,3.83,{"format":298,"sources":299,"lines":300,"clones":301,"duplicatedLines":302,"percentage":303},"text",46,11496,32,5585,48.58,{"format":305,"sources":306,"lines":307,"clones":308,"duplicatedLines":309,"percentage":310},"tsx",51,6289,27,294,4.67,{"format":312,"sources":313,"lines":314,"clones":315,"duplicatedLines":316,"percentage":317},"yaml",45,8265,18,3361,40.67,{"format":319,"sources":320,"lines":321,"clones":320,"duplicatedLines":322,"percentage":323},"python",13,7765,137,1.76,{"format":325,"sources":326,"lines":327,"clones":328,"duplicatedLines":329,"percentage":330},"json",48,6934,12,2265,32.67,{"format":332,"sources":333,"lines":334,"clones":194,"duplicatedLines":335,"percentage":336},"typescript",55,7743,103,1.33,[338,348,358,367,377,382,392,397,403,407],{"format":291,"lines":339,"tokens":340,"firstFile":341,"secondFile":345},232,2450,{"name":342,"start":343,"end":344},"plugins\u002Fopen-code-review\u002Fskills\u002Fopen-code-review\u002FSKILL.md:markdown",30,261,{"name":346,"start":278,"end":347},"skills\u002Fopen-code-review\u002FSKILL.md:markdown",256,{"format":291,"lines":349,"tokens":350,"firstFile":351,"secondFile":355},163,1588,{"name":352,"start":353,"end":354},"plugins\u002Fopen-code-review\u002Fskills\u002Fopen-code-review-delegate\u002FSKILL.md:markdown",28,190,{"name":356,"start":357,"end":292},"skills\u002Fopen-code-review-delegate\u002FSKILL.md:markdown",23,{"format":298,"lines":359,"tokens":360,"firstFile":361,"secondFile":364},637,719,{"name":362,"start":320,"end":363},"pages\u002Fsrc\u002Fcontent\u002Fdocs\u002Fen\u002Fcli-reference.md:text",649,{"name":365,"start":328,"end":366},"pages\u002Fsrc\u002Fcontent\u002Fdocs\u002Fko\u002Fcli-reference.md:text",630,{"format":298,"lines":368,"tokens":369,"firstFile":370,"secondFile":374},581,693,{"name":371,"start":372,"end":373},"pages\u002Fsrc\u002Fcontent\u002Fdocs\u002Fja\u002Fcli-reference.md:text",22,602,{"name":375,"start":357,"end":376},"pages\u002Fsrc\u002Fcontent\u002Fdocs\u002Fru\u002Fcli-reference.md:text",631,{"format":298,"lines":368,"tokens":369,"firstFile":378,"secondFile":379},{"name":371,"start":372,"end":373},{"name":380,"start":372,"end":381},"pages\u002Fsrc\u002Fcontent\u002Fdocs\u002Fzh\u002Fcli-reference.md:text",611,{"format":291,"lines":383,"tokens":384,"firstFile":385,"secondFile":388},24,588,{"name":386,"start":326,"end":387},"pages\u002Fsrc\u002Fcontent\u002Fdocs\u002Fen\u002Fconfiguration.md:markdown",71,{"name":389,"start":390,"end":391},"pages\u002Fsrc\u002Fcontent\u002Fdocs\u002Fko\u002Fconfiguration.md:markdown",44,67,{"format":291,"lines":383,"tokens":384,"firstFile":393,"secondFile":394},{"name":386,"start":326,"end":387},{"name":395,"start":306,"end":396},"pages\u002Fsrc\u002Fcontent\u002Fdocs\u002Fru\u002Fconfiguration.md:markdown",74,{"format":291,"lines":383,"tokens":384,"firstFile":398,"secondFile":401},{"name":399,"start":299,"end":400},"pages\u002Fsrc\u002Fcontent\u002Fdocs\u002Fja\u002Fconfiguration.md:markdown",69,{"name":402,"start":313,"end":294},"pages\u002Fsrc\u002Fcontent\u002Fdocs\u002Fzh\u002Fconfiguration.md:markdown",{"format":291,"lines":383,"tokens":404,"firstFile":405,"secondFile":406},587,{"name":386,"start":326,"end":387},{"name":399,"start":299,"end":400},{"format":312,"lines":408,"tokens":409,"firstFile":410,"secondFile":413},527,511,{"name":411,"start":206,"end":412},"pages\u002Fsrc\u002Fcontent\u002Fdocs\u002Fen\u002Fintegrations\u002Fci.md:yaml",528,{"name":414,"start":206,"end":415},"pages\u002Fsrc\u002Fcontent\u002Fdocs\u002Fja\u002Fintegrations\u002Fci.md:yaml",429,{"score":256,"grade":257,"size":417,"dimensions":421},{"lines":418,"files":419,"class":420},158547,556,"L",[422,436,444],{"id":423,"source":424,"value":425,"adjusted":425,"lines":426,"halfLife":427,"formats":428,"excluded":432,"weight":217,"score":435},"duplication","jscpd",5.9,9031,8.5,[270,277,429,332,305,319,284,430,431],"kotlin","perl","powershell",[433,298,434],"markup","data",61.9,{"id":437,"source":424,"value":438,"adjusted":439,"lines":440,"halfLife":441,"coverage":357,"weight":442,"score":443},"dead-code",6.2,6,2243,7.5,0.23,57.4,{"id":445,"source":424,"value":446,"adjusted":447,"lines":448,"halfLife":449,"weight":217,"score":450},"complexity",66,65.4,104590,50,40.4,{"total":452,"mean":453,"files":454},26194,47.1,[455,460,465,470,475,480,485,490,495,500],{"path":456,"complexity":457,"lines":458,"bytes":459},"cmd\u002Fopencodereview\u002Fprovider_tui.go",702,3142,89632,{"path":461,"complexity":462,"lines":463,"bytes":464},"scripts\u002Fgithub-actions\u002Fpost-review-comments.js",686,3233,149802,{"path":466,"complexity":467,"lines":468,"bytes":469},"scripts\u002Fgithub-actions\u002Fpost-review-comments.test.js",619,6502,302866,{"path":471,"complexity":472,"lines":473,"bytes":474},"cmd\u002Fopencodereview\u002Fprovider_tui_test.go",524,3073,88806,{"path":476,"complexity":477,"lines":478,"bytes":479},"cmd\u002Fopencodereview\u002Fconfig_cmd_test.go",440,1696,53079,{"path":481,"complexity":482,"lines":483,"bytes":484},"internal\u002Fllm\u002Fresolver_test.go",425,2624,77322,{"path":486,"complexity":487,"lines":488,"bytes":489},"internal\u002Fconfig\u002Frules\u002Fsystem_rules_test.go",419,2042,65490,{"path":491,"complexity":492,"lines":493,"bytes":494},"cmd\u002Fopencodereview\u002Fprovider_tui_funcs_test.go",418,2227,63184,{"path":496,"complexity":497,"lines":498,"bytes":499},"examples\u002Fgitlab_ci\u002Fpost_review.py",377,1552,63916,{"path":501,"complexity":502,"lines":503,"bytes":504},"internal\u002Fagent\u002Fagent.go",341,2205,85043,{"percentage":506,"findings":315,"files":507,"byCategory":508,"largest":516},6.16,153,[509,512,514],{"category":510,"count":511},"unused-file",14,{"category":513,"count":247},"unused-export",{"category":515,"count":217},"unused-symbol",[517,521,524,527,530,533,536,539,541,544],{"category":510,"path":518,"name":519,"line":217,"lines":520},"extensions\u002Ffrontend\u002Fsrc\u002Fwebview\u002Fviews\u002FConfigView.tsx","",572,{"category":510,"path":522,"name":519,"line":217,"lines":523},"plugins\u002Fopen-code-review\u002Fopencode\u002Fopen-code-review.ts",566,{"category":510,"path":525,"name":519,"line":217,"lines":526},"internal\u002Fviewer\u002Fstatic\u002Fsession.js",290,{"category":510,"path":528,"name":519,"line":217,"lines":529},"extensions\u002Ffrontend\u002Fsrc\u002Fwebview\u002Fcomponents\u002FEnvSetupGuide.tsx",218,{"category":510,"path":531,"name":519,"line":217,"lines":532},"extensions\u002Ffrontend\u002Fsrc\u002Fwebview\u002FconfigStore.ts",114,{"category":510,"path":534,"name":519,"line":217,"lines":535},"internal\u002Fviewer\u002Fstatic\u002Fpager.js",107,{"category":510,"path":537,"name":519,"line":217,"lines":538},"extensions\u002Ffrontend\u002Fsrc\u002Fwebview\u002Fcomponents\u002FCustomProviderManager.tsx",76,{"category":510,"path":540,"name":519,"line":217,"lines":396},"extensions\u002Ffrontend\u002Fsrc\u002Fwebview\u002FConfigPanelApp.tsx",{"category":510,"path":542,"name":519,"line":217,"lines":543},"extensions\u002Ffrontend\u002Fsrc\u002Fwebview\u002Fbridge.idea.ts",60,{"category":510,"path":545,"name":519,"line":217,"lines":546},"extensions\u002Ffrontend\u002Fsrc\u002Fwebview\u002Fcomponents\u002FPasswordInput.tsx",58,1790314224720]