Duplication Overall
- 15% duplication:
- 6,950 cleaned lines of cleaned code (without empty lines, comments, and frequently duplicated constructs such as imports)
- 1,043 duplicated lines
- 73 duplicates
Duplication per Extension
Duplication per Component (primary)
Duplication Between Components (50+ lines)
flowchart TB
n0["online_nearline"]
n1["project_restorer"]
n2["online_archive"]
n3["media_remover"]
n0 ---|"272"| n1
n2 ---|"227"| n0
n3 ---|"172"| n0
n3 ---|"124"| n1
n3 ---|"90"| n2
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:#DC143CDB,stroke-width:8px
linkStyle 2 stroke:#DC143CB7,stroke-width:6px
linkStyle 3 stroke:#DC143C93,stroke-width:4px
linkStyle 4 stroke:#DC143C82,stroke-width:3px
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
online_nearline (11%)
  --> project_restorer (29%)
272
4 file pairs
details...
online_archive (8%)
  --> online_nearline (9%)
227
6 file pairs
details...
media_remover (7%)
  --> online_nearline (7%)
172
3 file pairs
details...
media_remover (5%)
  --> project_restorer (13%)
124
3 file pairs
details...
media_remover (3%)
  --> online_archive (3%)
90
2 file pairs
details...
flowchart TB
n0["online_nearline"]
n1["project_restorer"]
n2["online_archive"]
n3["media_remover"]
n0 ---|"272"| n1
n2 ---|"227"| n0
n3 ---|"172"| n0
n3 ---|"124"| n1
n3 ---|"90"| n2
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:#DC143CDB,stroke-width:8px
linkStyle 2 stroke:#DC143CB7,stroke-width:6px
linkStyle 3 stroke:#DC143C93,stroke-width:4px
linkStyle 4 stroke:#DC143C82,stroke-width:3px
Show more details on duplication between components...
| From Component --> To Component |
Duplicated Lines |
File Pairs | Details |
|---|---|---|---|
| online_nearline (11%)   --> project_restorer (29%) |
272 | 4 file pairs | details... |
| online_archive (8%)   --> online_nearline (9%) |
227 | 6 file pairs | details... |
| media_remover (7%)   --> online_nearline (7%) |
172 | 3 file pairs | details... |
| media_remover (5%)   --> project_restorer (13%) |
124 | 3 file pairs | details... |
| media_remover (3%)   --> online_archive (3%) |
90 | 2 file pairs | 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 4 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."