[{"data":1,"prerenderedAt":475},["ShallowReactive",2],{"navigation_docs":3,"trending-repo-mvt-project\u002Fmvt":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":226},"mvt-project\u002Fmvt","https:\u002F\u002Fgithub.com\u002Fmvt-project\u002Fmvt",[192,205,212,221],{"date":193,"rank":194,"stars":195,"starsToday":196,"headSha":197,"sources":198,"lines":199,"clones":200,"duplicatedLines":201,"percentage":202,"healthScore":203,"healthGrade":204},"2026-09-22",6,13683,169,"e0697a58e977dc7035efe37363ea784ed8c6bc88",307,43851,281,4142,9.45,63.7,"C",{"date":206,"rank":207,"stars":208,"starsToday":209,"headSha":210,"sources":198,"lines":211,"clones":200,"duplicatedLines":201,"percentage":202,"healthScore":203,"healthGrade":204},"2026-09-23",5,14213,441,"777db67291876c026506e5a53c92b88e86f06626",43850,{"date":213,"rank":214,"stars":215,"starsToday":216,"headSha":210,"sources":198,"lines":217,"clones":200,"duplicatedLines":218,"percentage":219,"healthScore":220,"healthGrade":204},"2026-09-24",11,14524,543,42281,4423,10.46,62.4,{"date":222,"rank":223,"stars":224,"starsToday":225,"headSha":210,"sources":198,"lines":217,"clones":200,"duplicatedLines":218,"percentage":219,"healthScore":220,"healthGrade":204},"2026-09-25",7,14757,272,{"date":222,"generatedAt":227,"name":189,"url":190,"description":228,"language":229,"stars":224,"starsToday":225,"defaultBranch":230,"headSha":210,"durationMs":231,"total":232,"formats":236,"topClones":286,"health":371,"complexity":404,"deadCode":452},"2026-09-25T05:28:58.613Z","MVT (Mobile Verification Toolkit) helps with conducting forensics of mobile devices in order to find signs of a potential compromise.","Python","main",585,{"sources":198,"lines":217,"tokens":233,"clones":200,"duplicatedLines":218,"duplicatedTokens":234,"percentage":219,"percentageTokens":235},233649,24631,10.54,[237,244,250,257,263,268,273,276,279,282],{"format":238,"sources":239,"lines":240,"clones":241,"duplicatedLines":242,"percentage":243},"python",225,32935,260,3975,12.07,{"format":245,"sources":246,"lines":247,"clones":246,"duplicatedLines":248,"percentage":249},"txt",17,2283,390,17.08,{"format":251,"sources":252,"lines":253,"clones":254,"duplicatedLines":255,"percentage":256},"markdown",27,2485,2,22,0.89,{"format":258,"sources":207,"lines":259,"clones":260,"duplicatedLines":261,"percentage":262},"json",2900,1,18,0.62,{"format":264,"sources":265,"lines":266,"clones":260,"duplicatedLines":261,"percentage":267},"yaml",8,350,5.14,{"format":269,"sources":270,"lines":271,"clones":272,"duplicatedLines":272,"percentage":272},"bash",19,768,0,{"format":274,"sources":260,"lines":275,"clones":272,"duplicatedLines":272,"percentage":272},"protobuf",195,{"format":277,"sources":260,"lines":278,"clones":272,"duplicatedLines":272,"percentage":272},"perl",168,{"format":280,"sources":260,"lines":281,"clones":272,"duplicatedLines":272,"percentage":272},"toml",125,{"format":283,"sources":284,"lines":285,"clones":272,"duplicatedLines":272,"percentage":272},"text",3,72,[287,297,305,315,322,328,339,347,354,360],{"format":245,"lines":288,"tokens":289,"firstFile":290,"secondFile":293},104,950,{"name":291,"start":261,"end":292},"tests\u002Fartifacts\u002Fandroid_data\u002Fbugreport\u002Fdumpstate.txt",121,{"name":294,"start":295,"end":296},"tests\u002Fartifacts\u002Fandroidqf\u002Fdumpsys.txt",149,252,{"format":245,"lines":298,"tokens":299,"firstFile":300,"secondFile":303},100,890,{"name":291,"start":301,"end":302},20,119,{"name":304,"start":260,"end":298},"tests\u002Fartifacts\u002Fandroid_data\u002Fdumpsys_appops.txt",{"format":245,"lines":306,"tokens":307,"firstFile":308,"secondFile":311},38,407,{"name":291,"start":309,"end":310},142,179,{"name":312,"start":313,"end":314},"tests\u002Fartifacts\u002Fandroid_data\u002Fdumpsys_packages.txt",39,76,{"format":245,"lines":316,"tokens":317,"firstFile":318,"secondFile":320},13,322,{"name":319,"start":260,"end":316},"tests\u002Fartifacts\u002Fandroid_data\u002Fdumpsys_adb.txt",{"name":294,"start":296,"end":321},264,{"format":245,"lines":323,"tokens":324,"firstFile":325,"secondFile":326},10,289,{"name":319,"start":260,"end":323},{"name":327,"start":260,"end":323},"tests\u002Fartifacts\u002Fandroid_data\u002Fdumpsys_adb_wifi.txt",{"format":238,"lines":329,"tokens":330,"firstFile":331,"secondFile":335},66,280,{"name":332,"start":333,"end":334},"src\u002Fmvt\u002Fandroid\u002Fcli.py",52,117,{"name":336,"start":337,"end":338},"src\u002Fmvt\u002Fios\u002Fcli.py",64,129,{"format":245,"lines":246,"tokens":340,"firstFile":341,"secondFile":344},271,{"name":291,"start":342,"end":343},250,266,{"name":294,"start":345,"end":346},383,399,{"format":238,"lines":348,"tokens":349,"firstFile":350,"secondFile":352},36,245,{"name":351,"start":260,"end":348},"tests\u002Fandroid_androidqf\u002Ftest_tcc.py",{"name":353,"start":260,"end":348},"tests\u002Fios_backup\u002Ftest_tcc.py",{"format":245,"lines":355,"tokens":239,"firstFile":356,"secondFile":358},16,{"name":291,"start":357,"end":343},251,{"name":359,"start":260,"end":355},"tests\u002Fartifacts\u002Fandroid_data\u002Fdumpsys_platform_compat.txt",{"format":238,"lines":361,"tokens":362,"firstFile":363,"secondFile":367},34,190,{"name":364,"start":365,"end":366},"src\u002Fmvt\u002Fandroid\u002Fcmd_check_androidqf.py",41,74,{"name":368,"start":369,"end":370},"src\u002Fmvt\u002Fandroid\u002Fcmd_check_backup.py",35,68,{"score":220,"grade":204,"size":372,"dimensions":376},{"lines":373,"files":374,"class":375},33682,231,"M",[377,388,397],{"id":378,"source":379,"value":380,"adjusted":381,"lines":242,"halfLife":382,"formats":383,"excluded":384,"weight":260,"score":387},"duplication","jscpd",11.8,11.3,8.5,[238,269,277],[385,283,386],"markup","data",39.7,{"id":389,"source":379,"value":390,"adjusted":391,"lines":392,"halfLife":393,"coverage":394,"weight":395,"score":396},"dead-code",1.2,1.3,400,7.5,97.9,0.979,88.5,{"id":398,"source":379,"value":399,"adjusted":400,"lines":401,"halfLife":402,"weight":260,"score":403},"complexity",26.3,26,8856,50,69.7,{"total":405,"mean":406,"files":407},4070,17.6,[408,412,417,421,426,431,436,440,444,448],{"path":409,"complexity":309,"lines":410,"bytes":411},"src\u002Fmvt\u002Fcommon\u002Fcommand.py",797,30381,{"path":413,"complexity":414,"lines":415,"bytes":416},"src\u002Fmvt\u002Fcommon\u002Fupdates.py",130,680,23395,{"path":418,"complexity":334,"lines":419,"bytes":420},"src\u002Fmvt\u002Fcommon\u002Findicators.py",809,29648,{"path":422,"complexity":423,"lines":424,"bytes":425},"src\u002Fmvt\u002Fandroid\u002Fmodules\u002Fintrusion_logs\u002Fsecurity_event.py",111,789,33096,{"path":427,"complexity":428,"lines":429,"bytes":430},"src\u002Fmvt\u002Fcommon\u002Fmodule_loader.py",87,414,14346,{"path":432,"complexity":433,"lines":434,"bytes":435},"tests\u002Fcommon\u002Ftest_command.py",84,880,29673,{"path":437,"complexity":366,"lines":438,"bytes":439},"src\u002Fmvt\u002Fios\u002Fmodules\u002Fmixed\u002Finteractionc.py",550,23410,{"path":364,"complexity":441,"lines":442,"bytes":443},71,397,14040,{"path":445,"complexity":329,"lines":446,"bytes":447},"src\u002Fmvt\u002Fios\u002Fdecrypt.py",490,17973,{"path":449,"complexity":329,"lines":450,"bytes":451},"tests\u002Fcommon\u002Ftest_plugin_updates.py",711,22127,{"percentage":453,"findings":454,"files":455,"byCategory":456,"largest":461},1.21,4,246,[457,459],{"category":458,"count":254},"unused-file",{"category":460,"count":254},"unused-export",[462,466,469,473],{"category":458,"path":463,"name":464,"line":260,"lines":465},"src\u002Fmvt\u002Fcommon\u002Fplugin_config.py","",299,{"category":458,"path":467,"name":464,"line":260,"lines":468},"src\u002Fmvt\u002Fplugin.py",80,{"category":460,"path":470,"name":471,"line":472,"lines":301},"src\u002Fmvt\u002Fandroid\u002Fparsers\u002Fbackup.py","parse_tar_for_sms",203,{"category":460,"path":470,"name":474,"line":246,"lines":260},"PBKDF2_KEY_SIZE",1790314227057]