microsoft / nodejstools
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 3,544 units with 45,550 lines of code in units (60.9% of code).
    • 3 very complex units (627 lines of code)
    • 6 complex units (689 lines of code)
    • 109 medium complex units (6,529 lines of code)
    • 295 simple units (9,925 lines of code)
    • 3,131 very simple units (27,780 lines of code)
1% | 1% | 14% | 21% | 60%
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
cs1% | 1% | 14% | 21% | 60%
js0% | 0% | 6% | 28% | 64%
ts0% | 0% | 0% | 0% | 100%
Conditional Complexity per Logical Component
primary logical decomposition
51+
26-50
11-25
6-10
1-5
Nodejs/Product/Nodejs1% | 1% | 14% | 21% | 61%
Nodejs/Product/Profiling0% | 9% | 8% | 21% | 60%
Nodejs/Product/LogConverter0% | 0% | 38% | 22% | 38%
Nodejs/Product/Npm0% | 0% | 13% | 15% | 71%
Nodejs/Product/TestAdapter0% | 0% | 8% | 24% | 66%
Nodejs/Product/TestAdapterImpl0% | 0% | 11% | 26% | 61%
Common/Product/SharedProject0% | 0% | 12% | 36% | 50%
Nodejs/Product/TestAdapterNetStandard0% | 0% | 58% | 0% | 41%
Nodejs/Product/WebRole0% | 0% | 0% | 64% | 35%
Nodejs/Product/PressAnyKey0% | 0% | 0% | 100% | 0%
Nodejs/Product/ProjectWizard0% | 0% | 0% | 17% | 82%
Nodejs/Prerequisites0% | 0% | 0% | 62% | 37%
Nodejs/Product/TypeScript0% | 0% | 0% | 0% | 100%
Most Complex Units
Top 20 most complex units
Unit# linesMcCabe index# params
internal int AddItemWithSpecificInternal()
in Nodejs/Product/Nodejs/SharedProject/ProjectNode.cs
322 67 12
private static InteractiveWindowColor? GetColorFromEscape()
in Nodejs/Product/Nodejs/Repl/NodejsReplEvaluator.cs
113 56 2
public virtual object GetProperty()
in Nodejs/Product/Nodejs/SharedProject/HierarchyNode.cs
192 56 1
private Addition CanAddFileFromProjectReference()
in Nodejs/Product/Nodejs/SharedProject/ProjectNode.CopyPaste.cs
194 37 3
private void OnTag()
in Nodejs/Product/Nodejs/Jade/Tokenizer/States/TagState.cs
137 36 0
public override int GetProperty()
in Nodejs/Product/Profiling/Profiling/SessionNode.cs
115 33 3
protected virtual bool DisableCmdInCurrentMode()
in Nodejs/Product/Nodejs/SharedProject/ProjectNode.IOleCommandTarget.cs
62 28 2
public virtual int SaveItem()
in Nodejs/Product/Nodejs/SharedProject/ProjectNode.cs
103 27 5
public override int GetProperty()
in Nodejs/Product/Profiling/Profiling/SessionsNode.cs
78 26 3
public override void DoAddition()
in Nodejs/Product/Nodejs/SharedProject/ProjectNode.CopyPaste.cs
127 24 1
public virtual ICollection ReflectTextChange()
in Nodejs/Product/Nodejs/Jade/Text/TextRangeCollection.cs
72 23 4
private void ListenerThread()
in Nodejs/Product/Nodejs/JsonListener.cs
91 23 0
public int Compare()
in Nodejs/Product/Nodejs/Debugger/DebugEngine/AD7MemoryAddress.cs
65 21 4
public override object GetProperty()
in Nodejs/Product/Nodejs/SharedProject/ProjectNode.cs
60 21 1
private static string GetClassificationName()
in Nodejs/Product/Nodejs/Jade/Classifier/JadeClassificationNameProvider.cs
46 20 1
private ProcessOutput()
in Common/Product/SharedProject/ProcessOutput.cs
71 19 2
public void Process()
in Nodejs/Product/LogConverter/LogParsing/LogConverter.cs
186 19 0
private static void BuildRegions()
in Nodejs/Product/Nodejs/Jade/Outlining/IndentBasedRegionBuilder.cs
88 19 2
internal override int QueryStatusOnNode()
in Nodejs/Product/Nodejs/Project/DependencyNode.cs
75 19 4
private int Open()
in Nodejs/Product/Nodejs/SharedProject/FileDocumentManager.cs
84 19 10