File Complexity Overall
  • There are 68 files with units, with 7,938 lines of code.
    • 0 very complex files (McCabe index sum 251+; 0 lines of code)
    • 0 complex files (McCabe index sum 126-250; 0 lines of code)
    • 4 medium complex files (McCabe index sum 51-125; 1,681 lines of code)
    • 16 slightly complex files (McCabe index sum 26-50; 2,764 lines of code)
    • 48 simple files (McCabe index sum 1-25; 3,493 lines of code)
  • 743 main files have no units (e.g. languages without unit analysis, or files without functions) and are not classified.
system0% | 0% | 21% | 34% | 44%
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
py0% | 0% | 22% | 35% | 42%
rb0% | 0% | 0% | 28% | 71%
File Complexity per Logical Decomposition
primary
251+
126-250
51-125
26-50
1-25
tools0% | 0% | 30% | 37% | 31%
flow0% | 0% | 13% | 32% | 53%
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
utils.py
in tools/AutoTuner/src/autotuner
547 14 125 23 55
315 11 64 20 17
genMassive.py
in flow/util
317 5 62 20 42
distributed.py
in tools/AutoTuner/src/autotuner
502 14 59 12 15
uploadMetadata.py
in flow/util
403 10 49 12 18
verilog_exporter.py
in tools/FakeRAM2.0/utils
141 13 47 33 9
schema.py
in flow/scripts/memories
146 8 47 32 11
synDashboard.py
in flow/util
125 7 41 33 13
class_process.py
in tools/FakeRAM2.0/utils
119 28 40 34 7
genReport.py
in flow/util
257 6 40 16 9
spreadsheet_ram.py
in tools/FakeRAM2.0
188 8 38 20 12
run_lvs.py
in flow/platforms/ihp-sg13g2/lvs
147 9 38 26 13
class_memory.py
in tools/FakeRAM2.0/utils
147 32 35 24 2
genElapsedTime.py
in flow/util
121 3 35 29 26
liberty_exporter.py
in tools/FakeRAM2.0/utils
384 22 33 9 8
timing_data.py
in tools/FakeRAM2.0/utils
66 20 32 48 11
LEFViaData.rb
in flow/scripts/klayout/src
148 13 32 22 7
lef_exporter.py
in tools/FakeRAM2.0/utils
127 10 28 22 9
ss_port_organizer.py
in tools/FakeRAM2.0/utils
94 7 27 29 11
detect.py
in flow/scripts/memories
151 3 27 18 19
genReportTable.py
in flow/util
353 4 25 7 12
physical_data.py
in tools/FakeRAM2.0/utils
61 10 24 39 6
rw_port_group.py
in tools/FakeRAM2.0/utils
56 18 20 36 3
genMetrics.py
in flow/util
296 8 20 7 5
mem_dump.py
in flow/scripts
119 4 19 16 11
plot.py
in tools/AutoTuner/scripts
136 4 18 13 8
basic_port_creator.py
in tools/FakeRAM2.0/utils
193 10 18 9 5
convertDrc.py
in flow/util
107 1 18 17 18
itf_to_rc.py
in flow/platforms/gt2n
84 2 17 20 12
run_command.py
in flow/scripts
89 4 17 19 12
KLayoutLayerMapGenerator.rb
in flow/scripts/klayout/src
98 8 15 15 5
LEFVia.rb
in flow/scripts/klayout/src
70 11 14 20 2
port.py
in tools/FakeRAM2.0/utils
35 12 12 34 1
ss_port_creator.py
in tools/FakeRAM2.0/utils
34 4 12 35 5
45 4 11 24 5
cred_helper.py
in flow/util
47 4 11 23 6
KLayoutTechFileGenerator.rb
in flow/scripts/klayout/src
97 7 10 10 3
memory_config.py
in tools/FakeRAM2.0/utils
28 8 8 29 1
run_utils.py
in tools/FakeRAM2.0/utils
45 5 8 18 3
GenericLayerNameMapper.rb
in flow/scripts/klayout/src
36 3 8 22 4
gen_memories.py
in flow/scripts/memories
119 3 8 7 6
ram_liberty_exporter.py
in tools/FakeRAM2.0/utils
22 3 7 32 5
LEFLayer.rb
in flow/scripts/klayout/src
31 6 7 23 2
idiomatic.py
in flow/scripts/memories
26 2 7 27 5
ram_verilog_exporter.py
in tools/FakeRAM2.0/utils
47 5 6 13 2
single_port_ram_verilog_exporter.py
in tools/FakeRAM2.0/utils
128 6 6 5 1
KLayoutLayerPropertiesFileGenerator.rb
in flow/scripts/klayout/src
28 4 6 21 3
run.py
in tools/FakeRAM2.0
34 2 5 15 4
genRuleFile.py
in flow/util
429 2 5 1 4
factory_base.py
in tools/FakeRAM2.0/utils
17 3 4 24 2
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...