bottlerocket-os / bottlerocket
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
  • 23% duplication:
    • 45,533 cleaned lines of cleaned code (without empty lines, comments, and frequently duplicated constructs such as imports)
    • 10,609 duplicated lines
  • 11,912 duplicates
system23% (10,609 lines)
Duplication per Extension
rs16% (5,066 lines)
toml58% (4,711 lines)
spec8% (541 lines)
yaml50% (233 lines)
go5% (40 lines)
cfg78% (18 lines)
Duplication per Component (primary)
sources/api21% (3,609 lines)
sources/models59% (2,933 lines)
tools/pubsys12% (478 lines)
sources/imdsclient31% (225 lines)
ROOT14% (192 lines)
sources/updater8% (190 lines)
tools/infrasys15% (167 lines)
sources/driverdog21% (76 lines)
sources/logdog9% (76 lines)
sources/metricdog12% (57 lines)
sources/prairiedog18% (55 lines)
variants/vmware-dev91% (54 lines)
variants/aws-dev94% (52 lines)
variants/metal-dev88% (52 lines)
packages/grub17% (49 lines)
sources/host-ctr5% (40 lines)
tools/pubsys-setup13% (40 lines)
tools/buildsys3% (39 lines)
sources/ghostdog22% (37 lines)
packages/cni-plugins45% (36 lines)
packages/cni61% (36 lines)
variants/vmware-k8s-1.2183% (36 lines)
sources/shimpei30% (36 lines)
variants/aws-k8s-1.21-nvidia79% (34 lines)
variants/aws-k8s-1.2187% (34 lines)
packages/containerd29% (34 lines)
packages/libnetfilter_queue53% (34 lines)
tools/pubsys-config9% (34 lines)
variants/vmware-k8s-1.2079% (34 lines)
packages/libselinux29% (33 lines)
variants/metal-k8s-1.2176% (33 lines)
packages/libsepol49% (32 lines)
packages/libnetfilter_cttimeout53% (32 lines)
packages/libnetfilter_conntrack50% (32 lines)
packages/libnetfilter_cthelper53% (32 lines)
variants/aws-ecs-174% (32 lines)
variants/aws-k8s-1.1879% (31 lines)
variants/aws-k8s-1.1979% (31 lines)
variants/aws-k8s-1.2079% (31 lines)
packages/libseccomp51% (31 lines)
packages/libpcre40% (31 lines)
sources/bottlerocket-release28% (31 lines)
packages/libnftnl46% (29 lines)
sources/growpart10% (29 lines)
sources/constants69% (29 lines)
sources/parse-datetime21% (29 lines)
packages/libffi48% (28 lines)
packages/libacl41% (28 lines)
sources/retry-read29% (28 lines)
packages/libnl41% (27 lines)
packages/libsemanage33% (26 lines)
packages/libexpat43% (26 lines)
packages/libnfnetlink45% (26 lines)
packages/libmnl45% (26 lines)
packages/libpcap42% (25 lines)
packages/libtirpc40% (25 lines)
packages/libcap32% (25 lines)
sources9% (25 lines)
tools47% (25 lines)
packages/ecs-agent7% (24 lines)
packages/libxcrypt34% (23 lines)
packages/docker-cli27% (22 lines)
packages/libzstd35% (22 lines)
packages/libattr34% (22 lines)
packages/kexec-tools44% (21 lines)
packages/libnvidia-container21% (21 lines)
packages/iptables21% (21 lines)
packages/findutils38% (21 lines)
packages/runc30% (20 lines)
packages/nvidia-container-toolkit25% (20 lines)
packages/nvidia-k8s-device-plugin35% (20 lines)
packages/aws-iam-authenticator33% (20 lines)
packages/conntrack-tools27% (20 lines)
packages/readline32% (20 lines)
packages/coreutils11% (19 lines)
packages/wicked12% (19 lines)
packages/docker-proxy29% (19 lines)
packages/libaudit19% (19 lines)
packages/makedumpfile27% (19 lines)
packages/procps21% (19 lines)
packages/libglib19% (19 lines)
packages/iputils25% (19 lines)
packages/open-vm-tools15% (19 lines)
packages/login35% (16 lines)
packages/policycoreutils19% (15 lines)
packages/tcpdump31% (15 lines)
packages/systemd3% (13 lines)
packages/docker-init27% (13 lines)
packages/grep24% (13 lines)
packages/e2fsprogs10% (13 lines)
packages/kmod16% (13 lines)
packages/strace27% (13 lines)
packages/libdbus15% (13 lines)
packages/libiw22% (13 lines)
packages/ca-certificates27% (13 lines)
packages/docker-engine12% (13 lines)
packages/ncurses10% (13 lines)
packages/glibc5% (13 lines)
packages/iproute12% (13 lines)
packages/chrony14% (13 lines)
packages/util-linux3% (13 lines)
packages/oci-add-hooks19% (13 lines)
packages/acpid22% (13 lines)
packages/libbzip215% (13 lines)
packages/bash11% (13 lines)
packages/dbus-broker16% (13 lines)
packages/binutils16% (13 lines)
packages/libz20% (13 lines)
packages/libelf18% (13 lines)
packages/kmod-5.10-nvidia5% (13 lines)
packages/hotdog12% (13 lines)
packages/log4j2-hotpatch30% (13 lines)
packages/release4% (13 lines)
packages/host-ctr17% (13 lines)
packages/microcode10% (12 lines)
packages/libstd-rust30% (12 lines)
packages/filesystem16% (12 lines)
packages/libgcc30% (12 lines)
packages/selinux-policy13% (12 lines)
sources/webpki-roots-shim8% (7 lines)
packages/os1% (7 lines)
variants0% (0 lines)

Duplication Between Components (50+ lines)

G sources/api sources/api sources/driverdog sources/driverdog sources/api--sources/driverdog 798 sources/prairiedog sources/prairiedog sources/api--sources/prairiedog 780 sources/ghostdog sources/ghostdog sources/api--sources/ghostdog 768 sources/shimpei sources/shimpei sources/api--sources/shimpei 764 sources/growpart sources/growpart sources/api--sources/growpart 754 sources/metricdog sources/metricdog sources/api--sources/metricdog 754 sources/parse-datetime sources/parse-datetime sources/api--sources/parse-datetime 738 sources/constants sources/constants sources/api--sources/constants 734 sources/logdog sources/logdog sources/api--sources/logdog 668 sources/bottlerocket-release sources/bottlerocket-release sources/api--sources/bottlerocket-release 668 sources/imdsclient sources/imdsclient sources/api--sources/imdsclient 574 sources/updater sources/updater sources/api--sources/updater 516 sources/models sources/models sources/api--sources/models 503 sources/retry-read sources/retry-read sources/api--sources/retry-read 436 tools/buildsys tools/buildsys sources/api--tools/buildsys 386 sources/webpki-roots-shim sources/webpki-roots-shim sources/api--sources/webpki-roots-shim 348 tools/pubsys tools/pubsys sources/api--tools/pubsys 65 sources/driverdog--sources/prairiedog 110 sources/driverdog--sources/ghostdog 56 sources/driverdog--sources/shimpei 72 sources/driverdog--sources/metricdog 54 sources/prairiedog--sources/shimpei 72 sources/ghostdog--sources/prairiedog 56 sources/ghostdog--sources/growpart 58 sources/growpart--sources/shimpei 54 sources/growpart--sources/metricdog 54 sources/metricdog--sources/prairiedog 54 sources/constants--sources/driverdog 56 sources/constants--sources/prairiedog 56 sources/constants--sources/shimpei 56 sources/imdsclient--sources/models 61 tools/buildsys--tools/pubsys 68 variants/aws-dev variants/aws-dev variants/vmware-dev variants/vmware-dev variants/aws-dev--variants/vmware-dev 98 variants/metal-dev variants/metal-dev variants/aws-dev--variants/metal-dev 96 variants/aws-ecs-1 variants/aws-ecs-1 variants/aws-dev--variants/aws-ecs-1 56 variants/metal-dev--variants/vmware-dev 96 packages/cni-plugins packages/cni-plugins packages/cni packages/cni packages/cni-plugins--packages/cni 72 variants/vmware-k8s-1.20 variants/vmware-k8s-1.20 variants/vmware-k8s-1.21 variants/vmware-k8s-1.21 variants/vmware-k8s-1.20--variants/vmware-k8s-1.21 68 variants/aws-k8s-1.21-nvidia variants/aws-k8s-1.21-nvidia variants/aws-k8s-1.21 variants/aws-k8s-1.21 variants/aws-k8s-1.21-nvidia--variants/aws-k8s-1.21 68 packages/libnetfilter_cthelper packages/libnetfilter_cthelper packages/libnetfilter_cttimeout packages/libnetfilter_cttimeout packages/libnetfilter_cthelper--packages/libnetfilter_cttimeout 64 packages/libnftnl packages/libnftnl packages/libnetfilter_cthelper--packages/libnftnl 58 packages/libnetfilter_cttimeout--packages/libnftnl 58 packages/libnetfilter_conntrack packages/libnetfilter_conntrack packages/libnetfilter_queue packages/libnetfilter_queue packages/libnetfilter_conntrack--packages/libnetfilter_queue 64 variants/aws-k8s-1.18 variants/aws-k8s-1.18 variants/aws-k8s-1.19 variants/aws-k8s-1.19 variants/aws-k8s-1.18--variants/aws-k8s-1.19 62 variants/aws-k8s-1.20 variants/aws-k8s-1.20 variants/aws-k8s-1.20--variants/aws-k8s-1.21-nvidia 60 variants/aws-k8s-1.20--variants/aws-k8s-1.21 62 variants/metal-k8s-1.21 variants/metal-k8s-1.21 variants/metal-k8s-1.21--variants/vmware-k8s-1.21 58 packages/libselinux packages/libselinux packages/libsepol packages/libsepol packages/libselinux--packages/libsepol 58 variants/aws-ecs-1--variants/metal-dev 56 packages/libffi packages/libffi packages/libseccomp packages/libseccomp packages/libffi--packages/libseccomp 56

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 11,912 duplicates...
Size#FoldersFilesLinesCode
107 x 2 sources/models/src/aws-k8s-1.21-nvidia/defaults.d
sources/models/src/metal-k8s-1.21/defaults.d
10-defaults.toml
10-defaults.toml
1:151 (100%)
1:151 (100%)
view
107 x 2 sources/models/src/aws-k8s-1.18/defaults.d
sources/models/src/vmware-k8s-1.20/defaults.d
10-defaults.toml
10-defaults.toml
1:151 (100%)
1:151 (100%)
view
107 x 2 sources/models/src/metal-dev/defaults.d
sources/models/src/vmware-k8s-1.20/defaults.d
10-defaults.toml
10-defaults.toml
1:151 (100%)
1:151 (100%)
view
107 x 2 sources/models/src/aws-k8s-1.19/defaults.d
sources/models/src/vmware-k8s-1.20/defaults.d
10-defaults.toml
10-defaults.toml
1:151 (100%)
1:151 (100%)
view
107 x 2 sources/models/shared-defaults
sources/models/src/aws-k8s-1.20/defaults.d
defaults.toml
10-defaults.toml
1:151 (100%)
1:151 (100%)
view
107 x 2 sources/models/src/aws-k8s-1.19/defaults.d
sources/models/src/metal-k8s-1.21/defaults.d
10-defaults.toml
10-defaults.toml
1:151 (100%)
1:151 (100%)
view
107 x 2 sources/models/src/aws-ecs-1/defaults.d
sources/models/src/aws-k8s-1.21/defaults.d
10-defaults.toml
10-defaults.toml
1:151 (100%)
1:151 (100%)
view
107 x 2 sources/models/src/aws-ecs-1/defaults.d
sources/models/src/aws-k8s-1.19/defaults.d
10-defaults.toml
10-defaults.toml
1:151 (100%)
1:151 (100%)
view
107 x 2 sources/models/src/metal-k8s-1.21/defaults.d
sources/models/src/vmware-k8s-1.21/defaults.d
10-defaults.toml
10-defaults.toml
1:151 (100%)
1:151 (100%)
view
107 x 2 sources/models/src/aws-k8s-1.20/defaults.d
sources/models/src/vmware-k8s-1.21/defaults.d
10-defaults.toml
10-defaults.toml
1:151 (100%)
1:151 (100%)
view
107 x 2 sources/models/src/metal-k8s-1.21/defaults.d
sources/models/src/vmware-dev/defaults.d
10-defaults.toml
10-defaults.toml
1:151 (100%)
1:151 (100%)
view
107 x 2 sources/models/src/aws-ecs-1/defaults.d
sources/models/src/vmware-dev/defaults.d
10-defaults.toml
10-defaults.toml
1:151 (100%)
1:151 (100%)
view
107 x 2 sources/models/src/aws-k8s-1.18/defaults.d
sources/models/src/aws-k8s-1.21/defaults.d
10-defaults.toml
10-defaults.toml
1:151 (100%)
1:151 (100%)
view
107 x 2 sources/models/src/aws-k8s-1.20/defaults.d
sources/models/src/metal-k8s-1.21/defaults.d
10-defaults.toml
10-defaults.toml
1:151 (100%)
1:151 (100%)
view
107 x 2 sources/models/src/aws-k8s-1.21/defaults.d
sources/models/src/vmware-dev/defaults.d
10-defaults.toml
10-defaults.toml
1:151 (100%)
1:151 (100%)
view
107 x 2 sources/models/src/aws-k8s-1.19/defaults.d
sources/models/src/aws-k8s-1.20/defaults.d
10-defaults.toml
10-defaults.toml
1:151 (100%)
1:151 (100%)
view
107 x 2 sources/models/shared-defaults
sources/models/src/aws-k8s-1.21-nvidia/defaults.d
defaults.toml
10-defaults.toml
1:151 (100%)
1:151 (100%)
view
107 x 2 sources/models/src/aws-dev/defaults.d
sources/models/src/vmware-dev/defaults.d
10-defaults.toml
10-defaults.toml
1:151 (100%)
1:151 (100%)
view
107 x 2 sources/models/shared-defaults
sources/models/src/metal-dev/defaults.d
defaults.toml
10-defaults.toml
1:151 (100%)
1:151 (100%)
view
107 x 2 sources/models/src/aws-k8s-1.18/defaults.d
sources/models/src/aws-k8s-1.19/defaults.d
10-defaults.toml
10-defaults.toml
1:151 (100%)
1:151 (100%)
view
Duplicated Units
The list of top 18 duplicated units.
See data for all 18 unit duplicates...
Size#FoldersFilesLinesCode
18 x 26 sources/ghostdog
sources/api/netdog
sources/api/storewolf
sources/api/corndog
sources/api/thar-be-settings
sources/api/shibaken
sources/api/apiclient
sources/api/host-containers
sources/api/settings-committer
sources/api/thar-be-updates
...
build.rs
build.rs
build.rs
build.rs
build.rs
build.rs
build.rs
build.rs
build.rs
build.rs
...
8:32 
8:32 
32:56 
8:32 
8:32 
8:32 
8:32 
8:32 
8:32 
8:32 
...
view
18 x 4 sources/api/apiserver
sources/api/datastore
sources/models
sources/models/model-derive
build.rs
build.rs
build.rs
build.rs
8:32 
8:32 
99:123 
8:32 
view
18 x 2 sources/api/host-containers/src
sources/driverdog/src
main.rs
main.rs
248:269 
328:349 
view
11 x 3 sources/api/host-containers/src
sources/api/sundog/src
sources/api/early-boot-config/src
main.rs
main.rs
main.rs
306:318 
390:402 
46:58 
view
11 x 2 sources/updater/update_metadata/src
sources/updater/update_metadata/src
lib.rs
lib.rs
663:677 
680:693 
view
10 x 2 sources/api/migration/migrator/src
sources/updater/updog/src
main.rs
main.rs
492:502 
590:600 
view
9 x 2 sources/api/migration/migration-helpers/src
sources/api/migration/migration-helpers/src
common_migrations.rs
common_migrations.rs
24:33 
185:194 
view
7 x 2 sources/api/schnauzer/src
sources/api/schnauzer/src
helpers.rs
helpers.rs
1359:1366 
1871:1878 
view
7 x 2 sources/api/schnauzer/src
sources/api/schnauzer/src
helpers.rs
helpers.rs
1395:1402 
1413:1420 
view
7 x 2 sources/api/schnauzer/src
sources/api/schnauzer/src
helpers.rs
helpers.rs
1575:1582 
1585:1592 
view
6 x 2 sources/api/host-containers/src
sources/api/host-containers/src
main.rs
main.rs
219:226 
228:235 
view
6 x 4 sources/api/migration/mi...0/oci-hooks-setting/src
sources/api/migration/mi....0/hostname-setting/src
sources/api/migration/mi...er-registry-mirrors/src
sources/api/migration/mi....0.6/metricdog-init/src
main.rs
main.rs
main.rs
main.rs
8:14 
8:14 
9:15 
8:14 
view
6 x 8 sources/api/migration/mi...ol-container-v0-5-2/src
sources/api/migration/mi...ol-container-v0-5-0/src
sources/api/migration/mi...ol-container-v0-5-1/src
sources/api/migration/mi...ol-container-v0-4-1/src
sources/api/migration/mi...ol-container-v0-4-2/src
sources/api/migration/mi.../ecr-helper-control/src
sources/api/migration/mi...ol-container-v0-5-4/src
sources/api/migration/mi...ol-container-v0-5-3/src
main.rs
main.rs
main.rs
main.rs
main.rs
main.rs
main.rs
main.rs
13:19 
13:19 
13:19 
13:19 
14:20 
13:19 
13:19 
13:19 
view
6 x 8 sources/api/migration/mi...in-container-v0-7-2/src
sources/api/migration/mi...in-container-v0-7-0/src
sources/api/migration/mi...in-container-v0-5-0/src
sources/api/migration/mi...in-container-v0-7-1/src
sources/api/migration/mi...in-container-v0-5-2/src
sources/api/migration/mi...in-container-v0-6-0/src
sources/api/migration/mi....0/ecr-helper-admin/src
sources/api/migration/mi...in-container-v0-7-3/src
main.rs
main.rs
main.rs
main.rs
main.rs
main.rs
main.rs
main.rs
13:19 
13:19 
13:19 
13:19 
13:19 
13:19 
13:19 
13:19 
view
6 x 2 sources/api/migration/migration-helpers/src
sources/api/migration/migration-helpers/src
common_migrations.rs
common_migrations.rs
13:19 
66:72 
view
6 x 2 sources/api/migration/migrator/src
sources/models
main.rs
build.rs
187:193 
147:153 
view
6 x 95 variants/aws-k8s-1.21
variants/aws-k8s-1.18
variants/aws-ecs-1
variants/metal-dev
variants/metal-k8s-1.21
variants/vmware-k8s-1.20
variants/vmware-dev
variants/aws-k8s-1.19
variants/aws-k8s-1.20
variants/vmware-k8s-1.21
...
build.rs
build.rs
build.rs
build.rs
build.rs
build.rs
build.rs
build.rs
build.rs
build.rs
...
3:9 
3:9 
3:9 
3:9 
3:9 
3:9 
3:9 
3:9 
3:9 
3:9 
...
view
6 x 2 tools/pubsys/src/aws
tools/pubsys/src/aws
client.rs
client.rs
22:28 
32:38 
view