microsoft / service-fabric
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 73,883 units with 1,125,068 lines of code in units (53.7% of code).
    • 47 very complex units (13,901 lines of code)
    • 269 complex units (43,087 lines of code)
    • 1,795 medium complex units (147,719 lines of code)
    • 4,561 simple units (198,131 lines of code)
    • 67,211 very simple units (722,230 lines of code)
1% | 3% | 13% | 17% | 64%
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
cpp1% | 4% | 13% | 18% | 61%
cs<1% | 3% | 13% | 17% | 65%
h<1% | 4% | 8% | 8% | 78%
inl7% | 1% | 4% | 4% | 81%
c0% | 6% | 15% | 39% | 38%
pl0% | 21% | 19% | 7% | 50%
py0% | 0% | 16% | 34% | 48%
js0% | 0% | 0% | 0% | 100%
pm0% | 0% | 0% | 0% | 100%
Conditional Complexity per Logical Component
primary logical decomposition
51+
26-50
11-25
6-10
1-5
src/prod/src1% | 3% | 13% | 17% | 64%
src/prod/ktl0% | 4% | 13% | 16% | 65%
src/prod/tools0% | 16% | 19% | 14% | 49%
src/prod/shared0% | 0% | 16% | 16% | 66%
src/prod/Setup0% | 0% | 0% | 42% | 57%
src/prod/linuxsetup0% | 0% | 0% | 0% | 100%
src0% | 0% | 0% | 0% | 100%
Most Complex Units
Top 20 most complex units
Unit# linesMcCabe index# params
void WriteToTextWriter()
in src/prod/src/Common/ErrorCodeValue.cpp
413 407 2
void VariableArgument::WriteTo()
in src/prod/src/Common/VariableArgument.cpp
1364 373 2
static InteropExceptionMap()
in src/prod/src/managed/Api/src/System/Fabric/Interop/InteropExceptionMap.cs
215 205 0
std::wstring ErrorBody::FromErrorMessage()
in src/prod/src/httpgateway/ErrorBody.cpp
545 179 1
void HttpUtil::ErrorCodeToHttpStatus()
in src/prod/src/Management/HttpTransport/HttpUtil.cpp
243 164 3
private void VerifyExpectedClusterSize()
in src/prod/src/managed/Api/src/System/Fabric/Management/fabricvalidator/FabricSettingsValidator.cs
663 137 0
pair PlacementAndLoadBalancing::InternalUpdateService()
in src/prod/src/Reliability/LoadBalancing/PlacementAndLoadBalancing.cpp
569 129 5
void WriteToTextWriter()
in src/prod/src/Common/SystemHealthReportCode.cpp
122 116 2
HealthReport HealthReport::CreateSystemHealthReport()
in src/prod/src/ServiceModel/HealthReport.cpp
728 116 7
void PlacementCreator::CreatePartitionEntries()
in src/prod/src/Reliability/LoadBalancing/PlacementCreator.cpp
359 99 0
HRESULT ComReplicator::UpdateReplicatorSettings()
in src/prod/src/Reliability/Replication/ComReplicator.cpp
278 98 1
public HttpStatusCode ErrorCodeToHttpStatusCode()
in src/prod/src/managed/FabricBRS/src/System/Fabric/BackupRestore/BackupRestoreTypes/FabricError.cs
110 94 0
void StateUpdateTask::CheckFailoverUnit()
in src/prod/src/Reliability/Failover/fm/StateUpdateTask.cpp
218 93 2
vector QuerySpecification::CreateSpecifications()
in src/prod/src/query/QuerySpecification.cpp
882 93 0
std::wstring ToString()
in src/prod/src/ServiceModel/Query/QueryNames.cpp
180 87 1
Common::ErrorCode PlacementAndLoadBalancing::UpdateApplication()
in src/prod/src/Reliability/LoadBalancing/PlacementAndLoadBalancing.cpp
343 81 2
private void CompareEndpoints()
in src/prod/src/managed/Api/src/System/Fabric/Management/fabricvalidator/FabricSettingsValidator.cs
122 79 4
Common::ErrorCode PartitionedServiceDescriptor::FromPublicApi()
in src/prod/src/ServiceModel/naming/PartitionedServiceDescriptor.cpp
434 78 1
async Task ApplyRecoveryOrReplicationOperationAsync()
in src/prod/src/managed/Api/src/System/Fabric/btree/stateproviders/SortedDictionaryStateProvider.cs
281 78 3
void WriteToTextWriter()
in src/prod/src/Transport/MessageHeaderId.cpp
83 77 2