aws / eks-anywhere
Conditional Complexity

The distribution of complexity of units (measured with McCabe index).

Intro
  • Conditional complexity (also called cyclomatic complexity) is a term used to measure the complexity of software. The term refers to the number of possible paths through a program function. A higher value ofter means higher maintenance and testing costs (infosecinstitute.com).
  • Conditional complexity is calculated by counting all conditions in the program that can affect the execution path (e.g. if statement, loops, switches, and/or operators, try and catch blocks...).
  • Conditional complexity is measured at the unit level (methods, functions...).
  • Units are classified in four categories based on the measured McCabe index: 1-5 (simple units), 6-10 (medium complex units), 11-25 (complex units), 26+ (very complex units).
Learn more...
Conditional Complexity Overall
  • There are 2,677 units with 27,804 lines of code in units (59.5% of code).
    • 0 very complex units (0 lines of code)
    • 4 complex units (454 lines of code)
    • 45 medium complex units (3,115 lines of code)
    • 160 simple units (5,330 lines of code)
    • 2,468 very simple units (18,905 lines of code)
0% | 1% | 11% | 19% | 67%
Legend:
51+
26-50
11-25
6-10
1-5
Alternative Visuals
Conditional Complexity per Extension
51+
26-50
11-25
6-10
1-5
go0% | 1% | 11% | 19% | 67%
Conditional Complexity per Logical Component
primary logical decomposition
51+
26-50
11-25
6-10
1-5
release/pkg0% | 5% | 28% | 37% | 27%
pkg/providers0% | 3% | 9% | 15% | 70%
pkg/validations0% | 13% | 0% | 15% | 71%
pkg/api0% | 0% | 8% | 16% | 74%
pkg/clustermanager0% | 0% | 19% | 13% | 66%
cmd/eksctl-anywhere0% | 0% | 22% | 28% | 49%
controllers/controllers0% | 0% | 15% | 20% | 64%
pkg/executables0% | 0% | 6% | 15% | 77%
internal/pkg0% | 0% | 14% | 21% | 64%
cmd/eks-a-tool0% | 0% | 37% | 0% | 62%
pkg/cluster0% | 0% | 14% | 16% | 69%
pkg/git0% | 0% | 4% | 6% | 89%
pkg/addonmanager0% | 0% | 0% | 37% | 62%
pkg/workflows0% | 0% | 0% | 15% | 84%
pkg/clusterapi0% | 0% | 0% | 23% | 76%
controllers0% | 0% | 0% | 49% | 50%
pkg/networking0% | 0% | 0% | 11% | 88%
pkg/bootstrapper0% | 0% | 0% | 17% | 82%
pkg/clustermarshaller0% | 0% | 0% | 76% | 23%
pkg/semver0% | 0% | 0% | 38% | 61%
pkg/crypto0% | 0% | 0% | 12% | 87%
pkg/diagnostics0% | 0% | 0% | 1% | 98%
release/api0% | 0% | 0% | 0% | 100%
cmd/integration_test0% | 0% | 0% | 0% | 100%
pkg/filewriter0% | 0% | 0% | 0% | 100%
pkg/task0% | 0% | 0% | 0% | 100%
pkg/awsiamauth0% | 0% | 0% | 0% | 100%
pkg/features0% | 0% | 0% | 0% | 100%
pkg/templater0% | 0% | 0% | 0% | 100%
pkg/files0% | 0% | 0% | 0% | 100%
pkg/retrier0% | 0% | 0% | 0% | 100%
pkg/logger0% | 0% | 0% | 0% | 100%
pkg/types0% | 0% | 0% | 0% | 100%
pkg/networkutils0% | 0% | 0% | 0% | 100%
release/cmd0% | 0% | 0% | 0% | 100%
pkg/clients0% | 0% | 0% | 0% | 100%
pkg/eksctl0% | 0% | 0% | 0% | 100%
pkg/version0% | 0% | 0% | 0% | 100%
release0% | 0% | 0% | 0% | 100%
Most Complex Units
Top 20 most complex units
Unit# linesMcCabe index# params
func()
in pkg/providers/vsphere/validator.go
127 46 1
func ValidateImmutableFields()
in pkg/validations/upgradevalidations/immutableFields.go
94 36 5
func()
in release/pkg/generate_spec.go
117 26 1
func()
in release/pkg/prepare_release.go
116 26 1
func()
in controllers/controllers/resource/fetcher.go
46 23 1
func()
in pkg/executables/govc.go
94 21 1
func AutoFillVSphereProvider()
in internal/pkg/api/vsphere.go
75 19 2
func validateImmutableFieldsCluster()
in pkg/api/v1alpha1/cluster_webhook.go
77 18 2
func NewSpecFromClusterConfig()
in pkg/cluster/spec.go
73 18 3
func()
in controllers/controllers/resource/template.go
89 18 1
func()
in pkg/clustermanager/cluster_manager.go
80 17 1
func()
in pkg/clustermanager/cluster_manager.go
70 17 1
func()
in pkg/executables/govc.go
31 17 1
func()
in pkg/providers/vsphere/vsphere.go
88 17 1
func()
in controllers/controllers/resource/reconciler.go
68 17 1
func()
in release/pkg/generate_spec.go
109 17 1
func()
in pkg/providers/vsphere/vsphere.go
50 16 1
func()
in release/pkg/assets_cluster_controller.go
100 16 1
func()
in release/pkg/assets_capi.go
108 16 1
func generateClusterConfig()
in cmd/eksctl-anywhere/cmd/generateclusterconfig.go
108 16 1