Duplication Overall
- 3% duplication:
- 54,004 cleaned lines of cleaned code (without empty lines, comments, and frequently duplicated constructs such as imports)
- 1,896 duplicated lines
- 311 duplicates
Duplication per Extension
Duplication per Component (primary)
Longest Duplicates
The list of 50 longest duplicates.
| Size | # | Folders | Files | Lines | Code |
|---|---|---|---|---|---|
| 19 | x 2 | media-api/app/libusage/app/lib | 52:77 (50%)54:79 (48%) | view | |
| 18 | x 2 | kahuna/public/js/components/gr-image-metadatakahuna/public/js/components/gr-image-metadata | 802:821 (2%)904:923 (2%) | view | |
| 13 | x 2 | kahuna/public/js/takedownkahuna/public/js/takedown | 92:104 (5%)140:152 (5%) | view | |
| 13 | x 2 | kahuna/public/js/upload/jobskahuna/public/js/upload/jobs | 125:139 (7%)139:152 (7%) | view | |
| 13 | x 2 | kahuna/public/js/components/gr-collection-overlaykahuna/public/js/edits | 23:45 (38%)383:405 (4%) | view | |
| 13 | x 2 | kahuna/public/js/imagekahuna/public/js/upload | 244:257 (5%)57:70 (26%) | view | |
| 12 | x 2 | scripts/src/main/java/com/gu/typesafe/config/implscripts/src/main/java/com/gu/typesafe/config/impl | 232:249 (2%)270:287 (2%) | view | |
| 11 | x 2 | usage/app/modelusage/app/model | 127:137 (9%)144:154 (9%) | view | |
| 11 | x 2 | scripts/src/main/java/com/gu/typesafe/config/implscripts/src/main/java/com/gu/typesafe/config/impl | 209:221 (3%)487:499 (2%) | view | |
| 11 | x 2 | kahuna/public/js/components/gr-permissions-filterkahuna/public/js/components/gr-sort-control | 218:231 (5%)105:118 (6%) | view | |
| 10 | x 2 | kahuna/public/js/components/gr-image-metadatakahuna/public/js/components/gr-image-metadata | 810:821 (1%)861:872 (1%) | view | |
| 10 | x 2 | kahuna/public/js/components/gr-image-metadatakahuna/public/js/components/gr-image-metadata | 810:821 (1%)887:898 (1%) | view | |
| 10 | x 2 | kahuna/public/js/components/gr-image-metadatakahuna/public/js/components/gr-image-metadata | 861:872 (1%)887:898 (1%) | view | |
| 10 | x 2 | kahuna/public/js/components/gr-image-metadatakahuna/public/js/components/gr-image-metadata | 861:872 (1%)912:923 (1%) | view | |
| 10 | x 2 | kahuna/public/js/components/gr-image-metadatakahuna/public/js/components/gr-image-metadata | 887:898 (1%)912:923 (1%) | view | |
| 10 | x 2 | ROOTROOT | 124:133 (4%)163:172 (4%) | view | |
| 10 | x 2 | ROOTROOT | 192:201 (4%)216:225 (4%) | view | |
| 10 | x 2 | kahuna/public/js/takedownkahuna/public/js/takedown | 120:130 (4%)168:178 (4%) | view | |
| 10 | x 2 | scripts/src/main/java/com/gu/typesafe/config/implscripts/src/main/java/com/gu/typesafe/config/impl | 373:384 (1%)467:478 (1%) | view | |
| 10 | x 2 | kahuna/public/js/components/gr-add-keywordkahuna/public/js/components/gr-add-label | 79:92 (11%)41:55 (15%) | view | |
| 9 | x 2 | ROOTROOT | 139:147 (4%)178:186 (4%) | view | |
| 9 | x 2 | dev/cloudformationdev/cloudformation | 94:102 (2%)134:142 (2%) | view | |
| 9 | x 2 | dev/cloudformationdev/cloudformation | 94:102 (2%)148:156 (2%) | view | |
| 9 | x 2 | dev/cloudformationdev/cloudformation | 94:102 (2%)242:250 (2%) | view | |
| 9 | x 2 | dev/cloudformationdev/cloudformation | 94:102 (2%)256:264 (2%) | view | |
| 9 | x 2 | dev/cloudformationdev/cloudformation | 94:102 (2%)270:278 (2%) | view | |
| 9 | x 2 | dev/cloudformationdev/cloudformation | 94:102 (2%)287:295 (2%) | view | |
| 9 | x 2 | dev/cloudformationdev/cloudformation | 134:142 (2%)148:156 (2%) | view | |
| 9 | x 2 | dev/cloudformationdev/cloudformation | 134:142 (2%)242:250 (2%) | view | |
| 9 | x 2 | dev/cloudformationdev/cloudformation | 134:142 (2%)256:264 (2%) | view | |
| 9 | x 2 | dev/cloudformationdev/cloudformation | 134:142 (2%)270:278 (2%) | view | |
| 9 | x 2 | dev/cloudformationdev/cloudformation | 134:142 (2%)287:295 (2%) | view | |
| 9 | x 2 | dev/cloudformationdev/cloudformation | 148:156 (2%)242:250 (2%) | view | |
| 9 | x 2 | dev/cloudformationdev/cloudformation | 148:156 (2%)256:264 (2%) | view | |
| 9 | x 2 | dev/cloudformationdev/cloudformation | 148:156 (2%)270:278 (2%) | view | |
| 9 | x 2 | dev/cloudformationdev/cloudformation | 148:156 (2%)287:295 (2%) | view | |
| 9 | x 2 | dev/cloudformationdev/cloudformation | 242:250 (2%)256:264 (2%) | view | |
| 9 | x 2 | dev/cloudformationdev/cloudformation | 242:250 (2%)270:278 (2%) | view | |
| 9 | x 2 | dev/cloudformationdev/cloudformation | 242:250 (2%)287:295 (2%) | view | |
| 9 | x 2 | dev/cloudformationdev/cloudformation | 256:264 (2%)270:278 (2%) | view | |
| 9 | x 2 | dev/cloudformationdev/cloudformation | 256:264 (2%)287:295 (2%) | view | |
| 9 | x 2 | dev/cloudformationdev/cloudformation | 270:278 (2%)287:295 (2%) | view | |
| 9 | x 2 | kahuna/public/js/takedownkahuna/public/js/takedown | 166:174 (3%)231:239 (3%) | view | |
| 9 | x 2 | kahuna/public/js/takedownkahuna/public/js/takedown | 186:194 (3%)247:255 (3%) | view | |
| 9 | x 2 | kahuna/public/js/editskahuna/public/js/edits | 329:339 (2%)344:354 (2%) | view | |
| 9 | x 2 | kahuna/public/js/upload/jobskahuna/public/js/upload/jobs | 144:152 (5%)165:173 (5%) | view | |
| 9 | x 2 | common-lib/src/main/scal...ediaservice/lib/imagingcommon-lib/src/main/scal...ediaservice/lib/imaging | 287:296 (4%)311:320 (4%) | view | |
| 9 | x 2 | scripts/src/main/java/com/gu/typesafe/config/implscripts/src/main/java/com/gu/typesafe/config/impl | 38:52 (30%)38:52 (30%) | view | |
| 9 | x 2 | scripts/src/main/java/com/gu/typesafe/config/implscripts/src/main/java/com/gu/typesafe/config/impl | 181:191 (4%)65:75 (5%) | view | |
| 9 | x 2 | kahuna/public/js/components/gr-search-wrapperkahuna/public/js/search | 13:21 (47%)85:93 (13%) | view |
Most Frequent Duplicates
The list of 30 most frequently found duplicates.
| Size | # | Folders | Files | Lines | Code |
|---|---|---|---|---|---|
| 6 | x 9 | dev/cloudformationdev/cloudformationdev/cloudformationdev/cloudformationdev/cloudformationdev/cloudformationdev/cloudformationdev/cloudformationdev/cloudformation | 97:102 (1%)113:118 (1%)137:142 (1%)151:156 (1%)167:172 (1%)245:250 (1%)259:264 (1%)273:278 (1%)290:295 (1%) | view | |
| 6 | x 9 | dev/cloudformationdev/cloudformationdev/cloudformationdev/cloudformationdev/cloudformationdev/cloudformationdev/cloudformationdev/cloudformationdev/cloudformation | 96:101 (1%)112:117 (1%)136:141 (1%)150:155 (1%)166:171 (1%)244:249 (1%)258:263 (1%)272:277 (1%)289:294 (1%) | view | |
| 6 | x 8 | kahuna/public/stylesheetskahuna/public/stylesheetskahuna/public/stylesheetskahuna/public/stylesheetskahuna/public/stylesheetskahuna/public/stylesheetskahuna/public/stylesheetskahuna/public/stylesheets | 104:110 (<1%)113:119 (<1%)122:128 (<1%)131:137 (<1%)140:146 (<1%)149:155 (<1%)158:164 (<1%)167:173 (<1%) | view | |
| 6 | x 8 | kahuna/public/stylesheetskahuna/public/stylesheetskahuna/public/stylesheetskahuna/public/stylesheetskahuna/public/stylesheetskahuna/public/stylesheetskahuna/public/stylesheetskahuna/public/stylesheets | 248:254 (<1%)257:263 (<1%)266:272 (<1%)275:281 (<1%)284:290 (<1%)293:299 (<1%)302:308 (<1%)311:317 (<1%) | view | |
| 6 | x 8 | kahuna/public/stylesheetskahuna/public/stylesheetskahuna/public/stylesheetskahuna/public/stylesheetskahuna/public/stylesheetskahuna/public/stylesheetskahuna/public/stylesheetskahuna/public/stylesheets | 176:182 (<1%)185:191 (<1%)194:200 (<1%)203:209 (<1%)212:218 (<1%)221:227 (<1%)230:236 (<1%)239:245 (<1%) | view | |
| 6 | x 8 | kahuna/public/stylesheetskahuna/public/stylesheetskahuna/public/stylesheetskahuna/public/stylesheetskahuna/public/stylesheetskahuna/public/stylesheetskahuna/public/stylesheetskahuna/public/stylesheets | 27:38 (<1%)41:47 (<1%)50:56 (<1%)59:65 (<1%)68:74 (<1%)77:83 (<1%)86:92 (<1%)95:101 (<1%) | view | |
| 6 | x 7 | dev/cloudformationdev/cloudformationdev/cloudformationdev/cloudformationdev/cloudformationdev/cloudformationdev/cloudformation | 95:100 (1%)135:140 (1%)149:154 (1%)243:248 (1%)257:262 (1%)271:276 (1%)288:293 (1%) | view | |
| 6 | x 7 | dev/cloudformationdev/cloudformationdev/cloudformationdev/cloudformationdev/cloudformationdev/cloudformationdev/cloudformation | 94:99 (1%)134:139 (1%)148:153 (1%)242:247 (1%)256:261 (1%)270:275 (1%)287:292 (1%) | view | |
| 6 | x 5 | thrall/app/viewsthrall/app/viewsthrall/app/viewsthrall/app/viewsthrall/app/views | 13:21 (16%)9:17 (26%)9:17 (24%)13:21 (14%)10:18 (26%) | view | |
| 6 | x 5 | kahuna/public/js/components/gr-image-metadatakahuna/public/js/components/gr-image-metadatakahuna/public/js/components/gr-image-metadatakahuna/public/js/components/gr-image-metadatakahuna/public/js/components/gr-image-metadata | 802:807 (<1%)827:832 (<1%)852:857 (<1%)878:883 (<1%)904:909 (<1%) | view | |
| 6 | x 5 | kahuna/public/js/components/gr-image-metadatakahuna/public/js/components/gr-image-metadatakahuna/public/js/components/gr-image-metadatakahuna/public/js/components/gr-image-metadatakahuna/public/js/components/gr-image-metadata | 810:815 (<1%)835:840 (<1%)861:866 (<1%)887:892 (<1%)912:917 (<1%) | view | |
| 6 | x 5 | kahuna/public/js/components/gr-image-metadatakahuna/public/js/components/gr-image-metadatakahuna/public/js/components/gr-image-metadatakahuna/public/js/components/gr-image-metadatakahuna/public/js/components/gr-image-metadata | 811:817 (<1%)836:842 (<1%)862:868 (<1%)888:894 (<1%)913:919 (<1%) | view | |
| 6 | x 5 | kahuna/public/js/components/gr-image-metadatakahuna/public/js/components/gr-image-metadatakahuna/public/js/components/gr-image-metadatakahuna/public/js/components/gr-image-metadatakahuna/public/js/components/gr-image-metadata | 803:808 (<1%)828:833 (<1%)853:858 (<1%)879:884 (<1%)905:910 (<1%) | view | |
| 6 | x 5 | kahuna/public/js/takedownkahuna/public/js/takedownkahuna/public/js/takedownkahuna/public/js/takedownkahuna/public/js/takedown | 76:81 (2%)104:109 (2%)183:188 (2%)218:223 (2%)221:226 (2%) | view | |
| 6 | x 4 | kahuna/public/js/components/gr-image-metadatakahuna/public/js/components/gr-image-metadatakahuna/public/js/components/gr-image-metadatakahuna/public/js/components/gr-image-metadata | 813:820 (<1%)864:871 (<1%)890:897 (<1%)915:922 (<1%) | view | |
| 6 | x 4 | kahuna/public/js/takedownkahuna/public/js/takedownkahuna/public/js/takedownkahuna/public/js/takedown | 120:125 (2%)168:173 (2%)197:202 (2%)233:238 (2%) | view | |
| 6 | x 4 | kahuna/public/js/components/gr-image-metadatakahuna/public/js/components/gr-image-metadatakahuna/public/js/components/gr-image-metadatakahuna/public/js/components/gr-image-metadata | 812:818 (<1%)863:869 (<1%)889:895 (<1%)914:920 (<1%) | view | |
| 6 | x 4 | kahuna/public/js/components/gr-image-metadatakahuna/public/js/components/gr-image-metadatakahuna/public/js/components/gr-image-metadatakahuna/public/js/components/gr-image-metadata | 814:821 (<1%)865:872 (<1%)891:898 (<1%)916:923 (<1%) | view | |
| 6 | x 3 | kahuna/public/js/searchkahuna/public/js/uploadkahuna/public/js/image | 118:123 (2%)64:69 (12%)251:256 (2%) | view | |
| 6 | x 3 | image-embedder-lambda/src/embedderimage-embedder-lambda/src/embedderimage-embedder-lambda/src/embedder | 35:40 (3%)44:49 (3%)53:58 (3%) | view | |
| 6 | x 3 | kahuna/public/js/takedownkahuna/public/js/takedownkahuna/public/js/takedown | 121:126 (2%)169:174 (2%)234:239 (2%) | view | |
| 6 | x 3 | kahuna/public/js/directives/ui-crop-boxkahuna/public/stylesheetskahuna/public/js/directives/ui-crop-box | 14:21 (7%)2178:2185 (<1%)34:41 (7%) | view | |
| 6 | x 3 | kahuna/public/js/components/gr-add-keywordkahuna/public/js/components/gr-image-metadatakahuna/public/js/edits | 31:36 (6%)289:294 (1%)94:99 (1%) | view | |
| 6 | x 3 | scripts/src/main/java/com/gu/typesafe/config/implscripts/src/main/java/com/gu/typesafe/config/implscripts/src/main/java/com/gu/typesafe/config/impl | 19:28 (20%)19:28 (20%)19:28 (20%) | view | |
| 6 | x 3 | image-embedder-lambda/src/embedderimage-embedder-lambda/src/embedderimage-embedder-lambda/src/embedder | 34:39 (3%)43:48 (3%)52:57 (3%) | view | |
| 6 | x 3 | kahuna/public/js/upload/jobskahuna/public/js/upload/jobskahuna/public/js/upload/jobs | 129:134 (3%)143:148 (3%)165:170 (3%) | view | |
| 6 | x 3 | kahuna/public/js/directives/ui-crop-boxkahuna/public/stylesheetskahuna/public/js/directives/ui-crop-box | 13:19 (7%)2177:2183 (<1%)33:39 (7%) | view | |
| 6 | x 3 | kahuna/public/js/components/gr-sort-controlkahuna/public/js/components/gr-usagerights-summarykahuna/public/js/components/gr-permissions-filter | 206:211 (3%)125:130 (6%)256:261 (2%) | view | |
| 6 | x 3 | kahuna/public/js/directives/ui-crop-boxkahuna/public/stylesheetskahuna/public/js/directives/ui-crop-box | 12:17 (7%)2176:2181 (<1%)32:37 (7%) | view | |
| 6 | x 3 | kahuna/public/js/components/gr-add-keywordkahuna/public/js/components/gr-image-metadatakahuna/public/js/edits | 30:35 (6%)288:293 (1%)93:98 (1%) | view |
Duplicated Units
The list of top 2 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."