Before we zoom into the details of Sokrates, let’s first see what insights Sokrates can give you. Sokrates makes visible the size, complexity, and coupling of software. More specifically, Sokrates generates several views on your source code, describing the overall source code characteristics, duplication, components, dependencies, conditional complexity, etc.

Sokrates’ reports are the result of Sokrates’ analyses. The reports shed light on your source code from different angles, answering different sets of questions. Sokrates generates the following reports:

  • source code overview report,
  • duplication report,
  • logical decomposition report,
  • concerns report
  • file size report,
  • file change history report,
  • unit size report
  • conditional complexity report,
  • metrics report,
  • trends report,
  • landscape report.


Source Code Overview Report

The Sokrates’ Overview report presents the basic facts about your source code and Sokrates analysis, answering the following two questions:

  • Which files are includes in and excluded from the analysis?
  • How are files classified (main, test, build, generated…)?

To learn more:


Duplication Report

The Sokrates duplication report presents the duplicates in your code, answering the following questions:

  • How much duplication is there overall?
  • How is duplication distributed per file type?
  • How is duplication distributed per logical decomposition (i.e., per component)?
  • How much of duplication is there between the components?
  • What are the biggest duplicates?
  • What are the most frequently duplicated pieces of code?

To learn more:


Components and Dependencies Report

Logical decomposition is a representation of the source code organization, where each file needs to end up in only one logical component. The Sokrates visualizes the components and dependencies among them, answering the following questions:

  • What logical decompositions have you defined?
  • How many components are they in each logical decomposition?
  • How big are the components? What are the most prominent or smallest components?
  • What are the dependencies among the components? Where are they?

To learn more:


Concerns Report

Concerns are any aspects of a software system that can be identified thourgh patterns in code.

Sokrates analyses concerns, answering the following questions:

  • How many concerns have you defined?
  • How many files are in each concern? How many lines of code?
  • Is there an overlap between concerns (the same file being in multiple concerns)? How much of the overlay is there (number of files, lines of code)?

To learn more:


File Size Report

Sokrates measures the file size in lines of code, excluding empty lines and comments. Sokrates then classifies files in five categories based on their size (lines of code): 1-100 (very small files), 101-200 (small files), 200-500 (medium size files), 501-1000 (long files), 1001+ (very long files). Sokrates report then answers the following questions:

  • What is the overall file size distributions?
  • What is the file size distributions per file type?
  • What is the file size distributions per component?
  • What are the longest files?

To learn more:


File History Report

Sokrates looks at the history of file changes to understand the frequency of changes, age of files, and recency. Sokrates report then answers the following questions:

  • What is the overall distribution of frequency of changes, file age, and recent updates?
  • What is the distribution of frequency of changes, file age, and recent updates per file type?
  • What is the distribution of frequency of changes, file age, and recent updates per component?
  • What are the most frequently changed files?
  • What are the oldest files?
  • What are the most recent changed files?
  • What files have not been changed files?

To learn more:


Unit Size Report

Sokrates measures the unit size in lines of code, excluding empty lines and comments. Sokrates classifies units in five categories based on their size (lines of code): 1-10 (very small units), 11-20 (small units), 20-50 (medium size units), 51-100 (long units), 101+ (very long units). Sokrates report then answers the following questions:

  • What is the overall unit size distributions?
  • What is the unit size distributions per file type?
  • What is the unit size distributions per component?
  • What are the longest units?

To learn more:


Conditional Complexity Report

Conditional complexity (also known as cyclomatic complexity) is a software metric (measurement) used to indicate the program’s complexity. It is a quantitative measure of the number of linearly independent paths through a program’s source code (so called McCabe index). Sokrates measures conditional complexity at the unit level (e.g., methods, functions, procedures), classifying units in five categories based on the measured McCabe index: 1-5 (simple units), 6-10 (medium complex units), 11-25 (complex units), 26+ (very complex units). Sokrates report then answers the following questions:

  • What is the overall conditional complexity distribution?
  • What is the conditional complexity distribution per file type?
  • What is the conditional complexity distribution per component?
  • What are the units with the highest conditional complexity?

To learn more:


Detailed Metrics Report

The metrics table is a list of name-value pairs, a linearized list of all Sokrates aggregated measurements. A Sokrates’ metrics report lists all metrics and their current values.

A list of all measurements.

To learn more:


Trend Report

The trend report shows the difference in metrics between the latest measurements and previous reference measurements.

To learn more:


Goals & Controls Report

In Sokrates, you can define traffic lights like controls. For each of the metrics that Sokrates measures, you can specify a control with the threshold and tolerance. Sokrates will then generate a report labeling each control as OK (green), tolerant (yellow), or failed (red).

To learn more:


Landscape Report

The Socrates landscape analysis a utility that aggregates and indexes the results of Sokrates analyses, providing a centralized and uniform on the results of multiple Sokrates projects. The report is a “landscape” because it draws a map of all projects that you want to view from one place.

To learn more: