aws-samples / aws-cdk-changelogs-demo
Duplication

Places in code with 6 or more lines that are exactly the same.

Intro
  • 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...
Duplication Overall
  • 92% duplication:
    • 9,057 cleaned lines of cleaned code (without empty lines, comments, and frequently duplicated constructs such as imports)
    • 8,363 duplicated lines
  • 470 duplicates
system92% (8,363 lines)
Duplication per Extension
js93% (7,635 lines)
html100% (704 lines)
css13% (24 lines)
Duplication per Component (primary)
app/crawl97% (1,128 lines)
app/recently-crawled98% (1,128 lines)
app/regenerate-homepage99% (1,128 lines)
app/autocomplete98% (952 lines)
app/pypi-recent99% (952 lines)
app/rubygem-recent99% (952 lines)
app/lib100% (952 lines)
app/recrawl99% (952 lines)
app/static100% (176 lines)
static/css13% (24 lines)
app/scripts40% (19 lines)
ROOT0% (0 lines)
app/npm-follower0% (0 lines)
app/socket-broadcast0% (0 lines)
custom-constructs0% (0 lines)

Duplication Between Components (50+ lines)

G app/recently-crawled app/recently-crawled app/regenerate-homepage app/regenerate-homepage app/recently-crawled--app/regenerate-homepage 2256 app/recrawl app/recrawl app/recently-crawled--app/recrawl 1904 app/rubygem-recent app/rubygem-recent app/recently-crawled--app/rubygem-recent 1904 app/static app/static app/recently-crawled--app/static 352 app/regenerate-homepage--app/rubygem-recent 1904 app/regenerate-homepage--app/static 352 app/crawl app/crawl app/crawl--app/recently-crawled 2256 app/crawl--app/regenerate-homepage 2256 app/crawl--app/recrawl 1904 app/crawl--app/rubygem-recent 1904 app/lib app/lib app/crawl--app/lib 1904 app/pypi-recent app/pypi-recent app/crawl--app/pypi-recent 1904 app/crawl--app/static 352 app/recrawl--app/regenerate-homepage 1904 app/recrawl--app/rubygem-recent 1904 app/lib--app/recently-crawled 1904 app/lib--app/regenerate-homepage 1904 app/lib--app/recrawl 1904 app/lib--app/rubygem-recent 1904 app/lib--app/pypi-recent 1904 app/autocomplete app/autocomplete app/autocomplete--app/recently-crawled 1904 app/autocomplete--app/regenerate-homepage 1904 app/autocomplete--app/crawl 1904 app/autocomplete--app/recrawl 1904 app/autocomplete--app/rubygem-recent 1904 app/autocomplete--app/lib 1904 app/autocomplete--app/pypi-recent 1904 app/pypi-recent--app/recently-crawled 1904 app/pypi-recent--app/regenerate-homepage 1904 app/pypi-recent--app/recrawl 1904 app/pypi-recent--app/rubygem-recent 1904

Download: SVG DOT (open online Graphviz editor)

Open 3D force graph...

Show more details on duplication between components...
Longest Duplicates
The list of 20 longest duplicates.
See data for all 470 duplicates...
Size#FoldersFilesLinesCode
196 x 2 app/recrawl/lib
app/rubygem-recent/lib
changelog.js
changelog.js
1:280 (100%)
1:280 (100%)
view
196 x 2 app/lib
app/rubygem-recent/lib
changelog.js
changelog.js
1:280 (100%)
1:280 (100%)
view
196 x 2 app/lib
app/recrawl/lib
changelog.js
changelog.js
1:280 (100%)
1:280 (100%)
view
196 x 2 app/autocomplete/lib
app/rubygem-recent/lib
changelog.js
changelog.js
1:280 (100%)
1:280 (100%)
view
196 x 2 app/recently-crawled/lib
app/regenerate-homepage/lib
changelog.js
changelog.js
1:280 (100%)
1:280 (100%)
view
196 x 2 app/autocomplete/lib
app/recrawl/lib
changelog.js
changelog.js
1:280 (100%)
1:280 (100%)
view
196 x 2 app/recently-crawled/lib
app/recrawl/lib
changelog.js
changelog.js
1:280 (100%)
1:280 (100%)
view
196 x 2 app/autocomplete/lib
app/crawl/lib
changelog.js
changelog.js
1:280 (100%)
1:280 (100%)
view
196 x 2 app/crawl/lib
app/pypi-recent/lib
changelog.js
changelog.js
1:280 (100%)
1:280 (100%)
view
196 x 2 app/crawl/lib
app/recrawl/lib
changelog.js
changelog.js
1:280 (100%)
1:280 (100%)
view
196 x 2 app/regenerate-homepage/lib
app/rubygem-recent/lib
changelog.js
changelog.js
1:280 (100%)
1:280 (100%)
view
196 x 2 app/lib
app/pypi-recent/lib
changelog.js
changelog.js
1:280 (100%)
1:280 (100%)
view
196 x 2 app/pypi-recent/lib
app/recently-crawled/lib
changelog.js
changelog.js
1:280 (100%)
1:280 (100%)
view
196 x 2 app/recrawl/lib
app/regenerate-homepage/lib
changelog.js
changelog.js
1:280 (100%)
1:280 (100%)
view
196 x 2 app/lib
app/recently-crawled/lib
changelog.js
changelog.js
1:280 (100%)
1:280 (100%)
view
196 x 2 app/crawl/lib
app/rubygem-recent/lib
changelog.js
changelog.js
1:280 (100%)
1:280 (100%)
view
196 x 2 app/crawl/lib
app/regenerate-homepage/lib
changelog.js
changelog.js
1:280 (100%)
1:280 (100%)
view
196 x 2 app/lib
app/regenerate-homepage/lib
changelog.js
changelog.js
1:280 (100%)
1:280 (100%)
view
196 x 2 app/autocomplete/lib
app/recently-crawled/lib
changelog.js
changelog.js
1:280 (100%)
1:280 (100%)
view
196 x 2 app/pypi-recent/lib
app/rubygem-recent/lib
changelog.js
changelog.js
1:280 (100%)
1:280 (100%)
view
Duplicated Units
The list of top 14 duplicated units.
See data for all 14 unit duplicates...
Size#FoldersFilesLinesCode
66 x 8 app/autocomplete/lib
app/crawl/lib
app/lib
app/regenerate-homepage/lib
app/recently-crawled/lib
app/recrawl/lib
app/rubygem-recent/lib
app/pypi-recent/lib
parser.js
parser.js
parser.js
parser.js
parser.js
parser.js
parser.js
parser.js
73:187 
73:187 
73:187 
73:187 
73:187 
73:187 
73:187 
73:187 
view
49 x 8 app/autocomplete/lib
app/crawl/lib
app/lib
app/regenerate-homepage/lib
app/recently-crawled/lib
app/recrawl/lib
app/rubygem-recent/lib
app/pypi-recent/lib
parser.js
parser.js
parser.js
parser.js
parser.js
parser.js
parser.js
parser.js
239:314 
239:314 
239:314 
239:314 
239:314 
239:314 
239:314 
239:314 
view
38 x 8 app/autocomplete/lib
app/crawl/lib
app/lib
app/regenerate-homepage/lib
app/recently-crawled/lib
app/recrawl/lib
app/rubygem-recent/lib
app/pypi-recent/lib
parser.js
parser.js
parser.js
parser.js
parser.js
parser.js
parser.js
parser.js
191:237 
191:237 
191:237 
191:237 
191:237 
191:237 
191:237 
191:237 
view
42 x 8 app/autocomplete/lib
app/crawl/lib
app/lib
app/regenerate-homepage/lib
app/recently-crawled/lib
app/recrawl/lib
app/rubygem-recent/lib
app/pypi-recent/lib
presentation.js
presentation.js
presentation.js
presentation.js
presentation.js
presentation.js
presentation.js
presentation.js
12:66 
12:66 
12:66 
12:66 
12:66 
12:66 
12:66 
12:66 
view
24 x 8 app/autocomplete/lib
app/crawl/lib
app/lib
app/regenerate-homepage/lib
app/recently-crawled/lib
app/recrawl/lib
app/rubygem-recent/lib
app/pypi-recent/lib
ruby-gems.js
ruby-gems.js
ruby-gems.js
ruby-gems.js
ruby-gems.js
ruby-gems.js
ruby-gems.js
ruby-gems.js
40:73 
40:73 
40:73 
40:73 
40:73 
40:73 
40:73 
40:73 
view
15 x 8 app/autocomplete/lib
app/crawl/lib
app/lib
app/regenerate-homepage/lib
app/recently-crawled/lib
app/recrawl/lib
app/rubygem-recent/lib
app/pypi-recent/lib
changelog.js
changelog.js
changelog.js
changelog.js
changelog.js
changelog.js
changelog.js
changelog.js
218:239 
218:239 
218:239 
218:239 
218:239 
218:239 
218:239 
218:239 
view
15 x 8 app/autocomplete/lib
app/crawl/lib
app/lib
app/regenerate-homepage/lib
app/recently-crawled/lib
app/recrawl/lib
app/rubygem-recent/lib
app/pypi-recent/lib
parser.js
parser.js
parser.js
parser.js
parser.js
parser.js
parser.js
parser.js
41:63 
41:63 
41:63 
41:63 
41:63 
41:63 
41:63 
41:63 
view
14 x 8 app/autocomplete/lib
app/crawl/lib
app/lib
app/regenerate-homepage/lib
app/recently-crawled/lib
app/recrawl/lib
app/rubygem-recent/lib
app/pypi-recent/lib
changelog.js
changelog.js
changelog.js
changelog.js
changelog.js
changelog.js
changelog.js
changelog.js
160:182 
160:182 
160:182 
160:182 
160:182 
160:182 
160:182 
160:182 
view
10 x 8 app/autocomplete/lib
app/crawl/lib
app/lib
app/regenerate-homepage/lib
app/recently-crawled/lib
app/recrawl/lib
app/rubygem-recent/lib
app/pypi-recent/lib
broadcast.js
broadcast.js
broadcast.js
broadcast.js
broadcast.js
broadcast.js
broadcast.js
broadcast.js
24:35 
24:35 
24:35 
24:35 
24:35 
24:35 
24:35 
24:35 
view
8 x 8 app/autocomplete/lib
app/crawl/lib
app/lib
app/regenerate-homepage/lib
app/recently-crawled/lib
app/recrawl/lib
app/rubygem-recent/lib
app/pypi-recent/lib
crawl.js
crawl.js
crawl.js
crawl.js
crawl.js
crawl.js
crawl.js
crawl.js
6:15 
6:15 
6:15 
6:15 
6:15 
6:15 
6:15 
6:15 
view
8 x 8 app/autocomplete/lib
app/crawl/lib
app/lib
app/regenerate-homepage/lib
app/recently-crawled/lib
app/recrawl/lib
app/rubygem-recent/lib
app/pypi-recent/lib
broadcast.js
broadcast.js
broadcast.js
broadcast.js
broadcast.js
broadcast.js
broadcast.js
broadcast.js
9:18 
9:18 
9:18 
9:18 
9:18 
9:18 
9:18 
9:18 
view
8 x 8 app/autocomplete/lib
app/crawl/lib
app/lib
app/regenerate-homepage/lib
app/recently-crawled/lib
app/recrawl/lib
app/rubygem-recent/lib
app/pypi-recent/lib
parser.js
parser.js
parser.js
parser.js
parser.js
parser.js
parser.js
parser.js
15:25 
15:25 
15:25 
15:25 
15:25 
15:25 
15:25 
15:25 
view
7 x 8 app/autocomplete/lib
app/crawl/lib
app/lib
app/regenerate-homepage/lib
app/recently-crawled/lib
app/recrawl/lib
app/rubygem-recent/lib
app/pypi-recent/lib
schedule.js
schedule.js
schedule.js
schedule.js
schedule.js
schedule.js
schedule.js
schedule.js
14:23 
14:23 
14:23 
14:23 
14:23 
14:23 
14:23 
14:23 
view
10 x 8 app/autocomplete/lib
app/crawl/lib
app/lib
app/regenerate-homepage/lib
app/recently-crawled/lib
app/recrawl/lib
app/rubygem-recent/lib
app/pypi-recent/lib
pypi.js
pypi.js
pypi.js
pypi.js
pypi.js
pypi.js
pypi.js
pypi.js
33:48 
33:48 
33:48 
33:48 
33:48 
33:48 
33:48 
33:48 
view