firecracker-microvm / firecracker
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
  • 11% duplication:
    • 47,867 cleaned lines of cleaned code (without empty lines, comments, and frequently duplicated constructs such as imports)
    • 5,580 duplicated lines
  • 967 duplicates
system11% (5,580 lines)
Duplication per Extension
rs11% (5,307 lines)
yaml25% (224 lines)
py17% (29 lines)
toml5% (20 lines)
Duplication per Component (primary)
src/devices9% (1,018 lines)
src/vmm10% (1,010 lines)
src/seccompiler22% (674 lines)
src/api_server18% (613 lines)
src/arch14% (451 lines)
src/dumbo9% (337 lines)
src/cpuid15% (313 lines)
src/net_gen18% (296 lines)
src/utils15% (211 lines)
src/mmds8% (147 lines)
src/virtio_gen23% (123 lines)
src/snapshot23% (122 lines)
src/rate_limiter12% (74 lines)
src/jailer2% (62 lines)
src/logger4% (44 lines)
tools/parse_baselines17% (29 lines)
src/vm-memory9% (27 lines)
src/io_uring2% (20 lines)
src/firecracker1% (9 lines)
tools/devctr0% (0 lines)
src/arch_gen0% (0 lines)
ROOT0% (0 lines)

Duplication Between Components (50+ lines)

G src/net_gen src/net_gen src/virtio_gen src/virtio_gen src/net_gen--src/virtio_gen 289 src/seccompiler src/seccompiler src/vmm src/vmm src/seccompiler--src/vmm 64

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 967 duplicates...
Size#FoldersFilesLinesCode
105 x 2 src/net_gen/src
src/net_gen/src
if_tun.rs
inn.rs
218:330 (18%)
101:213 (13%)
view
59 x 2 src/cpuid/src/template/intel
src/cpuid/src/template/intel
c3.rs
t2.rs
72:151 (45%)
66:145 (48%)
view
55 x 2 src/vmm/src/vmm_config
src/vmm/src/vmm_config
drive.rs
drive.rs
373:434 (12%)
437:500 (12%)
view
43 x 2 src/arch/src/aarch64/gic/gicv2/regs
src/arch/src/aarch64/gic/gicv3/regs
dist_regs.rs
dist_regs.rs
47:129 (42%)
47:129 (41%)
view
36 x 2 src/seccompiler/src
src/seccompiler/src
compiler.rs
compiler.rs
316:354 (8%)
403:441 (8%)
view
32 x 2 src/vmm/src
src/vmm/src
signal_handler.rs
signal_handler.rs
321:352 (10%)
385:416 (10%)
view
28 x 2 src/net_gen/src
src/net_gen/src
if_tun.rs
iff.rs
5:43 (5%)
5:43 (22%)
view
23 x 2 src/net_gen/src
src/virtio_gen/src
if_tun.rs
virtio_blk.rs
259:281 (4%)
88:110 (4%)
view
23 x 2 src/net_gen/src
src/virtio_gen/src
inn.rs
virtio_blk.rs
142:164 (2%)
88:110 (4%)
view
22 x 2 src/api_server/src
src/api_server/src
lib.rs
lib.rs
630:653 (4%)
677:700 (4%)
view
22 x 2 src/virtio_gen/src
src/virtio_gen/src
virtio_net.rs
virtio_ring.rs
4:32 (100%)
4:32 (100%)
view
21 x 2 src/devices/src/virtio/balloon
src/devices/src/virtio/net
device.rs
device.rs
502:538 (3%)
757:793 (1%)
view
20 x 2 src/arch/src/aarch64
src/arch/src/aarch64
fdt.rs
fdt.rs
534:556 (4%)
598:620 (4%)
view
20 x 2 src/devices/src/virtio/block
src/devices/src/virtio/block
device.rs
device.rs
1538:1574 (1%)
1619:1655 (1%)
view
19 x 2 src/cpuid/src/template/intel
src/cpuid/src/template/intel
c3.rs
t2.rs
42:65 (14%)
40:63 (15%)
view
19 x 2 src/vmm/src
src/vmm/src/vstate/vcpu
lib.rs
mod.rs
726:744 (3%)
409:427 (2%)
view
18 x 2 src/utils/src
src/utils/src
arg_parser.rs
arg_parser.rs
862:882 (2%)
888:908 (2%)
view
17 x 2 src/devices/src/virtio/balloon
src/devices/src/virtio/block
device.rs
device.rs
502:534 (2%)
538:571 (1%)
view
17 x 2 src/net_gen/src
src/virtio_gen/src
if_tun.rs
virtio_blk.rs
314:330 (3%)
138:154 (3%)
view
17 x 2 src/vmm/src
src/vmm/src
resources.rs
resources.rs
709:728 (1%)
746:767 (1%)
view
Duplicated Units
The list of top 13 duplicated units.
See data for all 13 unit duplicates...
Size#FoldersFilesLinesCode
55 x 2 src/vmm/src/vmm_config
src/vmm/src/vmm_config
drive.rs
drive.rs
372:432 
436:498 
view
22 x 2 src/cpuid/src/template/intel
src/cpuid/src/template/intel
t2.rs
c3.rs
106:139 
112:145 
view
21 x 2 src/net_gen/src
src/net_gen/src
inn.rs
if_tun.rs
115:136 
232:253 
view
21 x 2 src/net_gen/src
src/net_gen/src
inn.rs
if_tun.rs
170:191 
287:308 
view
15 x 2 src/api_server/src
src/api_server/src
parsed_request.rs
parsed_request.rs
454:469 
472:487 
view
11 x 2 src/api_server/src
src/api_server/src
lib.rs
lib.rs
387:398 
401:412 
view
9 x 4 src/devices/src/virtio/balloon
src/devices/src/virtio/block
src/devices/src/virtio/vsock
src/devices/src/virtio/net
event_handler.rs
event_handler.rs
event_handler.rs
event_handler.rs
39:48 
34:43 
138:147 
41:50 
view
9 x 2 src/api_server/src
src/api_server/src
parsed_request.rs
parsed_request.rs
615:624 
627:636 
view
8 x 2 src/arch/src/aarch64/gic/gicv3/regs
src/arch/src/aarch64/gic/gicv2/regs
dist_regs.rs
dist_regs.rs
60:74 
60:74 
view
8 x 2 src/cpuid/src/template/intel
src/cpuid/src/template/intel
t2.rs
c3.rs
158:166 
167:175 
view
8 x 2 tools/parse_baselines/providers
tools/parse_baselines/providers
block.py
snapshot_restore.py
0:0 
0:0 
view
6 x 3 src/devices/src/virtio/balloon
src/devices/src/virtio/block
src/devices/src/virtio/net
event_handler.rs
event_handler.rs
event_handler.rs
99:109 
88:98 
98:108 
view
6 x 2 src/vmm/src/device_manager
src/vmm/src/device_manager
persist.rs
persist.rs
421:427 
438:444 
view