guardian/interactive-olympic-sims
Duplication Places in code with 6 or more lines that are exactly the same. |
Duplication Overall
- 38% duplication:
- 9,957 cleaned lines of cleaned code (without empty lines, comments, and frequently duplicated constructs such as imports)
- 3,833 duplicated lines
- 423 duplicates
Duplication per Extension
Duplication per Component (primary)
Longest Duplicates
The list of 50 longest duplicates.
| Size | # | Folders | Files | Lines | Code |
|---|---|---|---|---|---|
| 76 | x 2 | src/js/componentssrc/js/components | 416:524 (18%)347:455 (27%) | view | |
| 68 | x 2 | src/csssrc/css | 282:362 (31%)337:417 (31%) | view | |
| 56 | x 2 | src/js/componentssrc/js/components | 44:113 (53%)67:136 (30%) | view | |
| 56 | x 2 | src/csssrc/css | 321:391 (26%)211:272 (23%) | view | |
| 43 | x 2 | src/csssrc/css | 155:208 (19%)159:268 (20%) | view | |
| 42 | x 2 | src/csssrc/css | 282:336 (19%)227:272 (17%) | view | |
| 39 | x 2 | src/js/componentssrc/js/components | 1169:1228 (4%)1009:1068 (4%) | view | |
| 34 | x 2 | src/js/componentssrc/js/components | 2:53 (8%)2:52 (12%) | view | |
| 33 | x 2 | src/js/componentssrc/js/components | 715:761 (4%)776:822 (3%) | view | |
| 31 | x 2 | src/js/componentssrc/js/components | 60:101 (8%)58:99 (7%) | view | |
| 30 | x 2 | src/js/componentssrc/js/components | 241:274 (12%)154:186 (18%) | view | |
| 29 | x 2 | src/js/componentssrc/js/components | 1105:1141 (4%)587:623 (7%) | view | |
| 28 | x 2 | src/js/componentssrc/js/components | 123:161 (6%)103:142 (7%) | view | |
| 27 | x 2 | src/csssrc/css | 162:191 (12%)95:124 (18%) | view | |
| 27 | x 2 | src/js/componentssrc/js/components | 356:387 (6%)287:318 (9%) | view | |
| 27 | x 2 | src/csssrc/css | 158:187 (12%)95:124 (18%) | view | |
| 26 | x 2 | src/csssrc/css | 347:383 (12%)156:181 (17%) | view | |
| 26 | x 2 | src/csssrc/css | 156:181 (17%)237:263 (10%) | view | |
| 26 | x 2 | src/csssrc/css | 292:328 (12%)156:181 (17%) | view | |
| 26 | x 2 | src/js/componentssrc/js/components | 107:146 (7%)170:208 (9%) | view | |
| 26 | x 2 | src/js/componentssrc/js/components | 306:334 (3%)384:412 (2%) | view | |
| 24 | x 2 | src/csssrc/css | 22:45 (42%)21:45 (54%) | view | |
| 24 | x 2 | src/js/componentssrc/js/components | 70:102 (3%)80:113 (2%) | view | |
| 22 | x 2 | src/js/componentssrc/js/components | 1032:1056 (3%)1040:1064 (2%) | view | |
| 22 | x 2 | src/js/componentssrc/js/components | 1032:1056 (3%)1200:1224 (2%) | view | |
| 22 | x 2 | src/csssrc/css | 6:29 (73%)5:28 (78%) | view | |
| 21 | x 2 | src/js/componentssrc/js/components | 123:148 (5%)170:195 (7%) | view | |
| 21 | x 2 | src/js/componentssrc/js/components | 14:47 (5%)13:46 (5%) | view | |
| 21 | x 2 | src/js/componentssrc/js/components | 107:132 (5%)103:128 (5%) | view | |
| 21 | x 2 | src/js/componentssrc/js/components | 123:148 (5%)107:132 (5%) | view | |
| 21 | x 2 | src/js/componentssrc/js/components | 103:128 (5%)170:195 (7%) | view | |
| 21 | x 2 | src/js/componentssrc/js/components | 763:793 (2%)824:854 (2%) | view | |
| 20 | x 2 | src/js/componentssrc/js/components | 65:93 (4%)63:91 (7%) | view | |
| 20 | x 2 | src/js/componentssrc/js/components | 2:30 (90%)2:30 (6%) | view | |
| 20 | x 2 | src/js/componentssrc/js/components | 77:99 (5%)95:117 (7%) | view | |
| 20 | x 2 | src/js/componentssrc/js/components | 79:101 (5%)95:117 (7%) | view | |
| 19 | x 2 | src/js/componentssrc/js/components | 571:602 (2%)560:591 (2%) | view | |
| 19 | x 2 | src/csssrc/css | 63:147 (8%)67:151 (8%) | view | |
| 18 | x 2 | src/js/componentssrc/js/components | 1080:1102 (2%)562:584 (4%) | view | |
| 17 | x 2 | src/js/componentssrc/js/components | 2:23 (2%)2:23 (2%) | view | |
| 17 | x 2 | src/js/componentssrc/js/components | 611:630 (2%)600:619 (2%) | view | |
| 17 | x 2 | src/js/componentssrc/js/components | 2:27 (16%)2:27 (9%) | view | |
| 17 | x 2 | src/csssrc/css | 298:318 (7%)189:209 (7%) | view | |
| 17 | x 2 | src/csssrc/css | 166:183 (14%)143:160 (10%) | view | |
| 17 | x 2 | src/js/componentssrc/js/components | 2:23 (2%)2:23 (1%) | view | |
| 17 | x 2 | src/js/componentssrc/js/components | 611:630 (2%)654:673 (1%) | view | |
| 17 | x 2 | src/js/componentssrc/js/components | 2:23 (1%)2:23 (2%) | view | |
| 17 | x 2 | src/js/componentssrc/js/components | 654:673 (1%)600:619 (2%) | view | |
| 16 | x 2 | src/js/componentssrc/js/components | 167:185 (2%)203:224 (1%) | view | |
| 16 | x 2 | src/js/componentssrc/js/components | 202:234 (2%)241:276 (1%) | view |
Most Frequent Duplicates
The list of 50 most frequently found duplicates.
| Size | # | Folders | Files | Lines | Code |
|---|---|---|---|---|---|
| 6 | x 11 | src/js/componentssrc/js/componentssrc/js/componentssrc/js/componentssrc/js/componentssrc/js/componentssrc/js/componentssrc/js/componentssrc/js/componentssrc/js/components... | 51:59 (4%)42:50 (3%)63:71 (1%)78:86 (2%)61:69 (1%)131:139 (2%)84:92 (<1%)86:94 (<1%)80:88 (1%)39:45 (5%)... | view | |
| 6 | x 10 | src/js/componentssrc/js/componentssrc/js/componentssrc/js/componentssrc/js/componentssrc/js/componentssrc/js/componentssrc/js/componentssrc/js/componentssrc/js/components | 52:61 (4%)43:52 (3%)64:73 (1%)79:88 (2%)62:71 (1%)87:96 (<1%)132:141 (2%)85:94 (<1%)81:90 (1%)97:106 (<1%) | view | |
| 6 | x 10 | src/csssrc/csssrc/csssrc/csssrc/csssrc/csssrc/csssrc/csssrc/csssrc/css | 92:97 (6%)79:85 (7%)99:105 (3%)42:47 (13%)400:405 (2%)345:350 (2%)186:191 (4%)281:287 (2%)177:182 (4%)157:162 (3%) | view | |
| 6 | x 10 | src/js/componentssrc/js/componentssrc/js/componentssrc/js/componentssrc/js/componentssrc/js/componentssrc/js/componentssrc/js/componentssrc/js/componentssrc/js/components | 48:58 (4%)39:49 (3%)60:70 (1%)75:85 (2%)58:68 (1%)83:93 (<1%)77:87 (1%)81:91 (<1%)36:44 (5%)93:103 (<1%) | view | |
| 6 | x 7 | src/js/componentssrc/js/componentssrc/js/componentssrc/js/componentssrc/js/componentssrc/js/componentssrc/js/components | 127:132 (1%)190:195 (2%)143:148 (1%)123:128 (1%)180:185 (<1%)227:232 (<1%)219:224 (<1%) | view | |
| 6 | x 7 | src/js/componentssrc/js/componentssrc/js/componentssrc/js/componentssrc/js/componentssrc/js/componentssrc/js/components | 126:131 (1%)189:194 (2%)142:147 (1%)122:127 (1%)179:184 (<1%)226:231 (<1%)218:223 (<1%) | view | |
| 6 | x 7 | src/js/componentssrc/js/componentssrc/js/componentssrc/js/componentssrc/js/componentssrc/js/componentssrc/js/components | 124:129 (1%)187:192 (2%)140:145 (1%)120:125 (1%)177:182 (<1%)220:229 (<1%)216:221 (<1%) | view | |
| 6 | x 7 | src/js/componentssrc/js/componentssrc/js/componentssrc/js/componentssrc/js/componentssrc/js/componentssrc/js/components | 125:130 (1%)188:193 (2%)141:146 (1%)121:126 (1%)178:183 (<1%)223:230 (<1%)217:222 (<1%) | view | |
| 6 | x 6 | src/js/componentssrc/js/componentssrc/js/componentssrc/js/componentssrc/js/componentssrc/js/components | 7:13 (1%)8:14 (2%)8:14 (1%)7:13 (<1%)7:13 (<1%)7:13 (<1%) | view | |
| 6 | x 6 | src/js/componentssrc/js/componentssrc/js/componentssrc/js/componentssrc/js/componentssrc/js/components | 619:626 (<1%)662:669 (<1%)608:615 (<1%)712:719 (<1%)777:784 (<1%)716:723 (<1%) | view | |
| 6 | x 6 | src/js/componentssrc/js/componentssrc/js/componentssrc/js/componentssrc/js/componentssrc/js/components | 118:125 (1%)181:188 (2%)134:141 (1%)114:121 (1%)171:178 (<1%)210:217 (<1%) | view | |
| 6 | x 6 | src/js/componentssrc/js/componentssrc/js/componentssrc/js/componentssrc/js/componentssrc/js/components | 620:628 (<1%)663:671 (<1%)609:617 (<1%)713:721 (<1%)778:786 (<1%)717:725 (<1%) | view | |
| 6 | x 6 | src/js/componentssrc/js/componentssrc/js/componentssrc/js/componentssrc/js/componentssrc/js/components | 121:128 (1%)184:191 (2%)137:144 (1%)117:124 (1%)174:181 (<1%)213:220 (<1%) | view | |
| 6 | x 6 | src/js/componentssrc/js/componentssrc/js/componentssrc/js/componentssrc/js/componentssrc/js/components | 88:93 (1%)104:109 (2%)86:91 (1%)133:141 (<1%)69:74 (4%)85:90 (4%) | view | |
| 6 | x 6 | src/js/componentssrc/js/componentssrc/js/componentssrc/js/componentssrc/js/componentssrc/js/components | 120:127 (1%)183:190 (2%)136:143 (1%)116:123 (1%)173:180 (<1%)212:219 (<1%) | view | |
| 6 | x 6 | src/js/componentssrc/js/componentssrc/js/componentssrc/js/componentssrc/js/componentssrc/js/components | 119:126 (1%)182:189 (2%)135:142 (1%)115:122 (1%)172:179 (<1%)211:218 (<1%) | view | |
| 6 | x 6 | src/js/componentssrc/js/componentssrc/js/componentssrc/js/componentssrc/js/componentssrc/js/components | 2:9 (<1%)2:9 (4%)2:9 (1%)2:9 (<1%)2:9 (1%)2:9 (<1%) | view | |
| 6 | x 6 | src/js/componentssrc/js/componentssrc/js/componentssrc/js/componentssrc/js/componentssrc/js/components | 66:75 (1%)81:90 (2%)64:73 (1%)83:92 (1%)89:98 (<1%)99:108 (<1%) | view | |
| 6 | x 6 | src/js/componentssrc/js/componentssrc/js/componentssrc/js/componentssrc/js/componentssrc/js/components | 362:371 (1%)293:302 (2%)473:482 (1%)514:523 (1%)404:413 (2%)445:454 (2%) | view | |
| 6 | x 6 | src/js/componentssrc/js/componentssrc/js/componentssrc/js/componentssrc/js/componentssrc/js/components | 9:14 (1%)10:15 (2%)10:15 (1%)9:14 (<1%)9:14 (<1%)9:14 (<1%) | view | |
| 6 | x 6 | src/js/componentssrc/js/componentssrc/js/componentssrc/js/componentssrc/js/componentssrc/js/components | 68:76 (1%)83:91 (2%)66:74 (1%)85:93 (1%)91:99 (<1%)101:109 (<1%) | view | |
| 6 | x 6 | src/js/componentssrc/js/componentssrc/js/componentssrc/js/componentssrc/js/componentssrc/js/components | 618:624 (<1%)661:667 (<1%)607:613 (<1%)711:717 (<1%)776:782 (<1%)715:721 (<1%) | view | |
| 6 | x 5 | src/js/componentssrc/js/componentssrc/js/componentssrc/js/componentssrc/js/components | 115:121 (1%)178:184 (2%)131:137 (1%)111:117 (1%)209:216 (<1%) | view | |
| 6 | x 5 | src/js/componentssrc/js/componentssrc/js/componentssrc/js/componentssrc/js/components | 3:10 (<1%)3:10 (1%)3:10 (<1%)3:10 (1%)3:10 (<1%) | view | |
| 6 | x 5 | src/js/componentssrc/js/componentssrc/js/componentssrc/js/componentssrc/js/components | 248:253 (1%)248:253 (2%)319:324 (<1%)397:402 (<1%)375:380 (<1%) | view | |
| 6 | x 5 | src/js/componentssrc/js/componentssrc/js/componentssrc/js/componentssrc/js/components | 247:252 (1%)247:252 (2%)318:323 (<1%)396:401 (<1%)374:379 (<1%) | view | |
| 6 | x 5 | src/js/componentssrc/js/componentssrc/js/componentssrc/js/componentssrc/js/components | 4:11 (<1%)4:11 (1%)4:11 (<1%)4:11 (1%)4:11 (<1%) | view | |
| 6 | x 5 | src/js/componentssrc/js/componentssrc/js/componentssrc/js/componentssrc/js/components | 114:120 (1%)177:183 (2%)130:136 (1%)110:116 (1%)208:215 (<1%) | view | |
| 6 | x 5 | src/js/componentssrc/js/componentssrc/js/componentssrc/js/componentssrc/js/components | 250:255 (1%)250:255 (2%)321:326 (<1%)399:404 (<1%)377:382 (<1%) | view | |
| 6 | x 5 | src/js/componentssrc/js/componentssrc/js/componentssrc/js/componentssrc/js/components | 623:630 (<1%)666:673 (<1%)612:619 (<1%)781:788 (<1%)720:727 (<1%) | view | |
| 6 | x 5 | src/js/componentssrc/js/componentssrc/js/componentssrc/js/componentssrc/js/components | 246:251 (1%)246:251 (2%)317:322 (<1%)395:400 (<1%)373:378 (<1%) | view | |
| 6 | x 5 | src/js/componentssrc/js/componentssrc/js/componentssrc/js/componentssrc/js/components | 251:256 (1%)251:256 (2%)322:327 (<1%)400:405 (<1%)378:383 (<1%) | view | |
| 6 | x 5 | src/js/componentssrc/js/componentssrc/js/componentssrc/js/componentssrc/js/components | 35:42 (5%)14:21 (14%)44:51 (5%)13:20 (28%)35:42 (3%) | view | |
| 6 | x 5 | src/js/componentssrc/js/componentssrc/js/componentssrc/js/componentssrc/js/components | 249:254 (1%)249:254 (2%)320:325 (<1%)398:403 (<1%)376:381 (<1%) | view | |
| 6 | x 5 | src/js/componentssrc/js/componentssrc/js/componentssrc/js/componentssrc/js/components | 252:257 (1%)252:257 (2%)323:328 (<1%)401:406 (<1%)379:384 (<1%) | view | |
| 6 | x 5 | src/js/componentssrc/js/componentssrc/js/componentssrc/js/componentssrc/js/components | 621:629 (<1%)664:672 (<1%)610:618 (<1%)779:787 (<1%)718:726 (<1%) | view | |
| 6 | x 4 | src/js/componentssrc/js/componentssrc/js/componentssrc/js/components | 3:10 (1%)3:10 (2%)3:10 (2%)3:10 (3%) | view | |
| 6 | x 4 | src/csssrc/csssrc/csssrc/css | 316:321 (2%)251:256 (2%)170:175 (4%)371:376 (2%) | view | |
| 6 | x 4 | src/js/componentssrc/js/componentssrc/js/componentssrc/js/components | 578:583 (1%)1103:1108 (<1%)1096:1101 (<1%)1264:1269 (<1%) | view | |
| 6 | x 4 | src/csssrc/csssrc/csssrc/css | 310:315 (2%)245:250 (2%)164:169 (4%)365:370 (2%) | view | |
| 6 | x 4 | src/js/componentssrc/js/componentssrc/js/componentssrc/js/components | 810:816 (<1%)945:951 (<1%)781:787 (<1%)812:818 (<1%) | view | |
| 6 | x 4 | src/js/componentssrc/js/componentssrc/js/componentssrc/js/components | 812:818 (<1%)947:953 (<1%)783:789 (<1%)814:820 (<1%) | view | |
| 6 | x 4 | src/js/componentssrc/js/componentssrc/js/componentssrc/js/components | 809:815 (<1%)944:950 (<1%)780:786 (<1%)811:817 (<1%) | view | |
| 6 | x 4 | src/js/componentssrc/js/componentssrc/js/componentssrc/js/components | 87:92 (1%)103:108 (2%)85:90 (1%)132:140 (<1%) | view | |
| 6 | x 4 | src/js/componentssrc/js/componentssrc/js/componentssrc/js/components | 117:124 (1%)180:187 (2%)133:140 (1%)113:120 (1%) | view | |
| 6 | x 4 | src/csssrc/csssrc/csssrc/css | 317:322 (2%)252:257 (2%)171:176 (4%)372:377 (2%) | view | |
| 6 | x 4 | src/js/componentssrc/js/componentssrc/js/componentssrc/js/components | 352:357 (<1%)423:428 (<1%)274:279 (1%)407:412 (<1%) | view | |
| 6 | x 4 | src/js/componentssrc/js/componentssrc/js/componentssrc/js/components | 577:582 (1%)1102:1107 (<1%)1095:1100 (<1%)1263:1268 (<1%) | view | |
| 6 | x 4 | src/js/componentssrc/js/componentssrc/js/componentssrc/js/components | 122:127 (5%)107:112 (5%)138:143 (5%)119:124 (5%) | view | |
| 6 | x 4 | src/csssrc/csssrc/csssrc/css | 305:310 (2%)240:245 (2%)159:164 (4%)360:365 (2%) | view |
Duplicated Units
The list of top 3 duplicated units.
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."