microsoft / Forge
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 74 units with 1,272 lines of code in units (67.8% of code).
    • 0 very complex units (0 lines of code)
    • 1 complex units (105 lines of code)
    • 3 medium complex units (312 lines of code)
    • 13 simple units (381 lines of code)
    • 57 very simple units (474 lines of code)
0% | 8% | 24% | 29% | 37%
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
cs0% | 8% | 24% | 29% | 37%
Conditional Complexity per Logical Component
primary logical decomposition
51+
26-50
11-25
6-10
1-5
Forge.TreeWalker/src0% | 8% | 24% | 29% | 37%
Most Complex Units
Top 20 most complex units
Unit# linesMcCabe index# params
public async Task EvaluateDynamicProperty()
in Forge.TreeWalker/src/TreeWalkerSession.cs
105 30 2
internal async Task ExecuteActionWithRetry()
in Forge.TreeWalker/src/TreeWalkerSession.cs
113 25 5
public async Task WalkTree()
in Forge.TreeWalker/src/TreeWalkerSession.cs
151 20 1
internal async Task PerformActionTypeBehavior()
in Forge.TreeWalker/src/TreeWalkerSession.cs
48 11 2
public ActionContext()
in Forge.TreeWalker/src/ActionContext.cs
33 9 11
public async Task VisitNode()
in Forge.TreeWalker/src/TreeWalkerSession.cs
40 9 1
private static bool Validate()
in Forge.TreeWalker/src/ForgeSchemaValidator.cs
29 7 3
internal async Task PerformLeafTypeBehavior()
in Forge.TreeWalker/src/TreeWalkerSession.cs
20 7 1
public static void GetActionsMapFromAssembly()
in Forge.TreeWalker/src/TreeWalkerSession.cs
41 7 2
private static List GetAllSchemasInDirectory()
in Forge.TreeWalker/src/ForgeSchemaValidator.cs
32 6 2
public TreeNodeContext()
in Forge.TreeWalker/src/TreeNodeContext.cs
24 6 8
public TreeWalkerParameters()
in Forge.TreeWalker/src/TreeWalkerParameters.cs
18 6 5
public TreeWalkerParameters()
in Forge.TreeWalker/src/TreeWalkerParameters.cs
18 6 5
public TreeWalkerParameters()
in Forge.TreeWalker/src/TreeWalkerParameters.cs
18 6 5
internal async Task SelectChild()
in Forge.TreeWalker/src/TreeWalkerSession.cs
22 6 1
internal async Task ExecuteAction()
in Forge.TreeWalker/src/TreeWalkerSession.cs
63 6 6
private async Task CommitCurrentTreeNode()
in Forge.TreeWalker/src/TreeWalkerSession.cs
23 6 2
private void Initialize()
in Forge.TreeWalker/src/ExpressionExecutor.cs
39 5 0
internal async Task PerformSubroutineTypeBehavior()
in Forge.TreeWalker/src/TreeWalkerSession.cs
21 5 2
private static List ConvertStringToJObjectList()
in Forge.TreeWalker/src/ForgeSchemaValidator.cs
24 4 2