awslabs / kinesis-agent-windows
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,224 units with 16,362 lines of code in units (66.7% of code).
    • 0 very complex units (0 lines of code)
    • 1 complex units (220 lines of code)
    • 24 medium complex units (1,386 lines of code)
    • 96 simple units (3,207 lines of code)
    • 1,103 very simple units (11,549 lines of code)
0% | 1% | 8% | 19% | 70%
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% | 1% | 8% | 19% | 70%
Conditional Complexity per Logical Component
primary logical decomposition
51+
26-50
11-25
6-10
1-5
Amazon.KinesisTap.AWS0% | 5% | 8% | 18% | 67%
Amazon.KinesisTap.Core0% | 0% | 7% | 17% | 74%
Amazon.KinesisTap.Windows0% | 0% | 12% | 22% | 65%
Amazon.KinesisTap.FileSystem0% | 0% | 12% | 31% | 55%
Amazon.KinesisTap.Hosting0% | 0% | 12% | 15% | 72%
Amazon.KinesisTap.DiagnosticTool.Core0% | 0% | 9% | 44% | 45%
Amazon.KinesisTap.DiagnosticTool0% | 0% | 14% | 12% | 73%
Amazon.KinesisTap.AutoUpdate0% | 0% | 0% | 17% | 82%
Amazon.KinesisTap.Common0% | 0% | 0% | 38% | 61%
Amazon.KinesisTap.Shared0% | 0% | 0% | 8% | 91%
Amazon.KinesisTap.Expression0% | 0% | 0% | 9% | 90%
KinesisTapMsiCustomAction0% | 0% | 0% | 0% | 100%
Amazon.KinesisTap.ServiceTests0% | 0% | 0% | 0% | 100%
Amazon.KinesisTap.ExchangeSource0% | 0% | 0% | 0% | 100%
Amazon.KinesisTap.Uls0% | 0% | 0% | 0% | 100%
Amazon.KinesisTap0% | 0% | 0% | 0% | 100%
Amazon.KinesisTap.ParserExamples0% | 0% | 0% | 0% | 100%
Most Complex Units
Top 20 most complex units
Unit# linesMcCabe index# params
public IEventSink CreateInstance()
in Amazon.KinesisTap.AWS/AWSEventSinkFactory.cs
220 38 2
private Encoding DetectEncoding()
in Amazon.KinesisTap.FileSystem/AbstractLineProcessor.cs
44 20 1
private async Task SendBatchAsync()
in Amazon.KinesisTap.AWS/AsyncCloudWatchLogsSink.cs
99 16 2
public static X509Certificate2 GetCertificate()
in Amazon.KinesisTap.Core/CertificateUtility.cs
65 16 3
private bool LoadSources()
in Amazon.KinesisTap.DiagnosticTool.Core/ConfigValidator.cs
72 16 3
private async Task Execution()
in Amazon.KinesisTap.Windows/EventLogSource.cs
75 15 1
public static MetricUnit InferUnit()
in Amazon.KinesisTap.Windows/PerformanceCounterSource.cs
68 15 2
private async Task SendBatchAsync()
in Amazon.KinesisTap.AWS/CloudWatchLogsSink.cs
102 14 1
private void GetNextBatchFromSecondaryQueue()
in Amazon.KinesisTap.Core/Components/AsyncBatchQueue.cs
47 13 1
private async Task ConfigChangePoller()
in Amazon.KinesisTap.Hosting/SessionManager.cs
57 13 1
public virtual void RefreshCounters()
in Amazon.KinesisTap.Windows/PerformanceCounterSource.cs
50 13 0
private async Task ProcessFile()
in Amazon.KinesisTap.FileSystem/AsyncDirectorySource.cs
61 13 3
protected override async Task OnNextAsync()
in Amazon.KinesisTap.AWS/KinesisFirehoseSink.cs
81 12 2
public static DateTime GetUniformTimeStamp()
in Amazon.KinesisTap.Core/Utility.cs
52 12 0
public BatchEventSink()
in Amazon.KinesisTap.Core/Sinks/BatchEventSink.cs
54 12 4
protected virtual void Dispose()
in Amazon.KinesisTap.Hosting/Session.cs
44 12 1
public void ParseBufferedSinkOptions()
in Amazon.KinesisTap.AWS/AWSEventSinkFactory.cs
49 11 2
private static int InvokeCommand()
in Amazon.KinesisTap.DiagnosticTool/Program.cs
32 11 1
public static string ResolveVariable()
in Amazon.KinesisTap.Core/Utility.cs
39 11 1
private async ValueTask GetNextBatchFromBuffer()
in Amazon.KinesisTap.Core/Components/AsyncBatchQueue.cs
48 11 3