File Complexity Overall
  • There are 93 files with units, with 23,482 lines of code.
    • 5 very complex files (McCabe index sum 251+; 7,007 lines of code)
    • 8 complex files (McCabe index sum 126-250; 4,508 lines of code)
    • 18 medium complex files (McCabe index sum 51-125; 4,950 lines of code)
    • 17 slightly complex files (McCabe index sum 26-50; 3,542 lines of code)
    • 45 simple files (McCabe index sum 1-25; 3,475 lines of code)
  • 22 main files have no units (e.g. languages without unit analysis, or files without functions) and are not classified.
system29% | 19% | 21% | 15% | 14%
Legend:
251+
126-250
51-125
26-50
1-25


explore: grouped by folders | grouped by complexity
File Complexity per Extension
251+
126-250
51-125
26-50
1-25
c44% | 23% | 22% | 5% | 3%
h0% | 22% | 29% | 28% | 19%
py0% | 10% | 11% | 20% | 57%
rs0% | 0% | 17% | 59% | 23%
File Complexity per Logical Decomposition
primary
251+
126-250
51-125
26-50
1-25
AES34% | 22% | 20% | 14% | 8%
LEA0% | 0% | 64% | 0% | 35%
HAWK0% | 0% | 10% | 29% | 59%
Most Complex Files (Top 50)

The McCabe index of a file grows with its size: per 100 lines tells a large but plain file from a dense one, and most complex unit whether the complexity sits in one unit or is spread over many.

File# lines# unitsMcCabe index
(sum)
per 100
lines
most complex
unit
sr7226_exact2.c
in AES/experiments/sr7226-e2e
1636 58 591 36 111
sr7226_canon2.c
in AES/experiments/sr7226-e2e
1575 53 566 36 111
sr7226_gray.c
in AES/experiments/sr7226-e2e
1635 57 489 30 67
sr7226_dfjpub.c
in AES/experiments/sr7226-e2e
1110 43 385 35 81
sr7226_variants.c
in AES/experiments/sr7226-e2e
1051 43 358 34 59
analyze.c
in AES/experiments/aes128-measured/offline
845 21 234 28 55
saes_imn.c
in AES/c/mobius-honest
419 14 180 43 73
phi.c
in AES/experiments/aes128-measured/phi
975 28 164 17 23
verify_Imn.py
in AES/python
383 29 158 41 39
online3.c
in AES/experiments/aes128-measured/projection
592 25 149 25 49
online_bench.c
in AES/experiments/aes128-measured/online
557 25 144 26 49
fp_solve.c
in AES/c
314 17 131 42 36
common.h
in AES/experiments/aes128-measured/common
423 34 127 30 20
honest_online.c
in AES/c/mobius-honest
355 15 122 34 81
canon_even.h
in AES/experiments/aes128-measured/common
254 14 109 43 33
sbc_repro.c
in AES/c/sb-cache
560 18 106 19 18
attack.c
in LEA
524 15 98 19 34
ddt_gray_e2e.c
in AES/c/ddt-gray
356 12 93 26 28
wrongkey.c
in AES/c
212 8 81 38 35
verify_ls_fp.c
in AES/c/floor
200 17 79 40 10
ddt_gray_capstone.c
in AES/c/ddt-gray
226 7 76 34 48
offline3.c
in AES/experiments/aes128-measured/projection
216 8 74 34 39
main.rs
in AES/rust/src
100 4 72 72 69
fp_concat_demo.py
in AES/python
165 8 71 43 34
table_build.c
in AES/experiments/aes128-measured/offline
345 3 71 21 64
tower.py
in HAWK/hawk_recover
238 13 65 27 18
honest_rebound.c
in AES/c/mobius-honest
258 8 63 24 37
exp_honest.rs
in AES/rust/src
296 3 62 21 59
kernel_v2_vec.h
in AES/experiments/aes128-measured/common
291 14 60 21 17
classify.c
in AES/experiments/aes128-measured/offline
161 5 59 37 32
clump.c
in AES/c
193 8 58 30 22
chi_clump.c
in AES/c
175 10 49 28 16
aes_core.h
in AES/experiments/aes128-measured/common
104 17 48 46 10
sr744.rs
in AES/rust/src
1344 16 47 3 7
verify.py
in HAWK/hawk_recover/evidence
174 2 46 26 45
ring.py
in HAWK/hawk_recover
101 19 40 40 5
ddt_gray_honest.c
in AES/c/ddt-gray
176 10 40 23 8
saes.h
in AES/c/mobius-honest
109 19 39 36 7
ddt_gray_online.c
in AES/c/ddt-gray
198 7 39 20 20
svp.py
in HAWK/hawk_recover
293 11 38 13 9
prop2.h
in AES/experiments/aes128-measured/common
121 5 33 27 14
prop2.py
in AES/python/a1
64 9 32 50 9
chi256.h
in AES/experiments/aes128-measured/common
84 12 31 37 5
chi256_fast.h
in AES/experiments/aes128-measured/common
115 8 30 26 10
bc_truehit.c
in AES/c/bridge-consistency
129 4 30 23 13
verify_lemmas.py
in HAWK/scripts
107 7 27 25 10
denom.c
in AES/experiments/aes128-measured/projection
158 8 27 17 10
verify_incompat.c
in AES/c/floor
90 7 27 30 8
ddt_gray_timing.c
in AES/c/ddt-gray
115 5 25 22 10
types.py
in HAWK/hawk_recover
144 12 24 17 4
About This Analysis
  • File complexity is the sum of the McCabe indexes (conditional complexity) of the units (methods, functions...) in a file.
  • Files are classified in five categories based on that sum: 1-25 (simple files), 26-50 (slightly complex files), 51-125 (medium complex files), 126-250 (complex files), 251+ (very complex files). The default bands are five times the unit complexity bands, as a file is a group of units.
  • Only main code files with units are classified. Files without units (languages without unit analysis, or files without functions) have no complexity to measure and are left out rather than counted as simple.
  • A very complex file holds many decisions, which often means it has too many responsibilities: a candidate to split, and a place where changes need more testing.
Learn more...