Duplication Overall
- 9% duplication:
- 73,841 cleaned lines of cleaned code (without empty lines, comments, and frequently duplicated constructs such as imports)
- 7,296 duplicated lines
- 802 duplicates
Duplication per Extension
Duplication per Component (primary)
Longest Duplicates
The list of 50 longest duplicates.
| Size | # | Folders | Files | Lines | Code |
|---|---|---|---|---|---|
| 90 | x 2 | ios/reference/referenceTestsios/reference/referenceTests | 23:161 (79%)22:160 (44%) | view | |
| 47 | x 2 | ios/reference/referenceTests/Repositoriesios/reference/referenceTests/Repositories | 18:77 (16%)94:154 (16%) | view | |
| 40 | x 2 | common/src/protocolcommon/src/protocol | 875:923 (5%)962:1010 (5%) | view | |
| 32 | x 2 | android/coreandroid/ui | 78:131 (39%)119:172 (28%) | view | |
| 31 | x 2 | ios/reference/referenceTests/Repositoriesios/reference/referenceTests/Repositories | 18:59 (11%)214:254 (11%) | view | |
| 31 | x 2 | ios/reference/referenceTests/Repositoriesios/reference/referenceTests/Repositories | 94:134 (11%)214:254 (11%) | view | |
| 28 | x 2 | common/src/protocolcommon/src/protocol | 620:652 (3%)681:713 (3%) | view | |
| 25 | x 2 | journalist-client/src/componentsjournalist-client/src/components | 9:34 (80%)9:34 (80%) | view | |
| 25 | x 2 | api/migrationsapi/migrations | 13:38 (26%)2:27 (86%) | view | |
| 23 | x 2 | journalist-vault/srcjournalist-vault/src | 198:227 (8%)301:330 (8%) | view | |
| 23 | x 2 | android/ui/src/main/java...an/coverdrop/ui/screensandroid/ui/src/main/java...an/coverdrop/ui/screens | 113:137 (14%)178:202 (14%) | view | |
| 23 | x 2 | api/src/services/queriesapi/src/services/queries | 239:269 (4%)184:212 (8%) | view | |
| 21 | x 2 | api/migrationsapi/migrations | 2:22 (72%)21:41 (42%) | view | |
| 21 | x 2 | api/migrationsapi/migrations | 13:33 (22%)21:41 (42%) | view | |
| 20 | x 2 | common/src/protocolcommon/src/protocol | 620:642 (2%)758:780 (2%) | view | |
| 20 | x 2 | common/src/protocolcommon/src/protocol | 681:703 (2%)758:780 (2%) | view | |
| 19 | x 2 | identity-api/identity-api-database/srcidentity-api/identity-api-database/src | 126:147 (7%)229:251 (7%) | view | |
| 18 | x 2 | api/src/services/queriesapi/src/services/queries | 26:46 (8%)155:175 (3%) | view | |
| 17 | x 2 | android/ui/src/main/java...coverdrop/ui/componentsandroid/ui/src/main/java...coverdrop/ui/components | 75:92 (13%)125:142 (13%) | view | |
| 17 | x 2 | common/src/protocolcommon/src/protocol | 519:538 (2%)579:598 (2%) | view | |
| 16 | x 2 | ios/reference/referenceTestsios/reference/referenceTests | 65:82 (11%)101:118 (11%) | view | |
| 16 | x 2 | tools/coverup/src/dev/buildtools/coverup/src/dev/build | 90:113 (12%)161:184 (12%) | view | |
| 16 | x 2 | android/appandroid/app | 92:108 (12%)116:132 (12%) | view | |
| 16 | x 2 | api/migrationsapi/src/services/queries | 28:43 (32%)122:137 (3%) | view | |
| 15 | x 2 | ios/reference/referenceTests/Repositoriesios/reference/referenceTests/Repositories | 61:77 (5%)256:274 (5%) | view | |
| 15 | x 2 | ios/reference/referenceTests/Repositoriesios/reference/referenceTests/Repositories | 136:154 (5%)256:274 (5%) | view | |
| 15 | x 2 | journalist-client/src/componentsjournalist-client/src/components | 134:150 (6%)158:174 (6%) | view | |
| 15 | x 2 | ios/reference/referenceUITestsios/reference/referenceUITests | 17:39 (28%)56:78 (28%) | view | |
| 15 | x 2 | journalist-client/src-tauri/src/tasksjournalist-client/src-tauri/src/tasks | 253:267 (6%)25:39 (38%) | view | |
| 15 | x 2 | journalist-vault/srcjournalist-vault/src | 92:108 (7%)87:103 (8%) | view | |
| 15 | x 2 | android/ui/src/main/java...an/coverdrop/ui/screensandroid/ui/src/main/java...an/coverdrop/ui/screens | 248:263 (6%)277:293 (5%) | view | |
| 15 | x 2 | api/src/services/queriesapi/src/services/queries | 522:540 (3%)90:108 (5%) | view | |
| 15 | x 2 | journalist-vault/srcjournalist-vault/src | 104:120 (7%)24:40 (15%) | view | |
| 15 | x 2 | journalist-vault/srcjournalist-vault/src | 24:40 (15%)87:103 (8%) | view | |
| 15 | x 2 | journalist-vault/srcjournalist-vault/src | 92:108 (7%)24:40 (15%) | view | |
| 15 | x 2 | covernode/covernode-database/srcidentity-api/identity-api-database/src | 86:107 (2%)20:40 (5%) | view | |
| 15 | x 2 | journalist-vault/srcjournalist-vault/src | 104:120 (7%)87:103 (8%) | view | |
| 15 | x 2 | journalist-vault/srcjournalist-vault/src | 92:108 (7%)104:120 (7%) | view | |
| 14 | x 2 | journalist-vault/srcjournalist-vault/src | 204:218 (5%)239:253 (5%) | view | |
| 14 | x 2 | android/ui/src/main/java...coverdrop/ui/componentsandroid/ui/src/main/java...coverdrop/ui/components | 40:55 (10%)131:145 (10%) | view | |
| 14 | x 2 | api/src/controllersapi/src/controllers | 105:120 (2%)140:155 (2%) | view | |
| 14 | x 2 | api/src/controllersapi/src/controllers | 105:120 (2%)168:183 (2%) | view | |
| 14 | x 2 | api/src/controllersapi/src/controllers | 140:155 (2%)168:183 (2%) | view | |
| 14 | x 2 | journalist-client/src/componentsjournalist-client/src/components | 332:345 (1%)488:501 (1%) | view | |
| 14 | x 2 | journalist-vault/srcjournalist-vault/src | 46:62 (6%)110:126 (6%) | view | |
| 14 | x 2 | ios/reference/CoverDropC...verDropCore/Crypto/Keysios/reference/CoverDropC...verDropCore/Crypto/Keys | 74:93 (11%)129:148 (11%) | view | |
| 14 | x 2 | journalist-vault/migrationsjournalist-vault/migrations | 38:54 (23%)44:61 (22%) | view | |
| 14 | x 2 | android/ui/src/main/java...an/coverdrop/ui/screensandroid/ui/src/main/java...an/coverdrop/ui/screens | 135:148 (5%)130:143 (4%) | view | |
| 14 | x 2 | api/src/services/queriesapi/src/services/queries | 26:40 (9%)23:37 (18%) | view | |
| 14 | x 2 | api/migrationsapi/src/services/queries | 9:22 (48%)122:135 (2%) | view |
Most Frequent Duplicates
The list of 50 most frequently found duplicates.
| Size | # | Folders | Files | Lines | Code |
|---|---|---|---|---|---|
| 6 | x 10 | common/src/cryptocommon/src/cryptocommon/src/api/models/de...rops/journalist_to_usercommon/src/api/models/messagescommon/src/api/models/messagescommon/src/api/models/messagescommon/src/api/models/messagescommon/src/cryptocommon/src/api/models/messagescommon/src/api/models/de...rops/user_to_journalist | 5:10 (3%)4:9 (3%)1:6 (15%)9:14 (10%)6:11 (9%)6:11 (8%)10:15 (5%)3:8 (7%)10:15 (19%)1:6 (15%) | view | |
| 6 | x 9 | common/src/apicommon/src/apicommon/src/apicommon/src/apicommon/src/apicommon/src/apicommon/src/apicommon/src/apicommon/src/api | 256:261 (<1%)346:351 (<1%)376:381 (<1%)400:405 (<1%)418:423 (<1%)437:442 (<1%)454:459 (<1%)476:481 (<1%)626:631 (<1%) | view | |
| 6 | x 9 | ios/reference/referenceUITestsios/reference/referenceUITestsios/reference/referenceUITestsios/reference/referenceUITestsios/reference/referenceUITestsios/reference/referenceUITestsios/reference/referenceUITestsios/reference/referenceUITestsios/reference/referenceUITests | 5:15 (15%)7:17 (16%)5:15 (37%)5:15 (26%)5:15 (11%)5:15 (27%)5:15 (11%)5:15 (40%)7:16 (6%) | view | |
| 6 | x 7 | common/src/apicommon/src/apicommon/src/apicommon/src/apicommon/src/apicommon/src/apicommon/src/api | 150:155 (<1%)255:260 (<1%)345:350 (<1%)375:380 (<1%)436:441 (<1%)538:543 (<1%)591:596 (<1%) | view | |
| 6 | x 7 | common/src/protocolcommon/src/protocolcommon/src/protocolcommon/src/protocolcommon/src/protocolcommon/src/protocolcommon/src/protocol | 470:475 (<1%)533:538 (<1%)593:598 (<1%)637:642 (<1%)698:703 (<1%)775:780 (<1%)844:849 (<1%) | view | |
| 6 | x 7 | common/src/protocolcommon/src/protocolcommon/src/protocolcommon/src/protocolcommon/src/protocolcommon/src/protocolcommon/src/protocol | 456:463 (<1%)520:526 (<1%)580:586 (<1%)624:630 (<1%)685:691 (<1%)762:768 (<1%)831:837 (<1%) | view | |
| 6 | x 7 | common/src/protocolcommon/src/protocolcommon/src/protocolcommon/src/protocolcommon/src/protocolcommon/src/protocolcommon/src/protocol | 455:462 (<1%)519:525 (<1%)579:585 (<1%)623:629 (<1%)684:690 (<1%)761:767 (<1%)830:836 (<1%) | view | |
| 6 | x 7 | common/src/protocolcommon/src/protocolcommon/src/protocolcommon/src/protocolcommon/src/protocolcommon/src/protocolcommon/src/protocol | 469:474 (<1%)532:537 (<1%)592:597 (<1%)636:641 (<1%)697:702 (<1%)774:779 (<1%)843:848 (<1%) | view | |
| 6 | x 6 | common/src/protocolcommon/src/protocolcommon/src/protocolcommon/src/protocolcommon/src/protocolcommon/src/protocol | 468:473 (<1%)531:536 (<1%)591:596 (<1%)635:640 (<1%)696:701 (<1%)773:778 (<1%) | view | |
| 6 | x 6 | journalist-vault/srcjournalist-vault/srcjournalist-vault/srcjournalist-vault/srcjournalist-vault/srcjournalist-vault/src | 93:100 (3%)124:131 (3%)98:105 (3%)30:37 (6%)46:53 (2%)110:117 (2%) | view | |
| 6 | x 6 | journalist-vault/srcjournalist-vault/srcjournalist-vault/srcjournalist-vault/srcjournalist-vault/srcjournalist-vault/src | 94:101 (3%)125:132 (3%)99:106 (3%)31:38 (6%)47:54 (2%)111:118 (2%) | view | |
| 6 | x 6 | common/src/protocolcommon/src/protocolcommon/src/protocolcommon/src/protocolcommon/src/protocolcommon/src/protocol | 454:461 (<1%)518:524 (<1%)622:628 (<1%)683:689 (<1%)760:766 (<1%)829:835 (<1%) | view | |
| 6 | x 6 | journalist-vault/srcjournalist-vault/srcjournalist-vault/srcjournalist-vault/srcjournalist-vault/srcjournalist-vault/src | 98:103 (3%)129:134 (3%)103:108 (3%)35:40 (6%)51:56 (2%)115:120 (2%) | view | |
| 6 | x 6 | group-messaging/delivery-service/src/controllersgroup-messaging/delivery-service/src/controllersgroup-messaging/delivery-service/src/controllersgroup-messaging/delivery-service/src/controllersgroup-messaging/delivery-service/src/controllersgroup-messaging/delivery-service/src/controllers | 27:32 (5%)34:39 (4%)116:121 (4%)167:172 (4%)91:96 (5%)137:142 (5%) | view | |
| 6 | x 6 | group-messaging/delivery-service/src/controllersgroup-messaging/delivery-service/src/controllersgroup-messaging/delivery-service/src/controllersgroup-messaging/delivery-service/src/controllersgroup-messaging/delivery-service/src/controllersgroup-messaging/delivery-service/src/controllers | 25:31 (5%)32:38 (4%)114:120 (4%)165:171 (4%)89:95 (5%)135:141 (5%) | view | |
| 6 | x 6 | android/ui/src/main/java...an/coverdrop/ui/screensandroid/ui/src/main/java...an/coverdrop/ui/screensandroid/ui/src/main/java...an/coverdrop/ui/screensandroid/ui/src/main/java...an/coverdrop/ui/screensandroid/ui/src/main/java...an/coverdrop/ui/screensandroid/ui/src/main/java...an/coverdrop/ui/screens | 95:100 (2%)84:90 (5%)89:94 (4%)161:166 (1%)35:40 (11%)153:158 (2%) | view | |
| 6 | x 6 | common/src/apicommon/src/apicommon/src/apicommon/src/apicommon/src/apicommon/src/api | 170:175 (<1%)199:204 (<1%)233:238 (<1%)399:404 (<1%)475:480 (<1%)554:559 (<1%) | view | |
| 6 | x 6 | journalist-vault/srcjournalist-vault/srcjournalist-vault/srcjournalist-vault/srcjournalist-vault/srcjournalist-vault/src | 95:102 (3%)126:133 (3%)100:107 (3%)32:39 (6%)48:55 (2%)112:119 (2%) | view | |
| 6 | x 5 | common/src/protocolcommon/src/protocolcommon/src/protocolcommon/src/protocolcommon/src/protocol | 453:460 (<1%)517:523 (<1%)621:627 (<1%)682:688 (<1%)759:765 (<1%) | view | |
| 6 | x 5 | group-messaging/delivery-service-lib/src/formsgroup-messaging/delivery-service-lib/src/formsgroup-messaging/delivery-service-lib/src/formsgroup-messaging/delivery-service-lib/src/formsgroup-messaging/delivery-service-lib/src/forms | 4:10 (28%)6:12 (15%)5:11 (15%)4:10 (23%)5:11 (22%) | view | |
| 6 | x 5 | common/src/protocolcommon/src/protocolcommon/src/protocolcommon/src/protocolcommon/src/protocol | 530:535 (<1%)590:595 (<1%)634:639 (<1%)695:700 (<1%)772:777 (<1%) | view | |
| 6 | x 5 | api/src/services/queriesapi/src/services/queriesapi/src/services/queriesapi/src/services/queriesapi/src/services/queries | 111:116 (2%)221:226 (2%)278:283 (1%)382:387 (1%)211:216 (2%) | view | |
| 6 | x 5 | common/src/apicommon/src/identity_apicommon/src/apicommon/src/apicommon/src/api | 151:156 (<1%)44:49 (12%)171:176 (<1%)200:205 (<1%)234:239 (<1%) | view | |
| 6 | x 5 | ios/reference/referenceTests/Repositoriesios/reference/referenceTests/Repositoriesios/reference/referenceTests/Repositoriesios/reference/referenceTests/Repositoriesios/reference/referenceTests/Repositories | 22:29 (2%)98:104 (2%)218:224 (2%)322:328 (2%)371:377 (2%) | view | |
| 6 | x 5 | ios/reference/referenceUITestsios/reference/referenceUITestsios/reference/referenceUITestsios/reference/referenceUITestsios/reference/referenceUITests | 21:26 (26%)21:26 (11%)36:41 (6%)149:154 (6%)59:64 (11%) | view | |
| 6 | x 5 | ios/reference/CoverDropC...Utilities/TestOnlyUtilsios/reference/CoverDropC...Utilities/TestOnlyUtilsios/reference/referenceTests/Repositoriesios/reference/referenceTests/Repositoriesios/reference/referenceTests/Repositories | 93:99 (3%)33:39 (5%)48:54 (2%)125:130 (2%)245:250 (2%) | view | |
| 6 | x 5 | ios/reference/referenceTests/Repositoriesios/reference/referenceTests/Repositoriesios/reference/referenceTests/Repositoriesios/reference/referenceTests/Repositoriesios/reference/referenceTests/Repositories | 24:32 (2%)99:107 (2%)219:227 (2%)323:331 (2%)372:380 (2%) | view | |
| 6 | x 5 | common/src/protocolcommon/src/protocolcommon/src/protocolcommon/src/protocolcommon/src/protocol | 452:457 (<1%)516:521 (<1%)620:625 (<1%)681:686 (<1%)758:763 (<1%) | view | |
| 6 | x 5 | admin/src/ceremonyadmin/src/ceremonyadmin/src/ceremonyadmin/src/ceremonyadmin/src/ceremony | 440:446 (1%)515:521 (1%)553:560 (1%)580:586 (1%)666:672 (1%) | view | |
| 6 | x 5 | android/ui/src/main/java...an/coverdrop/ui/screensandroid/ui/src/main/java...an/coverdrop/ui/screensandroid/ui/src/main/java...an/coverdrop/ui/screensandroid/ui/src/main/java...an/coverdrop/ui/screensandroid/ui/src/main/java...an/coverdrop/ui/screens | 96:101 (2%)86:92 (5%)90:95 (4%)162:167 (1%)154:159 (2%) | view | |
| 6 | x 5 | covernode/covernode-database/srccovernode/covernode-database/srccovernode/covernode-database/srccovernode/covernode-database/srccovernode/covernode-database/src | 267:274 (<1%)293:300 (<1%)319:328 (<1%)349:356 (<1%)407:414 (<1%) | view | |
| 6 | x 4 | android/ui/src/main/java...an/coverdrop/ui/screensandroid/ui/src/main/java...an/coverdrop/ui/screensandroid/ui/src/main/java...an/coverdrop/ui/screensandroid/ui/src/main/java...an/coverdrop/ui/screens | 137:142 (2%)132:137 (1%)119:124 (3%)184:189 (3%) | view | |
| 6 | x 4 | journalist-vault/srcjournalist-vault/srcjournalist-vault/srcjournalist-vault/src | 217:223 (3%)207:213 (3%)114:120 (6%)236:242 (2%) | view | |
| 6 | x 4 | android/ui/src/main/java...an/coverdrop/ui/screensandroid/ui/src/main/java...an/coverdrop/ui/screensandroid/ui/src/main/java...an/coverdrop/ui/screensandroid/ui/src/main/java...an/coverdrop/ui/screens | 136:141 (2%)131:136 (1%)118:123 (3%)183:188 (3%) | view | |
| 6 | x 4 | covernode/covernode-database/srccovernode/covernode-database/srccovernode/covernode-database/srccovernode/covernode-database/src | 266:273 (<1%)292:299 (<1%)348:355 (<1%)406:413 (<1%) | view | |
| 6 | x 4 | journalist-vault/srcjournalist-vault/srcjournalist-vault/srcjournalist-vault/src | 92:97 (3%)87:92 (3%)24:29 (6%)104:109 (2%) | view | |
| 6 | x 4 | journalist-client/src/componentsjournalist-client/src/componentsjournalist-client/src/componentsjournalist-client/src/components | 134:140 (2%)158:164 (2%)182:188 (2%)206:212 (2%) | view | |
| 6 | x 4 | api/src/services/queriesapi/src/services/queriesapi/src/services/queriesapi/src/services/queries | 158:164 (1%)25:31 (8%)28:34 (4%)29:35 (2%) | view | |
| 6 | x 4 | api/migrationsapi/src/services/queriesapi/migrationsapi/migrations | 13:18 (20%)126:131 (1%)24:29 (6%)32:37 (12%) | view | |
| 6 | x 4 | common/src/apicommon/src/apicommon/src/apicommon/src/api | 344:349 (<1%)374:379 (<1%)498:503 (<1%)519:524 (<1%) | view | |
| 6 | x 4 | ios/reference/referenceUITestsios/reference/referenceUITestsios/reference/referenceUITestsios/reference/referenceUITests | 22:28 (26%)22:28 (11%)37:43 (6%)60:66 (11%) | view | |
| 6 | x 4 | api/migrationsapi/src/services/queriesapi/migrationsapi/migrations | 16:21 (20%)129:134 (1%)27:32 (6%)35:40 (12%) | view | |
| 6 | x 4 | api/src/services/queriesapi/src/services/queriesapi/src/services/queriesapi/src/services/queries | 162:167 (1%)29:34 (8%)32:37 (4%)33:38 (2%) | view | |
| 6 | x 4 | api/src/services/queriesapi/src/services/queriesapi/src/services/queriesapi/src/services/queries | 230:235 (1%)175:180 (2%)248:253 (2%)306:311 (1%) | view | |
| 6 | x 4 | journalist-vault/srcjournalist-vault/srcjournalist-vault/srcjournalist-vault/src | 93:98 (3%)88:93 (3%)25:30 (6%)105:110 (2%) | view | |
| 6 | x 4 | api/migrationsapi/src/services/queriesapi/migrationsapi/migrations | 11:16 (20%)124:129 (1%)22:27 (6%)30:35 (12%) | view | |
| 6 | x 4 | api/src/services/queriesapi/src/services/queriesapi/src/services/queriesapi/src/services/queries | 165:170 (1%)32:37 (8%)35:40 (4%)36:41 (2%) | view | |
| 6 | x 4 | ios/reference/referenceTests/Repositoriesios/reference/referenceTests/Repositoriesios/reference/referenceTests/Repositoriesios/reference/referenceTests/Repositories | 18:24 (2%)94:99 (2%)214:219 (2%)367:372 (2%) | view | |
| 6 | x 4 | journalist-vault/srcjournalist-vault/srcjournalist-vault/srcjournalist-vault/src | 96:103 (3%)91:98 (3%)28:35 (6%)108:115 (2%) | view | |
| 6 | x 4 | api/migrationsapi/src/services/queriesapi/migrationsapi/migrations | 14:19 (20%)127:132 (1%)25:30 (6%)33:38 (12%) | view |
Duplicated Units
The list of top 8 duplicated units.
| Size | # | Folders | Files | Lines | Code |
|---|---|---|---|---|---|
| 17 | x 2 | ios/reference/referenceTestsios/reference/referenceTests | 84:108 83:107 | view | |
| 14 | x 2 | ios/reference/referenceTestsios/reference/referenceTests | 63:82 62:81 | view | |
| 12 | x 2 | ios/reference/referenceTestsios/reference/referenceTests | 121:141 120:140 | view | |
| 12 | x 2 | ios/reference/referenceTestsios/reference/referenceTests | 143:162 142:161 | view | |
| 10 | x 2 | ios/reference/referenceTestsios/reference/referenceTests | 44:61 43:60 | view | |
| 9 | x 2 | ios/reference/referenceTestsios/reference/referenceTests | 23:34 22:33 | view | |
| 6 | x 2 | ios/reference/referenceTestsios/reference/referenceTests | 110:119 109:118 | view | |
| 6 | x 2 | android/ui/src/main/java...n/coverdrop/ui/trackingandroid/ui/src/main/java...n/coverdrop/ui/tracking | 97:104 157:164 | view |
About This Analysis
- For duplication, we look at places in code where there are 6 or more lines of code that are exactly the same.
- Before duplication is calculated, the code is cleaned to remove empty lines, comments, and frequently duplicated constructs such as imports.
- You should aim at having as little as possible (<5%) of duplicated code as high-level of duplication can lead to maintenance difficulties, poor factoring, and logical contradictions.
Learn more...
- To learn more about duplications and techniques for eliminating duplication, Sokrates recommends the following resources:
- Avoid Repetition, MartinFlower.com (IEEE Software article)
- Refactoring duplicated code, sourcemaking.com
- Beck Design Rules, MartinFowler.com
- DRY (Don't Repeat Yourself) Principle, Wikipedia
- The Cut-and-Paste Programming Software Development Anti-Pattern, sourcemaking.com
- Code Smells / Duplicated Code, Jeff Atwood, codinghorror.com:
- "Duplicated code is the bane of software development. Stamp out duplication whenever possible. You should always be on the lookout for more subtle cases of near-duplication, too. Don't Repeat Yourself!"
- Reducing Coupling, MartinFlower.com (IEEE Software article):
- "There are several ways to describe coupling, but it boils down to this: If changing one module in a program requires changing another module, then coupling exists. ... Duplication always implies coupling, because changing one piece of duplicate code implies changing the other."