microsoft / automatic-graph-layout
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 7,974 units with 82,087 lines of code in units (76.6% of code).
    • 3 very complex units (603 lines of code)
    • 14 complex units (1,481 lines of code)
    • 184 medium complex units (8,955 lines of code)
    • 651 simple units (16,875 lines of code)
    • 7,122 very simple units (54,173 lines of code)
<1% | 1% | 10% | 20% | 65%
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
cs<1% | 2% | 10% | 21% | 65%
js0% | 0% | 10% | 10% | 78%
ts0% | 0% | 12% | 35% | 51%
Conditional Complexity per Logical Component
primary logical decomposition
51+
26-50
11-25
6-10
1-5
GraphLayout/tools/Dot2Graph32% | 11% | 16% | 3% | 35%
GraphLayout/MSAGL/GraphmapsWithMesh4% | 29% | 38% | 12% | 14%
GraphLayout/MSAGL/Layout0% | 1% | 11% | 23% | 64%
GraphLayout/MSAGL/Routing0% | <1% | 5% | 23% | 70%
GraphLayout/MSAGL/Core0% | 0% | 15% | 25% | 59%
GraphLayout/MsaglSharpkit/WebMsagl0% | 0% | 19% | 24% | 56%
GraphLayout/tools/GraphViewerGDI0% | 0% | 12% | 18% | 68%
GraphLayout/tools/GraphmapsWpfControl0% | 0% | 10% | 13% | 76%
GraphLayout/MsaglSharpkit/MsaglDrawingSharpkit0% | 0% | 4% | 9% | 85%
GraphLayout/Drawing0% | 0% | 6% | 11% | 81%
GraphLayout/MSAGL/DebugHelpers0% | 0% | 6% | 11% | 81%
GraphLayout/Drawing/LayoutEditing0% | 0% | 7% | 12% | 79%
GraphLayout/tools/QUT.ShiftReduceParser0% | 0% | 14% | 28% | 57%
GraphLayout/MSAGL/Miscellaneous0% | 0% | 2% | 23% | 74%
GraphLayout/tools/Dot2Svg0% | 0% | 16% | 36% | 47%
GraphLayout/tools/agl0% | 0% | 19% | 36% | 44%
GraphLayout/MsaglSharpkit/MsaglSharpKit0% | 0% | 37% | 0% | 62%
GraphLayout/tools/UwpGraphControl0% | 0% | 0% | 22% | 77%
GraphLayout/tools/WpfGraphControl0% | 0% | 0% | 21% | 78%
GraphLayout/tools/ArgsParser0% | 0% | 0% | 48% | 51%
GraphLayout/tools/DgmlParser0% | 0% | 0% | 56% | 43%
GraphLayout/tools/FormForGViewer0% | 0% | 0% | 0% | 100%
GraphLayout/MsaglSharpkit/ConsoleTest0% | 0% | 0% | 0% | 100%
GraphLayout/WriteToSvgSample0% | 0% | 0% | 0% | 100%
GraphLayout/tools/DebugCurveViewer0% | 0% | 0% | 0% | 100%
GraphLayout/TinyClickDemo0% | 0% | 0% | 0% | 100%
GraphLayout/MSAGL0% | 0% | 0% | 0% | 100%
GraphLayout/tools/Utilities0% | 0% | 0% | 0% | 100%
Most Complex Units
Top 20 most complex units
Unit# linesMcCabe index# params
internal static AttributeValuePair CreateFromsStrings()
in GraphLayout/tools/Dot2Graph/AttributeValuePair.cs
299 104 2
public void ComputeShortcutMesh()
in GraphLayout/MSAGL/GraphmapsWithMesh/Tiling.cs
151 62 2
protected override void DoAction()
in GraphLayout/tools/Dot2Graph/Dot.cs
153 51 1
public static void CreateCompetitionMeshWithLeftPriority()
in GraphLayout/MSAGL/GraphmapsWithMesh/MeshCreator.cs
122 50 4
public static void CreateCompetitionMesh()
in GraphLayout/MSAGL/GraphmapsWithMesh/MeshCreator.cs
122 48 4
public static void ProcessLeftRays()
in GraphLayout/MSAGL/GraphmapsWithMesh/MeshCreator.cs
117 36 6
public static void ProcessRightRays()
in GraphLayout/MSAGL/GraphmapsWithMesh/MeshCreator.cs
115 36 6
private static void FixMesh()
in GraphLayout/MSAGL/GraphmapsWithMesh/MeshCreator.cs
94 33 1
public void ComputeDetourAroundVertex()
in GraphLayout/MSAGL/GraphmapsWithMesh/Tiling.cs
69 32 2
public static void ProcessUpwardRays()
in GraphLayout/MSAGL/GraphmapsWithMesh/MeshCreator.cs
103 29 4
public IEnumerable GetOrder()
in GraphLayout/MSAGL/Routing/Spline/Bundling/GeneralMetroMapOrdering.cs
125 29 2
public static void ProcessDownwardRays()
in GraphLayout/MSAGL/GraphmapsWithMesh/MeshCreator.cs
103 28 4
public static void AddEdgeAttrs()
in GraphLayout/tools/Dot2Graph/AttributeValuePair.cs
81 28 2
void CreateRegularSplines()
in GraphLayout/MSAGL/Layout/Layered/Routing.cs
165 27 0
public static CoupleLabelNodeAttr AddNodeAttrs()
in GraphLayout/tools/Dot2Graph/AttributeValuePair.cs
78 27 3
public void MsaglMoveToMaximizeMinimumAngle()
in GraphLayout/MSAGL/GraphmapsWithMesh/Tiling.cs
84 26 0
public void MsaglDetour()
in GraphLayout/MSAGL/GraphmapsWithMesh/Tiling.cs
103 26 2
void GenerateFromEvents()
in GraphLayout/MSAGL/Core/Geometry/OverlapRemoval/OverlapRemovalCluster.cs
117 25 4
public static void MsaglMoveToMedian()
in GraphLayout/MSAGL/GraphmapsWithMesh/LocalModifications.cs
90 25 3
private static void ComputePathSimplification()
in GraphLayout/MSAGL/Layout/LargeGraphLayout/LgInteractor.cs
123 25 3