File Complexity Overall
  • There are 81 files with units, with 19,467 lines of code.
    • 1 very complex files (McCabe index sum 251+; 1,576 lines of code)
    • 1 complex files (McCabe index sum 126-250; 733 lines of code)
    • 12 medium complex files (McCabe index sum 51-125; 4,350 lines of code)
    • 19 slightly complex files (McCabe index sum 26-50; 4,618 lines of code)
    • 48 simple files (McCabe index sum 1-25; 8,190 lines of code)
  • 5 main files have no units (e.g. languages without unit analysis, or files without functions) and are not classified.
system8% | 3% | 22% | 23% | 42%
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
go8% | 3% | 23% | 23% | 40%
py0% | 0% | 0% | 18% | 81%
File Complexity per Logical Decomposition
primary
251+
126-250
51-125
26-50
1-25
internal8% | 0% | 23% | 25% | 42%
.github0% | 47% | 12% | 7% | 32%
ROOT0% | 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
client.go
in internal/provider/openaiapi
1576 107 415 26 17
verify.go
in .github/actions/verify-release-sboms
733 23 224 31 31
resource_project_spend_alert.go
in internal/provider/resources/project_spend_alert
421 9 72 17 22
resource_organization_spend_alert.go
in internal/provider/resources/organization_spend_alert
395 9 71 18 22
resource_invite.go
in internal/provider/resources/invite
427 10 62 15 23
resource_project_hosted_tool_permissions.go
in internal/provider/resources/project_hosted_tool_permissions
288 9 60 21 19
resource_webhook_endpoint.go
in internal/provider/resources/webhook_endpoint
377 9 59 16 16
resource_project_rate_limit.go
in internal/provider/resources/project_rate_limit
398 9 59 15 16
resource_project.go
in internal/provider/resources/project
368 9 58 16 14
resource_project_user.go
in internal/provider/resources/project_user
373 9 57 15 16
resource_project_role.go
in internal/provider/resources/project_role
365 9 57 16 15
resource_role.go
in internal/provider/resources/role
340 9 56 16 15
resource_organization_user.go
in internal/provider/resources/organization_user
410 9 56 14 19
install.go
in .github/actions/setup-terraform
188 6 51 27 19
resource_mcp_tunnel.go
in internal/provider/resources/mcp_tunnel
318 9 49 15 12
resource_project_model_permissions.go
in internal/provider/resources/project_model_permissions
285 9 49 17 12
resource_certificate.go
in internal/provider/resources/certificate
308 9 46 15 11
resource_group.go
in internal/provider/resources/group
296 9 46 16 11
resource_project_group.go
in internal/provider/resources/project_group
302 9 44 15 12
release_tracking.py
in .github/scripts
113 6 44 39 13
resource_project_user_role.go
in internal/provider/resources/project_user_role
318 9 43 14 11
resource_organization_spend_limit.go
in internal/provider/resources/organization_spend_limit
285 9 43 15 10
resource_project_spend_limit.go
in internal/provider/resources/project_spend_limit
294 9 43 15 10
resource_project_service_account.go
in internal/provider/resources/project_service_account
254 9 36 14 9
resource_organization_data_retention.go
in internal/provider/resources/organization_data_retention
203 9 35 17 8
resource_project_data_retention.go
in internal/provider/resources/project_data_retention
210 9 35 17 8
provider_security.go
in internal/provider
108 7 34 31 16
resource_project_group_role.go
in internal/provider/resources/project_group_role
230 9 33 14 7
provider.go
in internal/provider
266 6 31 12 26
resource_group_user.go
in internal/provider/resources/group_user
197 9 30 15 6
resource_group_role.go
in internal/provider/resources/group_role
191 9 28 15 5
data_source_organization_users.go
in internal/provider/resources/organization_user
249 6 28 11 20
resource_user_role.go
in internal/provider/resources/user_role
191 9 28 15 5
data_source_organization_user.go
in internal/provider/resources/organization_user
248 5 24 10 17
data_source_webhook_endpoints.go
in internal/provider/resources/webhook_endpoint
201 6 23 11 15
data_source_project_rate_limits.go
in internal/provider/resources/project_rate_limit
214 6 23 11 15
data_source_project_spend_alerts.go
in internal/provider/resources/project_spend_alert
205 6 22 11 14
data_source_invites.go
in internal/provider/resources/invite
189 6 22 12 14
verify-syft-boundary.py
in .github/actions/verify-release-sboms
202 8 22 11 8
data_source_group_roles.go
in internal/provider/resources/group_role
195 6 21 11 13
data_source_project_user_roles.go
in internal/provider/resources/project_user_role
208 6 21 10 13
data_source_roles.go
in internal/provider/resources/role
180 6 21 12 13
data_source_certificates.go
in internal/provider/resources/certificate
179 6 21 12 13
data_source_project_group_roles.go
in internal/provider/resources/project_group_role
208 6 21 10 13
data_source_project_certificates.go
in internal/provider/resources/project_certificates
194 6 21 11 13
data_source_user_roles.go
in internal/provider/resources/user_role
195 6 21 11 13
data_source_projects.go
in internal/provider/resources/project
180 6 21 12 13
data_source_project_rate_limit.go
in internal/provider/resources/project_rate_limit
211 5 21 10 14
data_source_project_roles.go
in internal/provider/resources/project_role
195 6 21 11 13
data_source_groups.go
in internal/provider/resources/group
169 6 20 12 12
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...