Duplication Overall
- 16% duplication:
- 26,843 cleaned lines of cleaned code (without empty lines, comments, and frequently duplicated constructs such as imports)
- 4,530 duplicated lines
- 529 duplicates
Duplication per Extension
Duplication per Component (primary)
Duplication Between Components (50+ lines)
flowchart TB
n0["chess"]
n1["tv"]
n2["waker"]
n3["cameo"]
n4["learning"]
n5["cost"]
n6["games"]
n7["factuality"]
n8["history"]
n9["smash"]
n10["startupcon"]
n11["recap"]
n12["bricks"]
n13["artifacts"]
n14["oxford"]
n15["tedx"]
n0 ---|"760"| n1
n1 ---|"384"| n2
n0 ---|"293"| n2
n3 ---|"252"| n4
n5 ---|"110"| n6
n7 ---|"110"| n8
n9 ---|"110"| n10
n11 ---|"110"| n2
n12 ---|"110"| n5
n7 ---|"110"| n9
n8 ---|"110"| n10
n12 ---|"110"| n6
n7 ---|"110"| n10
n8 ---|"110"| n9
n12 ---|"110"| n8
n6 ---|"110"| n9
n5 ---|"110"| n10
n12 ---|"110"| n7
n6 ---|"110"| n10
n5 ---|"110"| n9
n12 ---|"110"| n10
n7 ---|"110"| n6
n5 ---|"110"| n8
n12 ---|"110"| n9
n6 ---|"110"| n8
n5 ---|"110"| n7
n6 ---|"110"| n11
n5 ---|"110"| n2
n6 ---|"110"| n2
n5 ---|"110"| n11
n12 ---|"110"| n2
n12 ---|"110"| n11
n11 ---|"110"| n9
n10 ---|"110"| n2
n9 ---|"110"| n2
n11 ---|"110"| n10
n7 ---|"110"| n11
n8 ---|"110"| n2
n7 ---|"110"| n2
n8 ---|"110"| n11
n13 ---|"104"| n7
n14 ---|"84"| n15
n14 ---|"84"| n11
n15 ---|"84"| n2
n14 ---|"84"| n2
n11 ---|"84"| n15
n12 ---|"84"| n15
n12 ---|"84"| n14
n6 ---|"84"| n14
n5 ---|"84"| n15
classDef default fill:#00b2ee,stroke:#ffffff,color:#000000;
classDef highlighted fill:#00b2ee,stroke:#ffffff,color:#000000;
linkStyle 0 stroke:#DC143CFF,stroke-width:10px
linkStyle 1 stroke:#DC143CA5,stroke-width:5px
linkStyle 2 stroke:#DC143C82,stroke-width:3px
linkStyle 3 stroke:#DC143C82,stroke-width:3px
linkStyle 4 stroke:#DC143C5E,stroke-width:1px
linkStyle 5 stroke:#DC143C5E,stroke-width:1px
linkStyle 6 stroke:#DC143C5E,stroke-width:1px
linkStyle 7 stroke:#DC143C5E,stroke-width:1px
linkStyle 8 stroke:#DC143C5E,stroke-width:1px
linkStyle 9 stroke:#DC143C5E,stroke-width:1px
linkStyle 10 stroke:#DC143C5E,stroke-width:1px
linkStyle 11 stroke:#DC143C5E,stroke-width:1px
linkStyle 12 stroke:#DC143C5E,stroke-width:1px
linkStyle 13 stroke:#DC143C5E,stroke-width:1px
linkStyle 14 stroke:#DC143C5E,stroke-width:1px
linkStyle 15 stroke:#DC143C5E,stroke-width:1px
linkStyle 16 stroke:#DC143C5E,stroke-width:1px
linkStyle 17 stroke:#DC143C5E,stroke-width:1px
linkStyle 18 stroke:#DC143C5E,stroke-width:1px
linkStyle 19 stroke:#DC143C5E,stroke-width:1px
linkStyle 20 stroke:#DC143C5E,stroke-width:1px
linkStyle 21 stroke:#DC143C5E,stroke-width:1px
linkStyle 22 stroke:#DC143C5E,stroke-width:1px
linkStyle 23 stroke:#DC143C5E,stroke-width:1px
linkStyle 24 stroke:#DC143C5E,stroke-width:1px
linkStyle 25 stroke:#DC143C5E,stroke-width:1px
linkStyle 26 stroke:#DC143C5E,stroke-width:1px
linkStyle 27 stroke:#DC143C5E,stroke-width:1px
linkStyle 28 stroke:#DC143C5E,stroke-width:1px
linkStyle 29 stroke:#DC143C5E,stroke-width:1px
linkStyle 30 stroke:#DC143C5E,stroke-width:1px
linkStyle 31 stroke:#DC143C5E,stroke-width:1px
linkStyle 32 stroke:#DC143C5E,stroke-width:1px
linkStyle 33 stroke:#DC143C5E,stroke-width:1px
linkStyle 34 stroke:#DC143C5E,stroke-width:1px
linkStyle 35 stroke:#DC143C5E,stroke-width:1px
linkStyle 36 stroke:#DC143C5E,stroke-width:1px
linkStyle 37 stroke:#DC143C5E,stroke-width:1px
linkStyle 38 stroke:#DC143C5E,stroke-width:1px
linkStyle 39 stroke:#DC143C5E,stroke-width:1px
linkStyle 40 stroke:#DC143C5E,stroke-width:1px
linkStyle 41 stroke:#DC143C5E,stroke-width:1px
linkStyle 42 stroke:#DC143C5E,stroke-width:1px
linkStyle 43 stroke:#DC143C5E,stroke-width:1px
linkStyle 44 stroke:#DC143C5E,stroke-width:1px
linkStyle 45 stroke:#DC143C5E,stroke-width:1px
linkStyle 46 stroke:#DC143C5E,stroke-width:1px
linkStyle 47 stroke:#DC143C5E,stroke-width:1px
linkStyle 48 stroke:#DC143C5E,stroke-width:1px
linkStyle 49 stroke:#DC143C5E,stroke-width:1px
Download:
Mermaid (.mmd)
(open online Mermaid editor)
2D force graph
|
3D force graph
Show more details on duplication between components...
From Component
--> To Component
Duplicated
Lines
File Pairs
Details
chess (6%)
  --> tv (18%)
760
7 file pairs
details...
tv (9%)
  --> waker (14%)
384
4 file pairs
details...
chess (2%)
  --> waker (11%)
293
3 file pairs
details...
cameo (7%)
  --> learning (2%)
252
6 file pairs
details...
cost (93%)
  --> games (2%)
110
2 file pairs
details...
factuality (27%)
  --> history (16%)
110
2 file pairs
details...
smash (5%)
  --> startupcon (87%)
110
2 file pairs
details...
recap (93%)
  --> waker (4%)
110
2 file pairs
details...
bricks (93%)
  --> cost (93%)
110
2 file pairs
details...
factuality (27%)
  --> smash (5%)
110
2 file pairs
details...
history (16%)
  --> startupcon (87%)
110
2 file pairs
details...
bricks (93%)
  --> games (2%)
110
2 file pairs
details...
factuality (27%)
  --> startupcon (87%)
110
2 file pairs
details...
history (16%)
  --> smash (5%)
110
2 file pairs
details...
bricks (93%)
  --> history (16%)
110
2 file pairs
details...
games (2%)
  --> smash (5%)
110
2 file pairs
details...
cost (93%)
  --> startupcon (87%)
110
2 file pairs
details...
bricks (93%)
  --> factuality (27%)
110
2 file pairs
details...
games (2%)
  --> startupcon (87%)
110
2 file pairs
details...
cost (93%)
  --> smash (5%)
110
2 file pairs
details...
bricks (93%)
  --> startupcon (87%)
110
2 file pairs
details...
factuality (27%)
  --> games (2%)
110
2 file pairs
details...
cost (93%)
  --> history (16%)
110
2 file pairs
details...
bricks (93%)
  --> smash (5%)
110
2 file pairs
details...
games (2%)
  --> history (16%)
110
2 file pairs
details...
cost (93%)
  --> factuality (27%)
110
2 file pairs
details...
games (2%)
  --> recap (93%)
110
2 file pairs
details...
cost (93%)
  --> waker (4%)
110
2 file pairs
details...
games (2%)
  --> waker (4%)
110
2 file pairs
details...
cost (93%)
  --> recap (93%)
110
2 file pairs
details...
bricks (93%)
  --> waker (4%)
110
2 file pairs
details...
bricks (93%)
  --> recap (93%)
110
2 file pairs
details...
recap (93%)
  --> smash (5%)
110
2 file pairs
details...
startupcon (87%)
  --> waker (4%)
110
2 file pairs
details...
smash (5%)
  --> waker (4%)
110
2 file pairs
details...
recap (93%)
  --> startupcon (87%)
110
2 file pairs
details...
factuality (27%)
  --> recap (93%)
110
2 file pairs
details...
history (16%)
  --> waker (4%)
110
2 file pairs
details...
factuality (27%)
  --> waker (4%)
110
2 file pairs
details...
history (16%)
  --> recap (93%)
110
2 file pairs
details...
artifacts (5%)
  --> factuality (26%)
104
1 file pair
details...
oxford (71%)
  --> tedx (91%)
84
2 file pairs
details...
oxford (71%)
  --> recap (71%)
84
2 file pairs
details...
tedx (91%)
  --> waker (3%)
84
2 file pairs
details...
oxford (71%)
  --> waker (3%)
84
2 file pairs
details...
recap (71%)
  --> tedx (91%)
84
2 file pairs
details...
bricks (71%)
  --> tedx (91%)
84
2 file pairs
details...
bricks (71%)
  --> oxford (71%)
84
2 file pairs
details...
games (1%)
  --> oxford (71%)
84
2 file pairs
details...
cost (71%)
  --> tedx (91%)
84
2 file pairs
details...
games (1%)
  --> tedx (91%)
84
2 file pairs
details...
cost (71%)
  --> oxford (71%)
84
2 file pairs
details...
factuality (21%)
  --> oxford (71%)
84
2 file pairs
details...
history (12%)
  --> tedx (91%)
84
2 file pairs
details...
factuality (21%)
  --> tedx (91%)
84
2 file pairs
details...
history (12%)
  --> oxford (71%)
84
2 file pairs
details...
oxford (71%)
  --> smash (4%)
84
2 file pairs
details...
startupcon (66%)
  --> tedx (91%)
84
2 file pairs
details...
smash (4%)
  --> tedx (91%)
84
2 file pairs
details...
oxford (71%)
  --> startupcon (66%)
84
2 file pairs
details...
factuality (13%)
  --> kundali (11%)
54
1 file pair
details...
flowchart TB
n0["chess"]
n1["tv"]
n2["waker"]
n3["cameo"]
n4["learning"]
n5["cost"]
n6["games"]
n7["factuality"]
n8["history"]
n9["smash"]
n10["startupcon"]
n11["recap"]
n12["bricks"]
n13["artifacts"]
n14["oxford"]
n15["tedx"]
n0 ---|"760"| n1
n1 ---|"384"| n2
n0 ---|"293"| n2
n3 ---|"252"| n4
n5 ---|"110"| n6
n7 ---|"110"| n8
n9 ---|"110"| n10
n11 ---|"110"| n2
n12 ---|"110"| n5
n7 ---|"110"| n9
n8 ---|"110"| n10
n12 ---|"110"| n6
n7 ---|"110"| n10
n8 ---|"110"| n9
n12 ---|"110"| n8
n6 ---|"110"| n9
n5 ---|"110"| n10
n12 ---|"110"| n7
n6 ---|"110"| n10
n5 ---|"110"| n9
n12 ---|"110"| n10
n7 ---|"110"| n6
n5 ---|"110"| n8
n12 ---|"110"| n9
n6 ---|"110"| n8
n5 ---|"110"| n7
n6 ---|"110"| n11
n5 ---|"110"| n2
n6 ---|"110"| n2
n5 ---|"110"| n11
n12 ---|"110"| n2
n12 ---|"110"| n11
n11 ---|"110"| n9
n10 ---|"110"| n2
n9 ---|"110"| n2
n11 ---|"110"| n10
n7 ---|"110"| n11
n8 ---|"110"| n2
n7 ---|"110"| n2
n8 ---|"110"| n11
n13 ---|"104"| n7
n14 ---|"84"| n15
n14 ---|"84"| n11
n15 ---|"84"| n2
n14 ---|"84"| n2
n11 ---|"84"| n15
n12 ---|"84"| n15
n12 ---|"84"| n14
n6 ---|"84"| n14
n5 ---|"84"| n15
classDef default fill:#00b2ee,stroke:#ffffff,color:#000000;
classDef highlighted fill:#00b2ee,stroke:#ffffff,color:#000000;
linkStyle 0 stroke:#DC143CFF,stroke-width:10px
linkStyle 1 stroke:#DC143CA5,stroke-width:5px
linkStyle 2 stroke:#DC143C82,stroke-width:3px
linkStyle 3 stroke:#DC143C82,stroke-width:3px
linkStyle 4 stroke:#DC143C5E,stroke-width:1px
linkStyle 5 stroke:#DC143C5E,stroke-width:1px
linkStyle 6 stroke:#DC143C5E,stroke-width:1px
linkStyle 7 stroke:#DC143C5E,stroke-width:1px
linkStyle 8 stroke:#DC143C5E,stroke-width:1px
linkStyle 9 stroke:#DC143C5E,stroke-width:1px
linkStyle 10 stroke:#DC143C5E,stroke-width:1px
linkStyle 11 stroke:#DC143C5E,stroke-width:1px
linkStyle 12 stroke:#DC143C5E,stroke-width:1px
linkStyle 13 stroke:#DC143C5E,stroke-width:1px
linkStyle 14 stroke:#DC143C5E,stroke-width:1px
linkStyle 15 stroke:#DC143C5E,stroke-width:1px
linkStyle 16 stroke:#DC143C5E,stroke-width:1px
linkStyle 17 stroke:#DC143C5E,stroke-width:1px
linkStyle 18 stroke:#DC143C5E,stroke-width:1px
linkStyle 19 stroke:#DC143C5E,stroke-width:1px
linkStyle 20 stroke:#DC143C5E,stroke-width:1px
linkStyle 21 stroke:#DC143C5E,stroke-width:1px
linkStyle 22 stroke:#DC143C5E,stroke-width:1px
linkStyle 23 stroke:#DC143C5E,stroke-width:1px
linkStyle 24 stroke:#DC143C5E,stroke-width:1px
linkStyle 25 stroke:#DC143C5E,stroke-width:1px
linkStyle 26 stroke:#DC143C5E,stroke-width:1px
linkStyle 27 stroke:#DC143C5E,stroke-width:1px
linkStyle 28 stroke:#DC143C5E,stroke-width:1px
linkStyle 29 stroke:#DC143C5E,stroke-width:1px
linkStyle 30 stroke:#DC143C5E,stroke-width:1px
linkStyle 31 stroke:#DC143C5E,stroke-width:1px
linkStyle 32 stroke:#DC143C5E,stroke-width:1px
linkStyle 33 stroke:#DC143C5E,stroke-width:1px
linkStyle 34 stroke:#DC143C5E,stroke-width:1px
linkStyle 35 stroke:#DC143C5E,stroke-width:1px
linkStyle 36 stroke:#DC143C5E,stroke-width:1px
linkStyle 37 stroke:#DC143C5E,stroke-width:1px
linkStyle 38 stroke:#DC143C5E,stroke-width:1px
linkStyle 39 stroke:#DC143C5E,stroke-width:1px
linkStyle 40 stroke:#DC143C5E,stroke-width:1px
linkStyle 41 stroke:#DC143C5E,stroke-width:1px
linkStyle 42 stroke:#DC143C5E,stroke-width:1px
linkStyle 43 stroke:#DC143C5E,stroke-width:1px
linkStyle 44 stroke:#DC143C5E,stroke-width:1px
linkStyle 45 stroke:#DC143C5E,stroke-width:1px
linkStyle 46 stroke:#DC143C5E,stroke-width:1px
linkStyle 47 stroke:#DC143C5E,stroke-width:1px
linkStyle 48 stroke:#DC143C5E,stroke-width:1px
linkStyle 49 stroke:#DC143C5E,stroke-width:1px
Show more details on duplication between components...
| From Component --> To Component |
Duplicated Lines |
File Pairs | Details |
|---|---|---|---|
| chess (6%)   --> tv (18%) |
760 | 7 file pairs | details... |
| tv (9%)   --> waker (14%) |
384 | 4 file pairs | details... |
| chess (2%)   --> waker (11%) |
293 | 3 file pairs | details... |
| cameo (7%)   --> learning (2%) |
252 | 6 file pairs | details... |
| cost (93%)   --> games (2%) |
110 | 2 file pairs | details... |
| factuality (27%)   --> history (16%) |
110 | 2 file pairs | details... |
| smash (5%)   --> startupcon (87%) |
110 | 2 file pairs | details... |
| recap (93%)   --> waker (4%) |
110 | 2 file pairs | details... |
| bricks (93%)   --> cost (93%) |
110 | 2 file pairs | details... |
| factuality (27%)   --> smash (5%) |
110 | 2 file pairs | details... |
| history (16%)   --> startupcon (87%) |
110 | 2 file pairs | details... |
| bricks (93%)   --> games (2%) |
110 | 2 file pairs | details... |
| factuality (27%)   --> startupcon (87%) |
110 | 2 file pairs | details... |
| history (16%)   --> smash (5%) |
110 | 2 file pairs | details... |
| bricks (93%)   --> history (16%) |
110 | 2 file pairs | details... |
| games (2%)   --> smash (5%) |
110 | 2 file pairs | details... |
| cost (93%)   --> startupcon (87%) |
110 | 2 file pairs | details... |
| bricks (93%)   --> factuality (27%) |
110 | 2 file pairs | details... |
| games (2%)   --> startupcon (87%) |
110 | 2 file pairs | details... |
| cost (93%)   --> smash (5%) |
110 | 2 file pairs | details... |
| bricks (93%)   --> startupcon (87%) |
110 | 2 file pairs | details... |
| factuality (27%)   --> games (2%) |
110 | 2 file pairs | details... |
| cost (93%)   --> history (16%) |
110 | 2 file pairs | details... |
| bricks (93%)   --> smash (5%) |
110 | 2 file pairs | details... |
| games (2%)   --> history (16%) |
110 | 2 file pairs | details... |
| cost (93%)   --> factuality (27%) |
110 | 2 file pairs | details... |
| games (2%)   --> recap (93%) |
110 | 2 file pairs | details... |
| cost (93%)   --> waker (4%) |
110 | 2 file pairs | details... |
| games (2%)   --> waker (4%) |
110 | 2 file pairs | details... |
| cost (93%)   --> recap (93%) |
110 | 2 file pairs | details... |
| bricks (93%)   --> waker (4%) |
110 | 2 file pairs | details... |
| bricks (93%)   --> recap (93%) |
110 | 2 file pairs | details... |
| recap (93%)   --> smash (5%) |
110 | 2 file pairs | details... |
| startupcon (87%)   --> waker (4%) |
110 | 2 file pairs | details... |
| smash (5%)   --> waker (4%) |
110 | 2 file pairs | details... |
| recap (93%)   --> startupcon (87%) |
110 | 2 file pairs | details... |
| factuality (27%)   --> recap (93%) |
110 | 2 file pairs | details... |
| history (16%)   --> waker (4%) |
110 | 2 file pairs | details... |
| factuality (27%)   --> waker (4%) |
110 | 2 file pairs | details... |
| history (16%)   --> recap (93%) |
110 | 2 file pairs | details... |
| artifacts (5%)   --> factuality (26%) |
104 | 1 file pair | details... |
| oxford (71%)   --> tedx (91%) |
84 | 2 file pairs | details... |
| oxford (71%)   --> recap (71%) |
84 | 2 file pairs | details... |
| tedx (91%)   --> waker (3%) |
84 | 2 file pairs | details... |
| oxford (71%)   --> waker (3%) |
84 | 2 file pairs | details... |
| recap (71%)   --> tedx (91%) |
84 | 2 file pairs | details... |
| bricks (71%)   --> tedx (91%) |
84 | 2 file pairs | details... |
| bricks (71%)   --> oxford (71%) |
84 | 2 file pairs | details... |
| games (1%)   --> oxford (71%) |
84 | 2 file pairs | details... |
| cost (71%)   --> tedx (91%) |
84 | 2 file pairs | details... |
| games (1%)   --> tedx (91%) |
84 | 2 file pairs | details... |
| cost (71%)   --> oxford (71%) |
84 | 2 file pairs | details... |
| factuality (21%)   --> oxford (71%) |
84 | 2 file pairs | details... |
| history (12%)   --> tedx (91%) |
84 | 2 file pairs | details... |
| factuality (21%)   --> tedx (91%) |
84 | 2 file pairs | details... |
| history (12%)   --> oxford (71%) |
84 | 2 file pairs | details... |
| oxford (71%)   --> smash (4%) |
84 | 2 file pairs | details... |
| startupcon (66%)   --> tedx (91%) |
84 | 2 file pairs | details... |
| smash (4%)   --> tedx (91%) |
84 | 2 file pairs | details... |
| oxford (71%)   --> startupcon (66%) |
84 | 2 file pairs | details... |
| factuality (13%)   --> kundali (11%) |
54 | 1 file pair | details... |
Longest Duplicates
The list of 50 longest duplicates.
Most Frequent Duplicates
The list of 50 most frequently found duplicates.
Duplicated Units
The list of top 8 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."