microsoft / FourQlib
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
  • 73% duplication:
    • 16,396 cleaned lines of cleaned code (without empty lines, comments, and frequently duplicated constructs such as imports)
    • 12,002 duplicated lines
  • 1,205 duplicates
system73% (12,002 lines)
Duplication per Extension
c70% (5,051 lines)
h68% (3,836 lines)
S84% (2,509 lines)
vcxproj87% (334 lines)
ld100% (202 lines)
filters72% (70 lines)
Duplication per Component (primary)
FourQ_ARM83% (1,583 lines)
FourQ_64bit_and_portable69% (1,402 lines)
FourQ_ARM/ARM100% (1,316 lines)
FourQ_ARM_side_channel/ARM100% (1,316 lines)
FourQ_ARM_NEON/ARM65% (1,170 lines)
FourQ_ARM_side_channel62% (1,015 lines)
FourQ_32bit61% (1,011 lines)
FourQ_ARM_NEON61% (915 lines)
FourQ_64bit_and_portable/AMD6446% (435 lines)
FourQ_ARM/libopencm397% (434 lines)
FourQ_ARM_side_channel/libopencm397% (434 lines)
FourQ_32bit/generic77% (228 lines)
FourQ_32bit/Visual Studio86% (203 lines)
FourQ_64bit_and_portable/Visual Studio82% (201 lines)
FourQ_64bit_and_portable/generic77% (173 lines)
FourQ_64bit_and_portable/ARM6494% (166 lines)
FourQ_ARM/random0% (0 lines)
FourQ_ARM_side_channel/random0% (0 lines)
random0% (0 lines)
sha5120% (0 lines)

Duplication Between Components (50+ lines)

G FourQ_64bit_and_portable FourQ_64bit_and_portable FourQ_ARM FourQ_ARM FourQ_64bit_and_portable--FourQ_ARM 2746 FourQ_ARM_side_channel FourQ_ARM_side_channel FourQ_64bit_and_portable--FourQ_ARM_side_channel 1468 FourQ_ARM_NEON FourQ_ARM_NEON FourQ_64bit_and_portable--FourQ_ARM_NEON 1085 FourQ_ARM--FourQ_ARM_side_channel 1880 FourQ_ARM--FourQ_ARM_NEON 1116 FourQ_ARM/ARM FourQ_ARM/ARM FourQ_ARM_side_channel/ARM FourQ_ARM_side_channel/ARM FourQ_ARM/ARM--FourQ_ARM_side_channel/ARM 2632 FourQ_ARM_NEON/ARM FourQ_ARM_NEON/ARM FourQ_ARM/ARM--FourQ_ARM_NEON/ARM 74 FourQ_32bit FourQ_32bit FourQ_32bit--FourQ_ARM_NEON 1829 FourQ_32bit--FourQ_ARM 1240 FourQ_32bit--FourQ_64bit_and_portable 1203 FourQ_32bit--FourQ_ARM_side_channel 630 FourQ_ARM_NEON--FourQ_ARM_side_channel 538 FourQ_ARM/libopencm3 FourQ_ARM/libopencm3 FourQ_ARM_side_channel/libopencm3 FourQ_ARM_side_channel/libopencm3 FourQ_ARM/libopencm3--FourQ_ARM_side_channel/libopencm3 868 FourQ_32bit/Visual Studio FourQ_32bit/Visual Studio FourQ_64bit_and_portable/Visual Studio FourQ_64bit_and_portable/Visual Studio FourQ_32bit/Visual Studio--FourQ_64bit_and_portable/Visual Studio 400 FourQ_32bit/generic FourQ_32bit/generic FourQ_32bit/generic--FourQ_ARM_NEON/ARM 390 FourQ_32bit/generic--FourQ_ARM_side_channel/ARM 166 FourQ_32bit/generic--FourQ_ARM/ARM 166 FourQ_64bit_and_portable/generic FourQ_64bit_and_portable/generic FourQ_32bit/generic--FourQ_64bit_and_portable/generic 142 FourQ_64bit_and_portable/ARM64 FourQ_64bit_and_portable/ARM64 FourQ_32bit/generic--FourQ_64bit_and_portable/ARM64 82 FourQ_64bit_and_portable/AMD64 FourQ_64bit_and_portable/AMD64 FourQ_32bit/generic--FourQ_64bit_and_portable/AMD64 82 FourQ_ARM_NEON/ARM--FourQ_ARM_side_channel/ARM 74 FourQ_64bit_and_portable/AMD64--FourQ_64bit_and_portable/ARM64 332 FourQ_64bit_and_portable/AMD64--FourQ_64bit_and_portable/generic 134 FourQ_64bit_and_portable/AMD64--FourQ_ARM/ARM 134 FourQ_64bit_and_portable/AMD64--FourQ_ARM_side_channel/ARM 134 FourQ_64bit_and_portable/AMD64--FourQ_ARM_NEON/ARM 70 FourQ_64bit_and_portable/ARM64--FourQ_64bit_and_portable/generic 134 FourQ_64bit_and_portable/ARM64--FourQ_ARM_side_channel/ARM 134 FourQ_64bit_and_portable/ARM64--FourQ_ARM/ARM 134 FourQ_64bit_and_portable/ARM64--FourQ_ARM_NEON/ARM 70 FourQ_64bit_and_portable/generic--FourQ_ARM_side_channel/ARM 316 FourQ_64bit_and_portable/generic--FourQ_ARM/ARM 316 FourQ_64bit_and_portable/generic--FourQ_ARM_NEON/ARM 50

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 1,205 duplicates...
Size#FoldersFilesLinesCode
568 x 2 FourQ_ARM/ARM
FourQ_ARM_side_channel/ARM
S
fp2_1271_arm.S
fp2_1271_arm.S
1:644 (100%)
1:644 (100%)
view
561 x 2 FourQ_ARM/ARM
FourQ_ARM_side_channel/ARM
S
fp2_1271_arm_Cortex-M4.S
fp2_1271_arm_Cortex-M4.S
1:637 (100%)
1:637 (100%)
view
285 x 2 FourQ_ARM/libopencm3/include
FourQ_ARM_side_channel/libopencm3/include
rcc.h
rcc.h
519:868 (100%)
519:868 (100%)
view
257 x 2 FourQ_ARM
FourQ_ARM_side_channel
FourQ_tables.h
FourQ_tables.h
326:582 (47%)
19:275 (100%)
view
257 x 2 FourQ_64bit_and_portable
FourQ_ARM
FourQ_tables.h
FourQ_tables.h
106:362 (76%)
326:582 (47%)
view
257 x 2 FourQ_64bit_and_portable
FourQ_ARM_side_channel
FourQ_tables.h
FourQ_tables.h
106:362 (76%)
19:275 (100%)
view
214 x 2 FourQ_32bit
FourQ_ARM_NEON
eccp2.c
eccp2.c
794:1144 (31%)
764:1115 (33%)
view
187 x 2 FourQ_ARM/ARM
FourQ_ARM_side_channel/ARM
fp_arm.h
fp_arm.h
15:354 (100%)
15:354 (100%)
view
181 x 2 FourQ_ARM/ARM
FourQ_ARM_side_channel/ARM
S
fp2_1271_arm_Cortex-M4.S
fp2_1271_arm.S
230:438 (32%)
225:433 (31%)
view
181 x 2 FourQ_ARM/ARM
FourQ_ARM_side_channel/ARM
S
fp2_1271_arm.S
fp2_1271_arm_Cortex-M4.S
225:433 (31%)
230:438 (32%)
view
181 x 2 FourQ_ARM_side_channel/ARM
FourQ_ARM_side_channel/ARM
S
fp2_1271_arm.S
fp2_1271_arm_Cortex-M4.S
225:433 (31%)
230:438 (32%)
view
181 x 2 FourQ_ARM/ARM
FourQ_ARM/ARM
S
fp2_1271_arm.S
fp2_1271_arm_Cortex-M4.S
225:433 (31%)
230:438 (32%)
view
126 x 2 FourQ_64bit_and_portable/AMD64
FourQ_64bit_and_portable/ARM64
fp_x64.h
fp_arm64.h
194:400 (55%)
112:318 (72%)
view
101 x 2 FourQ_ARM
FourQ_ARM_side_channel
ld
stm32f407x6.ld
stm32f407x6.ld
1:113 (100%)
1:113 (100%)
view
100 x 2 FourQ_32bit
FourQ_64bit_and_portable
schnorrq.c
schnorrq.c
21:189 (100%)
21:189 (100%)
view
100 x 2 FourQ_ARM
FourQ_ARM_NEON
schnorrq.c
schnorrq.c
21:189 (100%)
21:189 (100%)
view
100 x 2 FourQ_64bit_and_portable
FourQ_ARM
schnorrq.c
schnorrq.c
21:189 (100%)
21:189 (100%)
view
100 x 2 FourQ_32bit
FourQ_ARM
schnorrq.c
schnorrq.c
21:189 (100%)
21:189 (100%)
view
100 x 2 FourQ_32bit
FourQ_ARM_NEON
schnorrq.c
schnorrq.c
21:189 (100%)
21:189 (100%)
view
100 x 2 FourQ_64bit_and_portable
FourQ_ARM_NEON
schnorrq.c
schnorrq.c
21:189 (100%)
21:189 (100%)
view
Duplicated Units
The list of top 20 duplicated units.
See data for all 87 unit duplicates...
Size#FoldersFilesLinesCode
135 x 2 FourQ_ARM_NEON/ARM
FourQ_ARM_NEON/ARM
fp2_1271_NEON.c
fp2_1271_NEON.c
432:591 
594:753 
view
123 x 2 FourQ_32bit
FourQ_ARM_NEON
eccp2.c
eccp2.c
939:1081 
910:1052 
view
71 x 2 FourQ_64bit_and_portable
FourQ_ARM
crypto_util.c
crypto_util.c
46:127 
46:127 
view
47 x 2 FourQ_32bit
FourQ_ARM_NEON
eccp2.c
eccp2.c
799:859 
770:830 
view
44 x 4 FourQ_32bit
FourQ_64bit_and_portable
FourQ_ARM
FourQ_ARM_NEON
schnorrq.c
schnorrq.c
schnorrq.c
schnorrq.c
76:131 
76:131 
76:131 
76:131 
view
42 x 5 FourQ_32bit
FourQ_64bit_and_portable
FourQ_ARM
FourQ_ARM_NEON
FourQ_ARM_side_channel
schnorrq.c
schnorrq.c
schnorrq.c
schnorrq.c
schnorrq.c
134:190 
134:190 
134:190 
134:190 
180:236 
view
41 x 2 FourQ_64bit_and_portable
FourQ_ARM
eccp2.c
eccp2.c
111:156 
193:238 
view
40 x 3 FourQ_32bit
FourQ_ARM
FourQ_ARM_side_channel
eccp2.c
eccp2.c
eccp2.c
401:443 
293:335 
345:387 
view
34 x 4 FourQ_32bit
FourQ_64bit_and_portable
FourQ_ARM
FourQ_ARM_NEON
eccp2.c
eccp2_core.c
eccp2.c
eccp2.c
862:913 
447:498 
751:802 
833:884 
view
34 x 5 FourQ_32bit
FourQ_64bit_and_portable
FourQ_ARM
FourQ_ARM_NEON
FourQ_ARM_side_channel
eccp2.c
eccp2_core.c
eccp2.c
eccp2.c
eccp2.c
1107:1145 
689:727 
996:1034 
1078:1116 
1044:1082 
view
34 x 2 FourQ_32bit
FourQ_ARM_NEON
eccp2_no_endo.c
eccp2_no_endo.c
110:155 
112:157 
view
33 x 2 FourQ_32bit/generic
FourQ_ARM_NEON/ARM
fp.h
fp_arm.h
265:299 
269:303 
view
33 x 3 FourQ_64bit_and_portable/AMD64
FourQ_64bit_and_portable/ARM64
FourQ_64bit_and_portable/generic
fp_x64.h
fp_arm64.h
fp.h
194:228 
112:146 
221:255 
view
33 x 2 FourQ_ARM/ARM
FourQ_ARM_side_channel/ARM
fp_arm.h
fp_arm.h
175:209 
175:209 
view
30 x 2 FourQ_32bit
FourQ_ARM_NEON
eccp2.c
eccp2.c
545:585 
484:524 
view
28 x 4 FourQ_32bit
FourQ_64bit_and_portable
FourQ_ARM
FourQ_ARM_NEON
eccp2_no_endo.c
eccp2_no_endo.c
eccp2_no_endo.c
eccp2_no_endo.c
22:63 
22:63 
22:63 
24:65 
view
27 x 4 FourQ_32bit/generic
FourQ_64bit_and_portable/generic
FourQ_ARM/ARM
FourQ_ARM_side_channel/ARM
fp.h
fp.h
fp_arm.h
fp_arm.h
29:60 
27:58 
26:57 
26:57 
view
26 x 2 FourQ_32bit
FourQ_ARM_NEON
eccp2.c
eccp2.c
360:398 
357:395 
view
26 x 2 FourQ_64bit_and_portable
FourQ_ARM
eccp2.c
eccp2.c
344:382 
338:376 
view
25 x 4 FourQ_32bit
FourQ_64bit_and_portable
FourQ_ARM
FourQ_ARM_NEON
kex.c
kex.c
kex.c
kex.c
71:107 
71:107 
71:107 
71:107 
view