File Complexity Overall
  • There are 939 files with units, with 212,420 lines of code.
    • 3 very complex files (McCabe index sum 251+; 4,898 lines of code)
    • 29 complex files (McCabe index sum 126-250; 35,716 lines of code)
    • 101 medium complex files (McCabe index sum 51-125; 51,324 lines of code)
    • 137 slightly complex files (McCabe index sum 26-50; 38,602 lines of code)
    • 669 simple files (McCabe index sum 1-25; 81,880 lines of code)
  • 361 main files have no units (e.g. languages without unit analysis, or files without functions) and are not classified.
system2% | 16% | 24% | 18% | 38%
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
ts2% | 18% | 27% | 17% | 33%
tsx0% | 10% | 6% | 20% | 62%
js0% | 0% | 21% | 17% | 61%
cs0% | 0% | 100% | 0% | 0%
cjs0% | 0% | 14% | 42% | 43%
py0% | 0% | 0% | 27% | 72%
File Complexity per Logical Decomposition
primary
251+
126-250
51-125
26-50
1-25
packages2% | 18% | 24% | 17% | 36%
scripts0% | 7% | 28% | 21% | 43%
evals0% | 0% | 18% | 13% | 67%
sea0% | 0% | 100% | 0% | 0%
tools0% | 0% | 0% | 24% | 75%
.github0% | 0% | 0% | 71% | 28%
ROOT0% | 0% | 0% | 0% | 100%
.gemini0% | 0% | 0% | 0% | 100%
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
chatRecordingService.ts
in packages/core/src/services
1429 39 262 18 117
vim-buffer-actions.ts
in packages/cli/src/ui/components/shared
1602 4 261 16 246
mcp-client.ts
in packages/core/src/tools
1867 57 258 14 36
geminiChat.ts
in packages/core/src/core
1466 26 243 17 49
test-rig.ts
in packages/test-utils/src
1427 47 230 16 25
shell.ts
in packages/core/src/tools
1092 19 230 21 126
extension-manager.ts
in packages/cli/src/config
1273 38 216 17 47
vim.ts
in packages/cli/src/ui/hooks
1226 2 214 17 210
commandSafety.ts
in packages/core/src/sandbox/utils
690 12 212 31 94
shell-utils.ts
in packages/core/src/utils
944 30 211 22 19
text-buffer.ts
in packages/cli/src/ui/components/shared
3621 29 209 6 68
sandbox.ts
in packages/cli/src/utils
1152 13 206 18 146
memoryService.ts
in packages/core/src/services
1212 41 196 16 19
config.ts
in packages/core/src/config
3474 54 191 5 22
memory.ts
in packages/core/src/commands
1069 37 190 18 22
policy-engine.ts
in packages/core/src/policy
883 10 187 21 62
local-executor.ts
in packages/core/src/agents
1256 25 182 14 34
acpSession.ts
in packages/cli/src/acp
1353 27 182 13 51
shellExecutionService.ts
in packages/core/src/services
1659 28 177 11 36
eval-analysis.ts
in scripts/utils
613 45 176 29 10
settings.ts
in packages/cli/src/config
1132 33 171 15 38
activityLogger.ts
in packages/cli/src/utils
868 24 168 19 35
task.ts
in packages/a2a-server/src/agent
1119 28 166 15 25
gemini.tsx
in packages/cli/src
958 13 161 17 79
edit.ts
in packages/core/src/tools
1240 32 156 13 18
fileUtils.ts
in packages/core/src/utils
640 21 153 24 26
metrics.ts
in packages/core/src/telemetry
1406 47 152 11 13
App.tsx
in packages/devtools/client/src
1782 13 147 8 56
models.ts
in packages/core/src/config
527 19 134 25 45
config.ts
in packages/a2a-server/src/config
620 18 132 21 23
paths.ts
in packages/core/src/utils
542 21 129 24 31
sessionSummaryUtils.ts
in packages/core/src/services
472 18 126 27 21
scheduler.ts
in packages/core/src/scheduler
872 21 118 14 27
601 5 118 20 53
settings.ts
in packages/a2a-server/src/config
909 17 118 13 32
executor.ts
in packages/a2a-server/src/agent
848 20 117 14 58
retry.ts
in packages/core/src/utils
451 7 116 26 54
web-fetch.ts
in packages/core/src/tools
811 23 113 14 18
client.ts
in packages/core/src/core
1098 27 113 10 36
browserManager.ts
in packages/core/src/agents/browser
662 19 112 17 28
registry.ts
in packages/core/src/agents
595 28 112 19 22
oauth2.ts
in packages/core/src/code_assist
736 18 111 15 22
config.ts
in packages/core/src/policy
700 13 111 16 46
grep.ts
in packages/core/src/tools
653 13 109 17 22
sandboxUtils.ts
in packages/cli/src/utils
352 11 109 31 30
VirtualizedList.tsx
in packages/cli/src/ui/components/shared
678 2 108 16 105
memoryPatchUtils.ts
in packages/core/src/services
670 35 107 16 11
extensionsCommand.ts
in packages/cli/src/ui/commands
815 17 104 13 16
security.ts
in packages/core/src/utils
588 14 103 18 28
contextCompressionService.ts
in packages/core/src/context
447 9 101 23 57
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...