microsoft / XmlNotepad
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 1,356 units with 21,309 lines of code in units (66.4% of code).
    • 0 very complex units (0 lines of code)
    • 6 complex units (552 lines of code)
    • 61 medium complex units (3,517 lines of code)
    • 149 simple units (4,613 lines of code)
    • 1,140 very simple units (12,627 lines of code)
0% | 2% | 16% | 21% | 59%
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% | 2% | 16% | 21% | 59%
js0% | 0% | 0% | 0% | 100%
Conditional Complexity per Logical Component
primary logical decomposition
51+
26-50
11-25
6-10
1-5
src/XmlNotepad0% | 3% | 21% | 23% | 51%
src/Model0% | 4% | 13% | 27% | 54%
src/Application0% | 0% | 9% | 12% | 78%
src/XmlStats0% | 0% | 42% | 29% | 27%
src/BuildTasks0% | 0% | 14% | 43% | 41%
src/WpfApp0% | 0% | 0% | 19% | 80%
src/FontBuilder0% | 0% | 0% | 0% | 100%
Most Complex Units
Top 20 most complex units
Unit# linesMcCabe index# params
public bool Read()
in src/Model/XmlCsvReader.cs
78 43 0
public void HandleKeyDown()
in src/XmlNotepad/TreeView.cs
125 42 1
private bool SettingValueMatches()
in src/Model/Settings.cs
101 36 2
private void myTreeView_KeyDown()
in src/XmlNotepad/XmlTreeView.cs
95 32 2
24 29 2
private void DrawItem()
in src/XmlNotepad/NodeTextView.cs
129 28 3
private void myTreeView_AfterLabelEdit()
in src/XmlNotepad/XmlTreeView.cs
86 25 2
private void LoadDocument()
in src/Model/DomLoader.cs
106 24 0
public XmlTreeNode GetTreeNode()
in src/XmlNotepad/Commands.cs
115 24 3
public void Process()
in src/XmlStats/XmlStats.cs
87 24 1
public string DisplayXsltResults()
in src/XmlNotepad/XsltControl.cs
151 23 4
string GetPathInParent()
in src/Model/XPathGenerator.cs
82 22 2
public ChangeNode()
in src/XmlNotepad/Commands.cs
76 22 3
public MoveNode()
in src/XmlNotepad/Commands.cs
96 22 5
public virtual void LoadConfig()
in src/Application/FormMain.cs
92 21 0
public override bool Read()
in src/Model/XmlCsvReader.cs
71 21 0
private static int Main()
in src/XmlStats/XmlStats.cs
89 21 1
internal void Draw()
in src/XmlNotepad/TreeView.cs
68 19 11
public FindResult FindNext()
in src/XmlNotepad/XmlTreeViewFindTarget.cs
84 19 3
public WebProxyState PrepareWebProxy()
in src/XmlNotepad/proxy.cs
81 19 4