microsoft / AppConsult-WinAppsModernizationWorkshop
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,382 units with 11,574 lines of code in units (35.2% of code).
    • 0 very complex units (0 lines of code)
    • 1 complex units (51 lines of code)
    • 4 medium complex units (136 lines of code)
    • 43 simple units (1,175 lines of code)
    • 1,334 very simple units (10,212 lines of code)
0% | <1% | 1% | 10% | 88%
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% | 1% | 10% | 88%
Conditional Complexity per Logical Component
primary logical decomposition
51+
26-50
11-25
6-10
1-5
Samples-NetCore/DotNetPad0% | 2% | 3% | 14% | 78%
Samples-NetCore/MusicManager0% | 0% | 1% | 12% | 86%
Samples-NetCore/BookLibrary0% | 0% | 0% | 13% | 86%
Samples-NetCore/InformationManager0% | 0% | 0% | 7% | 92%
Samples-NetCore/PhotoStore0% | 0% | 0% | 17% | 82%
Exercise4/02-End0% | 0% | 0% | 0% | 100%
Exercise5/01-Start0% | 0% | 0% | 0% | 100%
Exercise5/02-End0% | 0% | 0% | 0% | 100%
Exercise3/02-End0% | 0% | 0% | 0% | 100%
Exercise4/01-Start0% | 0% | 0% | 0% | 100%
Exercise2/02-End0% | 0% | 0% | 0% | 100%
Exercise3/01-Start0% | 0% | 0% | 0% | 100%
Exercise1/01-Start0% | 0% | 0% | 0% | 100%
Exercise1/02-End0% | 0% | 0% | 0% | 100%
Exercise2/01-Start0% | 0% | 0% | 0% | 100%
Most Complex Units
Top 20 most complex units
Unit# linesMcCabe index# params
public static string GetClassificationTypeName()
in Samples-NetCore/DotNetPad/DotNetPad.Applications/CodeAnalysis/ClassificationTags.cs
51 29 1
public void ApplyChanges()
in Samples-NetCore/MusicManager/MusicManager.Applications/Data/MusicFileContext.cs
24 18 1
private ImageSource GetImage()
in Samples-NetCore/DotNetPad/DotNetPad.Presentation/Controls/CodeCompletionData.cs
39 17 0
public async Task SaveChangesAsync()
in Samples-NetCore/MusicManager/MusicManager.Applications/Data/Metadata/SaveMetadata.cs
27 16 1
private async Task ShowCompletionAsync()
in Samples-NetCore/DotNetPad/DotNetPad.Presentation/Controls/CodeEditor.cs
46 12 1
internal static ReadMetadata GetReadMetadata()
in Samples-NetCore/MusicManager/MusicManager.Applications/Data/SupportedFileTypes.cs
35 10 1
internal static SaveMetadata GetSaveMetadata()
in Samples-NetCore/MusicManager/MusicManager.Applications/Data/SupportedFileTypes.cs
35 10 1
public object Convert()
in Samples-NetCore/BookLibrary/BookLibrary.Library.Presentation/Converters/LanguageToStringConverter.cs
23 9 4
private void UpdateContent()
in Samples-NetCore/BookLibrary/BookLibrary.Reporting.Presentation/Controls/BindableTable.cs
29 9 0
public void NextItem()
in Samples-NetCore/MusicManager/MusicManager.Domain/Playlists/PlaylistManager.cs
35 9 0
private DocumentFile OpenCore()
in Samples-NetCore/DotNetPad/DotNetPad.Applications/Controllers/FileController.cs
35 8 2
private void FileServiceDocumentsCollectionChanged()
in Samples-NetCore/DotNetPad/DotNetPad.Applications/Controllers/FileController.cs
31 8 2
private void DocumentsCollectionChanged()
in Samples-NetCore/DotNetPad/DotNetPad.Applications/Controllers/WorkspaceController.cs
28 8 2
private async void UpdateHighlightLineAsync()
in Samples-NetCore/DotNetPad/DotNetPad.Presentation/Controls/CodeHighlighter.cs
38 8 1
private void Next()
in Samples-NetCore/InformationManager/EmailClient.Modules.Applications/Controllers/EditEmailAccountController.cs
27 8 0
private void ItemsCollectionChanged()
in Samples-NetCore/MusicManager/MusicManager.Domain/Playlists/PlaylistManager.cs
27 8 2
private static void ListCollectionChanged()
in Samples-NetCore/MusicManager/MusicManager.Presentation/Controls/SelectionBehavior.cs
39 8 2
public object Convert()
in Samples-NetCore/MusicManager/MusicManager.Presentation/Converters/FilterOperatorToStringConverter.cs
17 8 4
public ShellViewModel()
in Samples-NetCore/BookLibrary/BookLibrary.Library.Applications/ViewModels/ShellViewModel.cs
20 7 5
public ShellViewModel()
in Samples-NetCore/DotNetPad/DotNetPad.Applications/ViewModels/ShellViewModel.cs
25 7 5