Sokrates
Conditional Complexity

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,235 units with 22,697 lines of code in units (79.2% of code).
    • 0 very complex units (0 lines of code)
    • 1 complex units (80 lines of code)
    • 7 medium complex units (322 lines of code)
    • 54 simple units (1,587 lines of code)
    • 3,173 very simple units (20,708 lines of code)
0% | <1% | 1% | 6% | 91%
Legend:
51+
26-50
11-25
6-10
1-5
Alternative Visuals
Conditional Complexity per Extension
java0% | <1% | 1% | 6% | 91%
Legend:
51+
26-50
11-25
6-10
1-5
Conditional Complexity per Logical Component
primary logical decomposition
reports0% | 1% | 2% | 7% | 88%
cli0% | 0% | 29% | 11% | 59%
codeanalyzer0% | 0% | <1% | 7% | 92%
codeexplorer0% | 0% | 0% | 2% | 97%
common0% | 0% | 0% | 3% | 96%
Legend:
51+
26-50
11-25
6-10
1-5
Most Complex Units
Top 50 most complex units
Unit# linesMcCabe index# params
private static List getReportsList()
in reports/src/main/java/nl/obren/sokrates/reports/core/ReportFileExporter.java
80 29 2
private void updateConfig()
in cli/src/main/java/nl/obren/sokrates/cli/CommandLineInterface.java
57 16 1
public void renderDetails()
in reports/src/main/java/nl/obren/sokrates/reports/utils/ScopesRenderer.java
61 15 2
private CodeAnalyzerSettings getCodeAnalyzerSettings()
in cli/src/main/java/nl/obren/sokrates/cli/CommandLineInterface.java
46 14 1
public List report()
in reports/src/main/java/nl/obren/sokrates/reports/generators/statichtml/BasicSourceCodeReportGenerator.java
45 14 0
private void generateReports()
in cli/src/main/java/nl/obren/sokrates/cli/CommandLineInterface.java
48 13 1
public int getStringEndIndex()
in codeanalyzer/src/main/java/nl/obren/sokrates/sourcecode/cleaners/CodeBlockParser.java
27 13 2
private void createBasicReport()
in reports/src/main/java/nl/obren/sokrates/reports/generators/statichtml/BasicSourceCodeReportGenerator.java
38 12 0
public void run()
in cli/src/main/java/nl/obren/sokrates/cli/CommandLineInterface.java
34 10 1
public List getSourceFiles()
in codeanalyzer/src/main/java/nl/obren/sokrates/sourcecode/SourceCodeFiles.java
40 10 2
private void addDuplicationInstances()
in codeanalyzer/src/main/java/nl/obren/sokrates/sourcecode/duplication/impl/Blocks.java
52 10 3
private void addBigSummary()
in reports/src/main/java/nl/obren/sokrates/reports/landscape/statichtml/LandscapeReportGenerator.java
48 10 1
public static String formatPeriod()
in common/src/main/java/nl/obren/sokrates/common/utils/FormattingUtils.java
26 9 1
public void addCommit()
in codeanalyzer/src/main/java/nl/obren/sokrates/sourcecode/contributors/Contributor.java
22 9 1
protected boolean isUnitSignature()
in codeanalyzer/src/main/java/nl/obren/sokrates/sourcecode/units/CStyleHeuristicUnitsExtractor.java
15 9 1
public List extractUnits()
in codeanalyzer/src/main/java/nl/obren/sokrates/sourcecode/lang/vb/VisualBasicHeuristicUnitsExtractor.java
36 9 1
public void summarize()
in reports/src/main/java/nl/obren/sokrates/reports/core/SummaryUtils.java
30 9 2
private void updateItemWithNumericBar()
in codeexplorer/src/main/java/nl/obren/sokrates/codeexplorer/common/NumericBarCellFactory.java
20 8 2
public static String cleanBlockComments()
in codeanalyzer/src/main/java/nl/obren/sokrates/sourcecode/cleaners/CommentsCleanerUtils.java
30 8 3
private void populateUnclassifiedForConcern()
in codeanalyzer/src/main/java/nl/obren/sokrates/sourcecode/core/CodeConfiguration.java
24 8 1
public static void populateUnclassifiedAndMultipleAspectsFiles()
in codeanalyzer/src/main/java/nl/obren/sokrates/sourcecode/core/CodeConfigurationUtils.java
25 8 4
public CodeAnalysisResults analyze()
in codeanalyzer/src/main/java/nl/obren/sokrates/sourcecode/analysis/CodeAnalyzer.java
34 8 1
private void addDependency()
in codeanalyzer/src/main/java/nl/obren/sokrates/sourcecode/dependencies/DependenciesFinderExtractor.java
32 8 5
private boolean shouldIncludeExtension()
in codeanalyzer/src/main/java/nl/obren/sokrates/sourcecode/scoping/ScopeCreator.java
21 8 1
private String getAnalyzerKey()
in codeanalyzer/src/main/java/nl/obren/sokrates/sourcecode/lang/LanguageAnalyzerFactory.java
17 8 1
public List extractUnits()
in codeanalyzer/src/main/java/nl/obren/sokrates/sourcecode/lang/ruby/RubyHeuristicUnitsExtractor.java
33 8 2
private void findDuplicatesWithinFiles()
in codeanalyzer/src/main/java/nl/obren/sokrates/sourcecode/duplication/impl/Blocks.java
43 8 0
public static void addContributors()
in reports/src/main/java/nl/obren/sokrates/reports/core/ReportFileExporter.java
48 8 2
public void renderReport()
in reports/src/main/java/nl/obren/sokrates/reports/utils/ScopesRenderer.java
28 8 2
private void renderScopes()
in reports/src/main/java/nl/obren/sokrates/reports/generators/statichtml/ConcernsReportGenerator.java
54 8 2
private String describeExclusion()
in reports/src/main/java/nl/obren/sokrates/reports/generators/statichtml/OverviewReportGenerator.java
25 8 1
private void replacePercentageInOverlapConcerns()
in codeanalyzer/src/main/java/nl/obren/sokrates/sourcecode/core/CodeConfiguration.java
21 7 2
private boolean isFunction()
in codeanalyzer/src/main/java/nl/obren/sokrates/sourcecode/lang/js/JavaScriptHeuristicUnitsExtractor.java
10 7 1
public LandscapeConfiguration initConfiguration()
in codeanalyzer/src/main/java/nl/obren/sokrates/sourcecode/landscape/init/LandscapeAnalysisInitiator.java
34 7 3
private void createDuplicatedFilesMap()
in codeanalyzer/src/main/java/nl/obren/sokrates/sourcecode/duplication/impl/Blocks.java
33 7 0
private void renderFragment()
in reports/src/main/java/nl/obren/sokrates/reports/core/ReportRenderer.java
19 7 2
public static String getFilesTable()
in reports/src/main/java/nl/obren/sokrates/reports/utils/FilesReportUtils.java
51 7 3
private void addContributor()
in reports/src/main/java/nl/obren/sokrates/reports/landscape/statichtml/LandscapeReportGenerator.java
29 7 3
public static void addPasteHandler()
in codeexplorer/src/main/java/nl/obren/sokrates/codeexplorer/common/UXUtils.java
18 6 1
private void configureTable()
in codeexplorer/src/main/java/nl/obren/sokrates/codeexplorer/duplication/DuplicatesPane.java
37 6 0
private void generateAndSaveReports()
in cli/src/main/java/nl/obren/sokrates/cli/CommandLineInterface.java
26 6 5
private static String getSystemVariableOrProperty()
in common/src/main/java/nl/obren/sokrates/common/renderingutils/GraphvizSettings.java
16 6 2
public String cleanKeepEmptyLines()
in codeanalyzer/src/main/java/nl/obren/sokrates/sourcecode/cleaners/CommentsAndEmptyLinesCleaner.java
22 6 1
private List getOverlaps()
in codeanalyzer/src/main/java/nl/obren/sokrates/sourcecode/core/CodeConfiguration.java
20 6 1
public void analyze()
in codeanalyzer/src/main/java/nl/obren/sokrates/sourcecode/analysis/files/LogicalDecompositionAnalyzer.java
46 6 1
public boolean isOverridden()
in codeanalyzer/src/main/java/nl/obren/sokrates/sourcecode/analysis/AnalyzerOverride.java
12 6 1
boolean shouldExcludeFile()
in codeanalyzer/src/main/java/nl/obren/sokrates/sourcecode/SourceCodeFiles.java
28 6 3
public DependenciesAnalysis extractDependencies()
in codeanalyzer/src/main/java/nl/obren/sokrates/sourcecode/dependencies/HeuristicDependenciesExtractor.java
25 6 2
private void updateParamsAndMcCabeIndex()
in codeanalyzer/src/main/java/nl/obren/sokrates/sourcecode/lang/lua/LuaHeuristicUnitsExtractor.java
28 6 1
private void updateParamsAndMcCabeIndex()
in codeanalyzer/src/main/java/nl/obren/sokrates/sourcecode/lang/vb/VisualBasicHeuristicUnitsExtractor.java
30 6 2