[{"data":1,"prerenderedAt":939},["ShallowReactive",2],{"navigation_docs":3,"trending-repo-we-promise\u002Fsure":249,"page-views-\u002Ftrending\u002Fwe-promise\u002Fsure":937},[4,29,104,124,194],{"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,94,99],{"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,"path":96,"stem":97,"icon":98},"Similar functions","\u002Fguides\u002Fsimilarity","2.guides\u002F13.similarity","i-lucide-list-tree",{"title":100,"path":101,"stem":102,"icon":103},"Boundaries","\u002Fguides\u002Fboundaries","2.guides\u002F14.boundaries","i-lucide-fence",{"title":105,"icon":6,"path":106,"stem":107,"children":108,"page":6},"Concepts","\u002Fconcepts","3.concepts",[109,114,119],{"title":110,"path":111,"stem":112,"icon":113},"Types of code clones","\u002Fconcepts\u002Fclone-types","3.concepts\u002F1.clone-types","i-lucide-copy",{"title":115,"path":116,"stem":117,"icon":118},"How detection works","\u002Fconcepts\u002Fhow-detection-works","3.concepts\u002F2.how-detection-works","i-lucide-scan-search",{"title":120,"path":121,"stem":122,"icon":123},"The health score","\u002Fconcepts\u002Fhealth-score","3.concepts\u002F3.health-score","i-lucide-heart-pulse",{"title":125,"icon":6,"path":126,"stem":127,"children":128,"page":6},"Reference","\u002Freference","4.reference",[129,134,139,144,181,186,190],{"title":130,"path":131,"stem":132,"icon":133},"CLI options","\u002Freference\u002Fcli","4.reference\u002F1.cli","i-lucide-terminal",{"title":135,"path":136,"stem":137,"icon":138},"The config file","\u002Freference\u002Fconfig-file","4.reference\u002F2.config-file","i-lucide-settings",{"title":140,"path":141,"stem":142,"icon":143},"Exit codes","\u002Freference\u002Fexit-codes","4.reference\u002F3.exit-codes","i-lucide-log-out",{"title":145,"icon":6,"path":146,"stem":147,"children":148},"Reporters","\u002Freference\u002Freporters","4.reference\u002F4.reporters\u002Findex",[149,151,156,161,166,171,176],{"title":145,"path":146,"stem":147,"icon":150},"i-lucide-file-chart-column",{"title":152,"path":153,"stem":154,"icon":155},"HTML reporter","\u002Freference\u002Freporters\u002Fhtml","4.reference\u002F4.reporters\u002F2.html","i-lucide-file-code",{"title":157,"path":158,"stem":159,"icon":160},"JSON reporter","\u002Freference\u002Freporters\u002Fjson","4.reference\u002F4.reporters\u002F3.json","i-lucide-braces",{"title":162,"path":163,"stem":164,"icon":165},"Badge reporter","\u002Freference\u002Freporters\u002Fbadge","4.reference\u002F4.reporters\u002F4.badge","i-lucide-award",{"title":167,"path":168,"stem":169,"icon":170},"SARIF reporter","\u002Freference\u002Freporters\u002Fsarif","4.reference\u002F4.reporters\u002F5.sarif","i-lucide-shield-check",{"title":172,"path":173,"stem":174,"icon":175},"CodeClimate reporter","\u002Freference\u002Freporters\u002Fcodeclimate","4.reference\u002F4.reporters\u002F6.codeclimate","i-lucide-flag-triangle-right",{"title":177,"path":178,"stem":179,"icon":180},"OpenMetrics reporter","\u002Freference\u002Freporters\u002Fopenmetrics","4.reference\u002F4.reporters\u002F7.openmetrics","i-lucide-activity",{"title":182,"path":183,"stem":184,"icon":185},"Supported formats","\u002Freference\u002Fsupported-formats","4.reference\u002F5.supported-formats","i-lucide-languages",{"title":187,"path":188,"stem":189,"icon":38},"GitHub Action","\u002Freference\u002Fgithub-action","4.reference\u002F6.github-action",{"title":191,"path":192,"stem":193,"icon":68},"Rust crates","\u002Freference\u002Frust-crates","4.reference\u002F7.rust-crates",{"title":195,"icon":6,"path":196,"stem":197,"children":198,"page":6},"Project","\u002Fproject","5.project",[199,204,209,214,239,244],{"title":200,"path":201,"stem":202,"icon":203},"Changelog","\u002Fproject\u002Fchangelog","5.project\u002F1.changelog","i-lucide-scroll-text",{"title":205,"path":206,"stem":207,"icon":208},"Migrating from v4 to v5","\u002Fproject\u002Fmigration","5.project\u002F2.migration","i-lucide-arrow-right-left",{"title":210,"path":211,"stem":212,"icon":213},"jscpd v4 (TypeScript)","\u002Fproject\u002Fv4","5.project\u002F3.v4","i-simple-icons-typescript",{"title":215,"icon":6,"path":216,"stem":217,"children":218},"Benchmarks","\u002Fproject\u002Fbenchmarks","5.project\u002F4.benchmarks\u002Findex",[219,221,226,230,235],{"title":215,"path":216,"stem":217,"icon":220},"i-lucide-gauge",{"title":222,"path":223,"stem":224,"icon":225},"Detection Speed","\u002Fproject\u002Fbenchmarks\u002Fdetection-speed","5.project\u002F4.benchmarks\u002F2.detection-speed","i-lucide-zap",{"title":227,"path":228,"stem":229,"icon":58},"Multi-Format Detection","\u002Fproject\u002Fbenchmarks\u002Fcross-format","5.project\u002F4.benchmarks\u002F3.cross-format",{"title":231,"path":232,"stem":233,"icon":234},"AI Token Efficiency","\u002Fproject\u002Fbenchmarks\u002Fai-token-efficiency","5.project\u002F4.benchmarks\u002F4.ai-token-efficiency","i-lucide-sparkles",{"title":236,"path":237,"stem":238,"icon":93},"Embedding Models","\u002Fproject\u002Fbenchmarks\u002Fembedding-models","5.project\u002F4.benchmarks\u002F5.embedding-models",{"title":240,"path":241,"stem":242,"icon":243},"Research","\u002Fproject\u002Fresearch","5.project\u002F5.research","i-lucide-graduation-cap",{"title":245,"path":246,"stem":247,"icon":248},"Articles","\u002Fproject\u002Farticles","5.project\u002F6.articles","i-lucide-newspaper",{"name":250,"url":251,"appearances":252,"latest":268},"we-promise\u002Fsure","https:\u002F\u002Fgithub.com\u002Fwe-promise\u002Fsure",[253],{"date":254,"rank":255,"stars":256,"starsToday":257,"headSha":258,"sources":259,"lines":260,"clones":261,"duplicatedLines":262,"percentage":263,"codePercentage":264,"codeSources":265,"healthScore":266,"healthGrade":267},"2026-11-11",5,12170,159,"264bbf7cb71da65448ab74e4a650a1540dd0d3c4",6549,887618,3254,49209,5.54,3.02,1957,66.5,"C",{"date":254,"generatedAt":269,"name":250,"url":251,"description":270,"language":271,"stars":256,"starsToday":257,"defaultBranch":272,"headSha":258,"durationMs":273,"total":274,"formats":278,"topClones":345,"code":584,"health":816,"complexity":848,"deadCode":902},"2026-11-11T05:21:30.833Z","The personal finance app for everyone (by everyone)","Ruby","main",5053,{"sources":259,"lines":260,"tokens":275,"clones":261,"duplicatedLines":262,"duplicatedTokens":276,"percentage":263,"percentageTokens":277},4760558,259671,5.45,[279,286,293,300,307,314,321,327,334,340],{"format":280,"sources":281,"lines":282,"clones":283,"duplicatedLines":284,"percentage":285},"ruby",2927,513214,1823,22894,4.46,{"format":287,"sources":288,"lines":289,"clones":290,"duplicatedLines":291,"percentage":292},"erb",815,49190,662,6967,14.16,{"format":294,"sources":295,"lines":296,"clones":297,"duplicatedLines":298,"percentage":299},"yaml",2268,239639,620,16941,7.07,{"format":301,"sources":302,"lines":303,"clones":304,"duplicatedLines":305,"percentage":306},"dart",154,36710,70,872,2.38,{"format":308,"sources":309,"lines":310,"clones":311,"duplicatedLines":312,"percentage":313},"javascript",168,21843,36,980,4.49,{"format":315,"sources":316,"lines":317,"clones":318,"duplicatedLines":319,"percentage":320},"markup",41,1294,30,415,32.07,{"format":322,"sources":304,"lines":323,"clones":324,"duplicatedLines":325,"percentage":326},"markdown",16178,9,87,0.54,{"format":328,"sources":329,"lines":330,"clones":331,"duplicatedLines":332,"percentage":333},"json",19,2125,2,42,1.98,{"format":335,"sources":336,"lines":337,"clones":338,"duplicatedLines":331,"percentage":339},"bash",17,1832,1,0.11,{"format":341,"sources":342,"lines":343,"clones":338,"duplicatedLines":324,"percentage":344},"css",12,1827,0.49,[346,369,414,458,471,491,519,547,568,577],{"format":308,"lines":347,"tokens":348,"first":349,"others":353,"copies":331,"excerpt":358,"kind":368},255,1493,{"name":350,"start":351,"end":352},"app\u002Fjavascript\u002Fcontrollers\u002Fpreview_sankey_chart_controller.js",364,618,[354],{"name":355,"start":356,"end":357},"app\u002Fjavascript\u002Fcontrollers\u002Fsankey_chart_controller.js",303,557,{"lines":359,"total":347},[360,361,362,363,364,365,362,366,367,362],"  return `${this.gradientPrefix}-link-gradient-${link.source.index}-${link.target.index}-${index}`;","}","","#colorWithOpacity(nodeColor, opacity = 0.1) {","  const defaultColor = this.constructor.DEFAULT_COLOR;","  let colorStr = nodeColor || defaultColor;","  \u002F\u002F Map CSS variables to hex values for d3 color manipulation","  colorStr = this.constructor.CSS_VAR_MAP[colorStr] || colorStr;","code",{"format":280,"lines":324,"tokens":370,"first":371,"others":374,"copies":391,"excerpt":392,"excerptSecond":403,"kind":413},58,{"name":372,"start":255,"end":373},"spec\u002Frequests\u002Fapi\u002Fv1\u002Faccount_statements_spec.rb",13,[375,377,379,381,383,385,387,389],{"name":376,"start":255,"end":329},"spec\u002Frequests\u002Fapi\u002Fv1\u002Faccounts_spec.rb",{"name":378,"start":255,"end":329},"spec\u002Frequests\u002Fapi\u002Fv1\u002Fbalance_sheet_spec.rb",{"name":380,"start":255,"end":329},"spec\u002Frequests\u002Fapi\u002Fv1\u002Fbalances_spec.rb",{"name":382,"start":255,"end":329},"spec\u002Frequests\u002Fapi\u002Fv1\u002Fbudget_categories_spec.rb",{"name":384,"start":255,"end":329},"spec\u002Frequests\u002Fapi\u002Fv1\u002Fbudgets_spec.rb",{"name":386,"start":255,"end":329},"spec\u002Frequests\u002Fapi\u002Fv1\u002Fcash_flow_spec.rb",{"name":388,"start":255,"end":329},"spec\u002Frequests\u002Fapi\u002Fv1\u002Fcategories_spec.rb",{"name":390,"start":255,"end":329},"spec\u002Frequests\u002Fapi\u002Fv1\u002Fchats_spec.rb",25,{"lines":393,"total":324},[394,395,396,397,398,399,400,401,402],"RSpec.describe 'API V1 Account Statements', type: :request do","  let(:family) do","    Family.create!(name: 'API Family', currency: 'USD', locale: 'en', date_format: '%m-%d-%Y')","  end","  let(:user) do","    family.users.create!(","      email: 'api-user@example.com',","      password: 'password123',","      password_confirmation: 'password123',",{"lines":404,"total":412},[405,395,406,407,408,409,410,411,397,362],"RSpec.describe 'API V1 Accounts', type: :request do","    Family.create!(","      name: 'API Family',","      currency: 'USD',","      locale: 'en',","      date_format: '%m-%d-%Y'","    )",15,"tests",{"format":280,"lines":415,"tokens":416,"first":417,"others":421,"copies":446,"excerpt":447,"kind":413},11,132,{"name":418,"start":419,"end":420},"test\u002Fmodels\u002Fkraken_item\u002Fimporter_test.rb",128,138,[422,425,428,431,434,437,440,443],{"name":418,"start":423,"end":424},153,163,{"name":418,"start":426,"end":427},180,190,{"name":418,"start":429,"end":430},211,221,{"name":418,"start":432,"end":433},239,249,{"name":418,"start":435,"end":436},313,323,{"name":418,"start":438,"end":439},376,386,{"name":418,"start":441,"end":442},404,414,{"name":418,"start":444,"end":445},432,442,10,{"lines":448,"total":415},[449,450,451,452,453,454,455,456,452,457],"@provider.stubs(:get_asset_info).returns(asset_metadata)","@provider.stubs(:get_extended_balance).returns(","  \"ZUSD\" => { \"balance\" => \"50.0\", \"credit\" => \"0\", \"credit_used\" => \"0\", \"hold_trade\" => \"0\" }",")","@provider.stubs(:get_earn_allocations).returns(","  \"items\" => [","    { \"native_asset\" => \"XXBT\", \"amount_allocated\" => { \"total\" => { \"native\" => \"2.0\" } } }","  ]","@provider.stubs(:get_ticker).with(\"XBTUSD\").returns(\"XXBTZUSD\" => { \"c\" => [ \"50000.00\" ] })",{"format":294,"lines":459,"tokens":460,"first":461,"others":464,"copies":469,"kind":470},133,524,{"name":462,"start":331,"end":463},"config\u002Flocales\u002Fdefaults\u002Fes-AR.yml",134,[465,467],{"name":466,"start":331,"end":463},"config\u002Flocales\u002Fdefaults\u002Fes-CR.yml",{"name":468,"start":331,"end":463},"config\u002Flocales\u002Fdefaults\u002Fes-NI.yml",3,"translations",{"format":280,"lines":472,"tokens":473,"first":474,"others":477,"copies":342,"kind":413},29,95,{"name":376,"start":475,"end":476},6,34,[478,479,480,481,483,485,487,489],{"name":378,"start":475,"end":476},{"name":386,"start":475,"end":476},{"name":388,"start":475,"end":476},{"name":482,"start":475,"end":476},"spec\u002Frequests\u002Fapi\u002Fv1\u002Fholdings_spec.rb",{"name":484,"start":475,"end":476},"spec\u002Frequests\u002Fapi\u002Fv1\u002Fmerchants_spec.rb",{"name":486,"start":475,"end":476},"spec\u002Frequests\u002Fapi\u002Fv1\u002Frecurring_transactions_spec.rb",{"name":488,"start":475,"end":476},"spec\u002Frequests\u002Fapi\u002Fv1\u002Ftags_spec.rb",{"name":490,"start":475,"end":476},"spec\u002Frequests\u002Fapi\u002Fv1\u002Ftrades_spec.rb",{"format":280,"lines":492,"tokens":493,"first":494,"others":497,"copies":518,"kind":413},7,61,{"name":376,"start":495,"end":496},82,88,[498,501,504,506,508,509,512,515],{"name":380,"start":499,"end":500},73,79,{"name":382,"start":502,"end":503},69,75,{"name":384,"start":493,"end":505},67,{"name":388,"start":507,"end":304},64,{"name":482,"start":502,"end":503},{"name":510,"start":511,"end":473},"spec\u002Frequests\u002Fapi\u002Fv1\u002Fimports_spec.rb",89,{"name":486,"start":513,"end":514},78,84,{"name":516,"start":517,"end":495},"spec\u002Frequests\u002Fapi\u002Fv1\u002Frejected_transfers_spec.rb",76,16,{"format":287,"lines":475,"tokens":520,"first":521,"others":525,"copies":336,"kind":368},56,{"name":522,"start":523,"end":524},"app\u002Fviews\u002Fakahu_items\u002F_akahu_item.html.erb",33,38,[526,530,533,535,537,539,541,543],{"name":527,"start":528,"end":529},"app\u002Fviews\u002Fbrex_items\u002F_brex_item.html.erb",44,49,{"name":531,"start":476,"end":532},"app\u002Fviews\u002Ffio_items\u002F_fio_item.html.erb",39,{"name":534,"start":476,"end":532},"app\u002Fviews\u002Fibkr_items\u002F_ibkr_item.html.erb",{"name":536,"start":476,"end":532},"app\u002Fviews\u002Findexa_capital_items\u002F_indexa_capital_item.html.erb",{"name":538,"start":523,"end":524},"app\u002Fviews\u002Flunchflow_items\u002F_lunchflow_item.html.erb",{"name":540,"start":523,"end":524},"app\u002Fviews\u002Fmercury_items\u002F_mercury_item.html.erb",{"name":542,"start":523,"end":524},"app\u002Fviews\u002Fmonobank_items\u002F_monobank_item.html.erb",{"name":544,"start":545,"end":546},"app\u002Fviews\u002Fquestrade_items\u002F_questrade_item.html.erb",27,32,{"format":287,"lines":492,"tokens":548,"first":549,"others":551,"copies":336,"kind":368},54,{"name":550,"start":338,"end":492},"app\u002Fviews\u002Fakahu_items\u002Fselect_accounts.html.erb",[552,554,556,558,560,562,564,566],{"name":553,"start":331,"end":492},"app\u002Fviews\u002Fbrex_items\u002F_api_error.html.erb",{"name":555,"start":338,"end":475},"app\u002Fviews\u002Fbrex_items\u002F_setup_required.html.erb",{"name":557,"start":338,"end":492},"app\u002Fviews\u002Fbrex_items\u002Fselect_accounts.html.erb",{"name":559,"start":331,"end":492},"app\u002Fviews\u002Flunchflow_items\u002F_api_error.html.erb",{"name":561,"start":338,"end":475},"app\u002Fviews\u002Flunchflow_items\u002F_setup_required.html.erb",{"name":563,"start":338,"end":492},"app\u002Fviews\u002Flunchflow_items\u002Fselect_accounts.html.erb",{"name":565,"start":338,"end":475},"app\u002Fviews\u002Fmercury_items\u002F_setup_required.html.erb",{"name":567,"start":338,"end":492},"app\u002Fviews\u002Fmercury_items\u002Fselect_accounts.html.erb",{"format":294,"lines":569,"tokens":570,"first":571,"others":574,"copies":331,"kind":470},215,814,{"name":572,"start":331,"end":573},"config\u002Flocales\u002Fdefaults\u002Fel-CY.yml",216,[575],{"name":576,"start":331,"end":573},"config\u002Flocales\u002Fdefaults\u002Fel.yml",{"format":294,"lines":569,"tokens":578,"first":579,"others":581,"copies":331,"kind":470},795,{"name":580,"start":331,"end":573},"config\u002Flocales\u002Fdefaults\u002Fen-AU.yml",[582],{"name":583,"start":331,"end":573},"config\u002Flocales\u002Fdefaults\u002Fen-NZ.yml",{"sources":265,"lines":585,"tokens":586,"clones":587,"duplicatedLines":588,"duplicatedTokens":589,"percentage":264,"percentageTokens":590,"formats":591,"topClones":622,"generated":805},276511,1288420,567,8355,43595,3.38,[592,597,602,608,612,614,617,620],{"format":280,"sources":593,"lines":594,"clones":595,"duplicatedLines":596,"percentage":264},1669,224053,478,6763,{"format":301,"sources":598,"lines":599,"clones":548,"duplicatedLines":600,"percentage":601},108,29574,646,2.18,{"format":308,"sources":603,"lines":604,"clones":605,"duplicatedLines":606,"percentage":607},155,19768,35,946,4.79,{"format":609,"sources":342,"lines":610,"clones":611,"duplicatedLines":611,"percentage":611},"rust",1364,0,{"format":335,"sources":255,"lines":613,"clones":611,"duplicatedLines":611,"percentage":611},1243,{"format":615,"sources":255,"lines":616,"clones":611,"duplicatedLines":611,"percentage":611},"typescript",369,{"format":618,"sources":331,"lines":619,"clones":611,"duplicatedLines":611,"percentage":611},"groovy",127,{"format":621,"sources":338,"lines":373,"clones":611,"duplicatedLines":611,"percentage":611},"swift",[623,629,649,682,693,705,732,745,758,783],{"format":308,"lines":347,"tokens":348,"first":624,"others":625,"copies":331,"excerpt":627,"kind":368},{"name":350,"start":351,"end":352},[626],{"name":355,"start":356,"end":357},{"lines":628,"total":347},[360,361,362,363,364,365,362,366,367,362],{"format":280,"lines":370,"tokens":630,"first":631,"others":634,"copies":469,"excerpt":640,"kind":368},355,{"name":632,"start":511,"end":633},"app\u002Fmodels\u002Ffio_item\u002Fsyncer.rb",146,[635,638],{"name":636,"start":514,"end":637},"app\u002Fmodels\u002Fmonobank_item\u002Fsyncer.rb",141,{"name":639,"start":514,"end":637},"app\u002Fmodels\u002Fup_item\u002Fsyncer.rb",{"lines":641,"total":370},[642,643,644,362,645,362,646,647,648,362],"def perform_post_sync","  # no-op","end","private","  # Raise a SyncError if a single result hash indicates failure.","  def raise_if_failed_result!(result, stage:)","    return unless failed_result?(result)",{"format":280,"lines":373,"tokens":650,"first":651,"others":654,"copies":373,"excerpt":672,"kind":368},55,{"name":652,"start":446,"end":653},"app\u002Fmodels\u002Fbinance_item\u002Funlinking.rb",22,[655,657,660,662,664,666,668,670],{"name":656,"start":412,"end":545},"app\u002Fmodels\u002Fcoinbase_item\u002Funlinking.rb",{"name":658,"start":518,"end":659},"app\u002Fmodels\u002Fcoinstats_item\u002Funlinking.rb",28,{"name":661,"start":412,"end":545},"app\u002Fmodels\u002Ffio_item\u002Funlinking.rb",{"name":663,"start":446,"end":653},"app\u002Fmodels\u002Fibkr_item\u002Funlinking.rb",{"name":665,"start":412,"end":545},"app\u002Fmodels\u002Findexa_capital_item\u002Funlinking.rb",{"name":667,"start":412,"end":545},"app\u002Fmodels\u002Fmercury_item\u002Funlinking.rb",{"name":669,"start":412,"end":545},"app\u002Fmodels\u002Fquestrade_item\u002Funlinking.rb",{"name":671,"start":412,"end":545},"app\u002Fmodels\u002Fredbark_item\u002Funlinking.rb",{"lines":673,"total":373},[674,675,676,677,678,679,361,680,362,681],"links = AccountProvider.where(provider_type: BinanceAccount.name, provider_id: provider_account.id).to_a","link_ids = links.map(&:id)","result = {","  provider_account_id: provider_account.id,","  name: provider_account.name,","  provider_link_ids: link_ids","results \u003C\u003C result","next if dry_run",{"format":280,"lines":391,"tokens":683,"first":684,"others":685,"copies":475,"kind":368},96,{"name":656,"start":412,"end":532},[686,688,689,690,691],{"name":658,"start":518,"end":687},40,{"name":661,"start":412,"end":532},{"name":665,"start":412,"end":532},{"name":667,"start":412,"end":532},{"name":692,"start":412,"end":532},"app\u002Fmodels\u002Fsnaptrade_item\u002Funlinking.rb",{"format":308,"lines":694,"tokens":695,"first":696,"others":700,"copies":331,"kind":368},77,477,{"name":697,"start":698,"end":699},"app\u002Fjavascript\u002Fcontrollers\u002Fmerchant_select_controller.js",274,350,[701],{"name":702,"start":703,"end":704},"app\u002Fjavascript\u002Fcontrollers\u002Ftag_select_controller.js",370,446,{"format":280,"lines":475,"tokens":706,"first":707,"others":709,"copies":324,"kind":368},59,{"name":708,"start":391,"end":318},"app\u002Fmodels\u002Fakahu_account.rb",[710,713,717,720,722,724,727,729],{"name":711,"start":373,"end":712},"app\u002Fmodels\u002Fcoinbase_account.rb",18,{"name":714,"start":715,"end":716},"app\u002Fmodels\u002Ffio_account.rb",26,31,{"name":718,"start":719,"end":329},"app\u002Fmodels\u002Fibkr_account.rb",14,{"name":721,"start":446,"end":412},"app\u002Fmodels\u002Findexa_capital_account.rb",{"name":723,"start":476,"end":532},"app\u002Fmodels\u002Fmonobank_account.rb",{"name":725,"start":412,"end":726},"app\u002Fmodels\u002Fsharesight_account.rb",20,{"name":728,"start":373,"end":712},"app\u002Fmodels\u002Ftruelayer_account.rb",{"name":730,"start":731,"end":715},"app\u002Fmodels\u002Fup_account.rb",21,{"format":280,"lines":391,"tokens":598,"first":733,"others":736,"copies":255,"kind":368},{"name":734,"start":735,"end":659},"db\u002Fmigrate\u002F20251126094446_create_enable_banking_items_and_accounts.rb",4,[737,739,741,743],{"name":738,"start":735,"end":659},"db\u002Fmigrate\u002F20251221060111_create_coinstats_items_and_accounts.rb",{"name":740,"start":735,"end":659},"db\u002Fmigrate\u002F20260109220800_create_sophtron_items_and_accounts.rb",{"name":742,"start":735,"end":659},"db\u002Fmigrate\u002F20260121101345_create_mercury_items_and_accounts.rb",{"name":744,"start":475,"end":318},"db\u002Fmigrate\u002F20260205110328_create_indexa_capital_items_and_accounts.rb",{"format":280,"lines":687,"tokens":429,"first":746,"others":749,"copies":469,"kind":368},{"name":747,"start":630,"end":748},"app\u002Fcontrollers\u002Ffio_items_controller.rb",394,[750,754],{"name":751,"start":752,"end":753},"app\u002Fcontrollers\u002Fmonobank_items_controller.rb",360,399,{"name":755,"start":756,"end":757},"app\u002Fcontrollers\u002Fup_items_controller.rb",372,411,{"format":280,"lines":391,"tokens":759,"first":760,"others":764,"copies":492,"kind":368},63,{"name":761,"start":762,"end":763},"app\u002Fmodels\u002Fprovider\u002Fcoinbase_adapter.rb",80,104,[765,768,771,773,776,780],{"name":766,"start":517,"end":767},"app\u002Fmodels\u002Fprovider\u002Findexa_capital_adapter.rb",100,{"name":769,"start":495,"end":770},"app\u002Fmodels\u002Fprovider\u002Flunchflow_adapter.rb",106,{"name":772,"start":763,"end":419},"app\u002Fmodels\u002Fprovider\u002Fmercury_adapter.rb",{"name":774,"start":500,"end":775},"app\u002Fmodels\u002Fprovider\u002Fquestrade_adapter.rb",103,{"name":777,"start":778,"end":779},"app\u002Fmodels\u002Fprovider\u002Fredbark_adapter.rb",74,98,{"name":781,"start":513,"end":782},"app\u002Fmodels\u002Fprovider\u002Fsnaptrade_adapter.rb",102,{"format":280,"lines":373,"tokens":784,"first":785,"others":788,"copies":492,"kind":368},57,{"name":786,"start":778,"end":787},"app\u002Fmodels\u002Fbrex_item.rb",86,[789,791,793,797,800,802],{"name":790,"start":694,"end":511},"app\u002Fmodels\u002Fcoinbase_item.rb",{"name":792,"start":503,"end":325},"app\u002Fmodels\u002Fcoinstats_item.rb",{"name":794,"start":795,"end":796},"app\u002Fmodels\u002Fenable_banking_item.rb",244,256,{"name":798,"start":762,"end":799},"app\u002Fmodels\u002Findexa_capital_item.rb",92,{"name":801,"start":503,"end":325},"app\u002Fmodels\u002Fmercury_item.rb",{"name":803,"start":473,"end":804},"app\u002Fmodels\u002Fwise_item.rb",107,{"files":324,"minified":611,"sample":806},[807,808,809,810,811,812,813,814,815],"app\u002Fmodels\u002Ftransaction\u002Fgrouper\u002Fby_merchant_or_name.rb","bin\u002Ftokens.mjs","db\u002Fmigrate\u002F20251102143510_remove_duplicate_account_providers_index.rb","db\u002Fschema.rb","mobile\u002Fandroid\u002Fapp\u002Fsrc\u002Fmain\u002Fjava\u002Fio\u002Fflutter\u002Fplugins\u002FGeneratedPluginRegistrant.java","mobile\u002Fios\u002FRunner\u002FGeneratedPluginRegistrant.h","mobile\u002Fios\u002FRunner\u002FGeneratedPluginRegistrant.m","mobile\u002Flib\u002Ftheme\u002Fsure_tokens.dart","spec\u002Fspec_helper.rb",{"score":266,"grade":267,"size":817,"dimensions":821,"skipped":844},{"lines":818,"files":819,"class":820},574862,3276,"L",[822,837],{"id":823,"source":824,"value":825,"adjusted":825,"lines":826,"halfLife":827,"formats":828,"excluded":833,"weight":338,"score":836},"duplication","jscpd",4.3,24738,8.5,[280,301,308,609,335,615,618,829,830,831,832,621],"docker","objectivec","java","c-header",[315,834,835],"text","data",70.4,{"id":838,"source":824,"value":839,"adjusted":840,"lines":841,"halfLife":842,"weight":338,"score":843},"complexity",33.6,33.5,192951,50,62.8,[845],{"id":846,"reason":847},"dead-code","the languages dead code reads are under 5% of the code",{"total":849,"mean":850,"files":851},77142,23.5,[852,857,862,867,872,877,882,887,892,897],{"path":853,"complexity":854,"lines":855,"bytes":856},"app\u002Fmodels\u002Fwise_item\u002Fimporter.rb",866,2037,97127,{"path":858,"complexity":859,"lines":860,"bytes":861},"app\u002Fmodels\u002Ffamily\u002Fdata_importer.rb",578,1781,68470,{"path":863,"complexity":864,"lines":865,"bytes":866},"app\u002Fmodels\u002Fprovider\u002Ftrade_republic_client.rb",544,1866,76943,{"path":868,"complexity":869,"lines":870,"bytes":871},"app\u002Fmodels\u002Fsimplefin_item\u002Fimporter.rb",473,1556,68808,{"path":873,"complexity":874,"lines":875,"bytes":876},"app\u002Fmodels\u002Fgoal.rb",434,1492,66402,{"path":878,"complexity":879,"lines":880,"bytes":881},"app\u002Fmodels\u002Ftrade_republic_account\u002Factivities_processor.rb",424,1064,44611,{"path":883,"complexity":884,"lines":885,"bytes":886},"app\u002Fcontrollers\u002Fsophtron_items_controller.rb",420,1222,44448,{"path":888,"complexity":889,"lines":890,"bytes":891},"app\u002Fmodels\u002Fuser.rb",398,1058,37586,{"path":893,"complexity":894,"lines":895,"bytes":896},"app\u002Fmodels\u002Fenable_banking_item\u002Fimporter.rb",348,1175,55255,{"path":898,"complexity":899,"lines":900,"bytes":901},"app\u002Fmodels\u002Faccount\u002Fprovider_import_adapter.rb",342,1233,59378,{"percentage":903,"findings":904,"files":905,"byCategory":906,"largest":912},74.58,140,181,[907,910],{"category":908,"count":909},"unused-file",139,{"category":911,"count":338},"unused-export",[913,915,917,919,922,924,927,929,931,934],{"category":908,"path":350,"name":362,"line":338,"lines":914},750,{"category":908,"path":355,"name":362,"line":338,"lines":916},698,{"category":908,"path":918,"name":362,"line":338,"lines":290},"app\u002Fjavascript\u002Fcontrollers\u002Fgoal_projection_chart_controller.js",{"category":908,"path":920,"name":362,"line":338,"lines":921},"app\u002Fjavascript\u002Fcontrollers\u002Floan_payoff_chart_controller.js",655,{"category":908,"path":702,"name":362,"line":338,"lines":923},485,{"category":908,"path":925,"name":362,"line":338,"lines":926},"app\u002Fjavascript\u002Fcontrollers\u002Fselect_controller.js",413,{"category":908,"path":697,"name":362,"line":338,"lines":928},380,{"category":908,"path":930,"name":362,"line":338,"lines":756},"app\u002Fjavascript\u002Fcontrollers\u002Fcategory_select_controller.js",{"category":908,"path":932,"name":362,"line":338,"lines":933},"app\u002Fjavascript\u002Fcontrollers\u002Fdonut_chart_controller.js",351,{"category":908,"path":935,"name":362,"line":338,"lines":936},"app\u002Fjavascript\u002Fcontrollers\u002Fspending_chart_controller.js",330,{"\u002Ftrending\u002Fwe-promise\u002Fsure":938},{"views":611,"visits":611},1794379867229]