microsoft / docker
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
  • 3% duplication:
    • 46,136 cleaned lines of cleaned code (without empty lines, comments, and frequently duplicated constructs such as imports)
    • 1,529 duplicated lines
  • 121 duplicates
system3% (1,529 lines)
Duplication per Extension
go3% (1,469 lines)
c84% (60 lines)
Duplication per Component (primary)
pkg5% (527 lines)
daemon2% (276 lines)
distribution7% (158 lines)
api2% (141 lines)
layer7% (84 lines)
contrib6% (60 lines)
integration-cli3% (59 lines)
registry5% (58 lines)
builder2% (40 lines)
container3% (36 lines)
runconfig2% (21 lines)
cli11% (20 lines)
profiles1% (16 lines)
libcontainerd<1% (14 lines)
volume1% (12 lines)
cliconfig2% (7 lines)
docker0% (0 lines)
dockerversion0% (0 lines)
errors0% (0 lines)
image0% (0 lines)
migrate0% (0 lines)
oci0% (0 lines)
opts0% (0 lines)
reference0% (0 lines)
restartmanager0% (0 lines)
utils0% (0 lines)

Duplication Between Components (50+ lines)

G container container daemon daemon container--daemon 72

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 121 duplicates...
Size#FoldersFilesLinesCode
47 x 2 pkg/term
pkg/term
termios_freebsd.go
termios_openbsd.go
8:68 (100%)
8:68 (100%)
view
36 x 2 container
daemon
container.go
container_operations.go
831:876 (6%)
116:161 (8%)
view
25 x 2 pkg/term
pkg/term
termios_darwin.go
termios_openbsd.go
8:36 (53%)
8:36 (53%)
view
25 x 2 pkg/term
pkg/term
termios_darwin.go
termios_freebsd.go
8:36 (53%)
8:36 (53%)
view
17 x 2 contrib/syscall-test
contrib/syscall-test
ns.c
userns.c
39:62 (54%)
39:62 (54%)
view
17 x 2 pkg/jsonlog
pkg/jsonlog
jsonlog_marshalling.go
jsonlogbytes.go
131:149 (20%)
75:93 (21%)
view
15 x 2 pkg/term
pkg/term
termios_darwin.go
termios_openbsd.go
49:68 (31%)
49:68 (31%)
view
15 x 2 pkg/term
pkg/term
termios_darwin.go
termios_freebsd.go
49:68 (31%)
49:68 (31%)
view
14 x 2 layer
layer
layer_store.go
layer_store.go
234:250 (3%)
428:445 (3%)
view
14 x 2 distribution
distribution
pull_v1.go
push_v1.go
44:61 (6%)
33:50 (5%)
view
13 x 2 contrib/syscall-test
contrib/syscall-test
ns.c
userns.c
14:34 (41%)
14:34 (41%)
view
13 x 2 registry
registry
service_v1.go
service_v2.go
16:33 (37%)
40:58 (25%)
view
12 x 2 pkg/discovery/file
pkg/discovery/memory
file.go
memory.go
86:107 (21%)
59:80 (27%)
view
12 x 2 pkg/devicemapper
pkg/devicemapper
devmapper_wrapper.go
devmapper_wrapper_deferred_remove.go
171:182 (8%)
19:30 (63%)
view
11 x 2 layer
layer
layer_store.go
layer_windows.go
297:316 (2%)
69:88 (21%)
view
11 x 2 distribution
distribution
pull.go
push.go
111:127 (11%)
121:138 (11%)
view
11 x 2 pkg/term
pkg/term
termios_linux.go
termios_openbsd.go
13:30 (44%)
33:50 (23%)
view
11 x 2 builder/dockerfile/parser
builder/dockerfile/parser
line_parsers.go
utils.go
49:60 (6%)
90:101 (11%)
view
11 x 2 pkg/signal
pkg/signal
signal_darwin.go
signal_freebsd.go
12:22 (33%)
12:22 (31%)
view
11 x 2 pkg/signal
pkg/signal
signal_darwin.go
signal_freebsd.go
30:40 (33%)
32:42 (31%)
view
Duplicated Units
The list of top 14 duplicated units.
See data for all 14 unit duplicates...
Size#FoldersFilesLinesCode
17 x 3 pkg/term
pkg/term
pkg/term
termios_darwin.go
termios_freebsd.go
termios_openbsd.go
49:69 
49:69 
49:69 
view
14 x 2 daemon/graphdriver
daemon/graphdriver
proxy.go
proxy.go
57:71 
73:87 
view
10 x 2 daemon/graphdriver
daemon/graphdriver
proxy.go
proxy.go
89:99 
117:127 
view
9 x 2 contrib/syscall-test
contrib/syscall-test
ns.c
userns.c
19:29 
19:29 
view
7 x 5 daemon/logger/fluentd
daemon/logger/gelf
daemon/logger/journald
daemon/logger/jsonfilelog
daemon/logger/syslog
fluentd.go
gelf.go
journald.go
jsonfilelog.go
syslog.go
50:57 
33:40 
30:37 
32:39 
59:66 
view
7 x 5 daemon/logger/journald
daemon/logger/fluentd
daemon/logger/gelf
daemon/logger/jsonfilelog
daemon/logger/syslog
journald.go
fluentd.go
gelf.go
jsonfilelog.go
syslog.go
30:37 
50:57 
33:40 
32:39 
59:66 
view
7 x 5 daemon/logger/jsonfilelog
daemon/logger/fluentd
daemon/logger/gelf
daemon/logger/journald
daemon/logger/syslog
jsonfilelog.go
fluentd.go
gelf.go
journald.go
syslog.go
32:39 
50:57 
33:40 
30:37 
59:66 
view
7 x 2 pkg/system
pkg/system
stat_freebsd.go
stat_unsupported.go
8:15 
10:17 
view
7 x 2 pkg/system
pkg/system
stat_openbsd.go
stat_solaris.go
8:15 
10:17 
view
6 x 2 daemon/graphdriver
daemon/graphdriver
driver_freebsd.go
driver_linux.go
13:19 
93:99 
view
6 x 2 image/v1
migrate/v1
imagev1.go
migratev1.go
142:148 
502:508 
view
6 x 2 integration-cli
integration-cli
docker_utils.go
docker_utils.go
819:825 
827:833 
view
6 x 2 pkg/system
pkg/system
stat_freebsd.go
stat_linux.go
21:27 
27:33 
view
6 x 2 runconfig/opts
runconfig/opts
throttledevice.go
weightdevice.go
91:98 
67:74 
view