guardian/feast-multiplatform-library
Duplication Places in code with 6 or more lines that are exactly the same. |
Duplication Overall
- 17% duplication:
- 4,031 cleaned lines of cleaned code (without empty lines, comments, and frequently duplicated constructs such as imports)
- 723 duplicated lines
- 73 duplicates
Duplication per Extension
Duplication per Component (primary)
Longest Duplicates
The list of 50 longest duplicates.
| Size | # | Folders | Files | Lines | Code |
|---|---|---|---|---|---|
| 46 | x 2 | library/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipe | 935:982 (5%)993:1040 (5%) | view | |
| 18 | x 2 | library/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipe | 621:638 (2%)717:734 (2%) | view | |
| 18 | x 2 | library/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipe | 431:448 (3%)466:483 (3%) | view | |
| 18 | x 2 | library/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipe | 431:448 (3%)490:507 (3%) | view | |
| 18 | x 2 | library/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipe | 431:448 (3%)514:531 (3%) | view | |
| 18 | x 2 | library/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipe | 466:483 (3%)490:507 (3%) | view | |
| 18 | x 2 | library/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipe | 466:483 (3%)514:531 (3%) | view | |
| 18 | x 2 | library/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipe | 490:507 (3%)514:531 (3%) | view | |
| 17 | x 2 | library/src/androidMain/...in/com/gu/recipe/loaderlibrary/src/iosMain/kotlin/com/gu/recipe/loader | 25:49 (20%)23:46 (17%) | view | |
| 16 | x 2 | library/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipe | 829:844 (1%)855:870 (1%) | view | |
| 14 | x 2 | library/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipe | 463:478 (1%)487:502 (1%) | view | |
| 14 | x 2 | library/src/commonTest/k.../com/gu/recipe/templatelibrary/src/commonTest/k.../com/gu/recipe/template | 11:25 (26%)49:63 (26%) | view | |
| 13 | x 2 | library/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipe | 463:477 (1%)511:525 (1%) | view | |
| 13 | x 2 | library/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipe | 487:501 (1%)511:525 (1%) | view | |
| 12 | x 2 | library/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipe | 538:549 (2%)556:567 (2%) | view | |
| 12 | x 2 | library/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipe | 538:549 (2%)609:620 (2%) | view | |
| 12 | x 2 | library/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipe | 556:567 (2%)609:620 (2%) | view | |
| 11 | x 2 | library/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipe | 107:117 (1%)159:169 (1%) | view | |
| 10 | x 2 | library/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipe | 398:409 (1%)422:433 (1%) | view | |
| 10 | x 2 | library/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipe | 398:409 (1%)446:457 (1%) | view | |
| 10 | x 2 | library/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipe | 422:433 (1%)446:457 (1%) | view | |
| 9 | x 2 | library/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipe | 43:51 (1%)547:555 (1%) | view | |
| 9 | x 2 | library/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipe | 546:554 (1%)867:875 (1%) | view | |
| 9 | x 2 | library/src/androidMain/...in/com/gu/recipe/loaderlibrary/src/iosMain/kotlin/com/gu/recipe/loader | 51:63 (10%)49:61 (9%) | view | |
| 8 | x 2 | library/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipe | 43:50 (<1%)868:875 (<1%) | view | |
| 8 | x 2 | library/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipe | 642:651 (<1%)738:747 (<1%) | view | |
| 8 | x 2 | library/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipe | 111:118 (1%)146:153 (1%) | view | |
| 8 | x 2 | library/src/jsMain/kotlin/com/gu/recipe/jslibrary/src/jsMain/kotlin/com/gu/recipe/js | 22:29 (18%)45:52 (18%) | view | |
| 7 | x 2 | library/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipe | 31:37 (<1%)70:76 (<1%) | view | |
| 7 | x 2 | library/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipe | 377:385 (<1%)401:409 (<1%) | view | |
| 7 | x 2 | library/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipe | 377:385 (<1%)425:433 (<1%) | view | |
| 7 | x 2 | library/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipe | 377:385 (<1%)449:457 (<1%) | view | |
| 7 | x 2 | library/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipe | 749:755 (<1%)762:768 (<1%) | view | |
| 7 | x 2 | library/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipe | 749:755 (<1%)788:794 (<1%) | view | |
| 7 | x 2 | library/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipe | 762:768 (<1%)788:794 (<1%) | view | |
| 7 | x 2 | library/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipe | 841:847 (<1%)877:883 (<1%) | view | |
| 7 | x 2 | library/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipe | 146:152 (1%)163:169 (1%) | view | |
| 7 | x 2 | library/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipe | 502:508 (1%)598:604 (1%) | view | |
| 7 | x 2 | library/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/k.../com/gu/recipe/template | 263:269 (1%)14:20 (13%) | view | |
| 7 | x 2 | library/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/k.../com/gu/recipe/template | 263:269 (1%)52:58 (13%) | view | |
| 6 | x 2 | library/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipe | 15:20 (<1%)311:316 (<1%) | view | |
| 6 | x 2 | library/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipe | 15:20 (<1%)538:543 (<1%) | view | |
| 6 | x 2 | library/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipe | 311:316 (<1%)538:543 (<1%) | view | |
| 6 | x 2 | library/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipe | 621:626 (<1%)801:806 (<1%) | view | |
| 6 | x 2 | library/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipe | 621:626 (<1%)829:834 (<1%) | view | |
| 6 | x 2 | library/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipe | 621:626 (<1%)855:860 (<1%) | view | |
| 6 | x 2 | library/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipe | 717:722 (<1%)801:806 (<1%) | view | |
| 6 | x 2 | library/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipe | 717:722 (<1%)829:834 (<1%) | view | |
| 6 | x 2 | library/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipe | 717:722 (<1%)855:860 (<1%) | view | |
| 6 | x 2 | library/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipe | 801:806 (<1%)829:834 (<1%) | view |
Most Frequent Duplicates
The list of 48 most frequently found duplicates.
| Size | # | Folders | Files | Lines | Code |
|---|---|---|---|---|---|
| 6 | x 5 | library/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipe | 621:626 (<1%)717:722 (<1%)801:806 (<1%)829:834 (<1%)855:860 (<1%) | view | |
| 6 | x 5 | library/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipe | 443:448 (1%)478:483 (1%)502:507 (1%)526:531 (1%)598:603 (1%) | view | |
| 6 | x 4 | library/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipe | 431:436 (1%)466:471 (1%)490:495 (1%)514:519 (1%) | view | |
| 6 | x 4 | library/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipe | 441:446 (1%)476:481 (1%)500:505 (1%)524:529 (1%) | view | |
| 6 | x 4 | library/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipe | 377:383 (<1%)401:407 (<1%)425:431 (<1%)449:455 (<1%) | view | |
| 6 | x 4 | library/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipe | 434:439 (1%)469:474 (1%)493:498 (1%)517:522 (1%) | view | |
| 6 | x 4 | library/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipe | 438:443 (1%)473:478 (1%)497:502 (1%)521:526 (1%) | view | |
| 6 | x 4 | library/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipe | 437:442 (1%)472:477 (1%)496:501 (1%)520:525 (1%) | view | |
| 6 | x 4 | library/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipe | 435:440 (1%)470:475 (1%)494:499 (1%)518:523 (1%) | view | |
| 6 | x 4 | library/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipe | 433:438 (1%)468:473 (1%)492:497 (1%)516:521 (1%) | view | |
| 6 | x 4 | library/src/commonTest/k...m/gu/recipe/terminologylibrary/src/commonTest/k...m/gu/recipe/terminologylibrary/src/commonTest/k...m/gu/recipe/terminologylibrary/src/commonTest/k...m/gu/recipe/terminology | 17:23 (6%)38:44 (6%)60:66 (6%)81:87 (6%) | view | |
| 6 | x 4 | library/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipe | 440:445 (1%)475:480 (1%)499:504 (1%)523:528 (1%) | view | |
| 6 | x 4 | library/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipe | 439:444 (1%)474:479 (1%)498:503 (1%)522:527 (1%) | view | |
| 6 | x 4 | library/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipe | 442:447 (1%)477:482 (1%)501:506 (1%)525:530 (1%) | view | |
| 6 | x 4 | library/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipe | 436:441 (1%)471:476 (1%)495:500 (1%)519:524 (1%) | view | |
| 6 | x 4 | library/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipe | 378:385 (<1%)402:409 (<1%)426:433 (<1%)450:457 (<1%) | view | |
| 6 | x 4 | library/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipe | 432:437 (1%)467:472 (1%)491:496 (1%)515:520 (1%) | view | |
| 6 | x 3 | library/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipe | 400:406 (<1%)424:430 (<1%)448:454 (<1%) | view | |
| 6 | x 3 | library/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipe | 44:49 (<1%)548:553 (<1%)869:874 (<1%) | view | |
| 6 | x 3 | library/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipe | 544:549 (1%)562:567 (1%)615:620 (1%) | view | |
| 6 | x 3 | library/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipe | 112:117 (1%)147:152 (1%)164:169 (1%) | view | |
| 6 | x 3 | library/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipe | 463:469 (<1%)487:493 (<1%)511:517 (<1%) | view | |
| 6 | x 3 | library/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipe | 543:548 (1%)561:566 (1%)614:619 (1%) | view | |
| 6 | x 3 | library/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipe | 398:403 (<1%)422:427 (<1%)446:451 (<1%) | view | |
| 6 | x 3 | library/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/k.../com/gu/recipe/templatelibrary/src/commonTest/k.../com/gu/recipe/template | 263:268 (1%)14:19 (11%)52:57 (11%) | view | |
| 6 | x 3 | library/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipe | 111:116 (1%)146:151 (1%)163:168 (1%) | view | |
| 6 | x 3 | library/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipe | 538:543 (1%)556:561 (1%)609:614 (1%) | view | |
| 6 | x 3 | library/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipe | 469:475 (<1%)493:499 (<1%)517:523 (<1%) | view | |
| 6 | x 3 | library/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipe | 468:473 (<1%)492:497 (<1%)516:521 (<1%) | view | |
| 6 | x 3 | library/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipe | 910:915 (<1%)954:959 (<1%)1012:1017 (<1%) | view | |
| 6 | x 3 | library/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipe | 15:20 (<1%)311:316 (<1%)538:543 (<1%) | view | |
| 6 | x 3 | library/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipe | 467:472 (<1%)491:496 (<1%)515:520 (<1%) | view | |
| 6 | x 3 | library/src/commonTest/kotlin/com/gu/recipe/loaderlibrary/src/commonTest/kotlin/com/gu/recipe/loaderlibrary/src/commonTest/kotlin/com/gu/recipe/loader | 84:93 (5%)117:126 (5%)130:139 (5%) | view | |
| 6 | x 3 | library/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipe | 464:470 (<1%)488:494 (<1%)512:518 (<1%) | view | |
| 6 | x 3 | library/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipe | 470:476 (<1%)494:500 (<1%)518:524 (<1%) | view | |
| 6 | x 3 | library/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipe | 542:547 (1%)560:565 (1%)613:618 (1%) | view | |
| 6 | x 3 | library/src/commonTest/k...m/gu/recipe/terminologylibrary/src/commonTest/k...m/gu/recipe/terminologylibrary/src/commonTest/k...m/gu/recipe/terminology | 10:15 (6%)31:36 (6%)74:79 (6%) | view | |
| 6 | x 3 | library/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipe | 471:477 (<1%)495:501 (<1%)519:525 (<1%) | view | |
| 6 | x 3 | library/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipe | 45:50 (<1%)549:554 (<1%)870:875 (<1%) | view | |
| 6 | x 3 | library/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipe | 750:755 (<1%)763:768 (<1%)789:794 (<1%) | view | |
| 6 | x 3 | library/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/k.../com/gu/recipe/templatelibrary/src/commonTest/k.../com/gu/recipe/template | 264:269 (1%)15:20 (11%)53:58 (11%) | view | |
| 6 | x 3 | library/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipe | 466:471 (<1%)490:495 (<1%)514:519 (<1%) | view | |
| 6 | x 3 | library/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipe | 541:546 (1%)559:564 (1%)612:617 (1%) | view | |
| 6 | x 3 | library/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipe | 399:404 (<1%)423:428 (<1%)447:452 (<1%) | view | |
| 6 | x 3 | library/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipe | 749:754 (<1%)762:767 (<1%)788:793 (<1%) | view | |
| 6 | x 3 | library/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipe | 43:48 (<1%)547:552 (<1%)868:873 (<1%) | view | |
| 6 | x 3 | library/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipe | 539:544 (1%)557:562 (1%)610:615 (1%) | view | |
| 6 | x 3 | library/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipelibrary/src/commonTest/kotlin/com/gu/recipe | 540:545 (1%)558:563 (1%)611:616 (1%) | 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."