Document Information

Analysed by SourceGraph (version 0.7.0.7) using Graphalyze (version 0.14.1.1)

Sunday 22 November, 2015

1 Legend

Two normal functions with f calling g .
Function Call
Two modules with module Foo importing Bar .
Module Import
Entities from different modules.
From module
Data type declaration.
Data type declaration
Class and instance declarations.
Class declaration
Entity location/accessibility classification.
Entity Location
Edge classification.
Edge Classification
Edge Widths
The width of each edge is calculated by: width = log (number of function calls) + 1

2 Notes

Please note that the source-code analysis in this document is not necessarily perfect: SourceGraph is not a refactoring tool, and it's usage of Classes is still premature.

Implicitly exported entities refer to class methods that are instantiated but defined elsewhere, or entities whose names start with an underscore . Note that even for Main modules, these implicit exports are included.

All graph visualisations link to larger SVG versions of the same graph.

3 Analysis of the entire codebase

3.1 Visualisation of the entire software

Entire Codebase

3.2 Visualisation of overall function calls

Here is the current module grouping of functions:

Current module groupings

Here is a proposed alternate module grouping:

Using the Chinese Whispers algorithm:

Chinese Whispers module suggestions

3.3 Overall Core analysis

The core of software is calculated by recursively removing roots and leaves of the call graph; as such, it can be considered as the section where all the "real work" is done.

Overall core

3.4 Visualisation of levels in the software

Visualises how far away from the exported root entities an entity is.

Levels within software

3.5 Overall Cyclomatic Complexity

The overall cyclomatic complexity is: 115

For more information on cyclomatic complexity, please see: Wikipedia: Cyclomatic Complexity

3.6 Overall root analysis

These functions are those that are inaccessible:

Thentos.Adhocracy3.Backend.Api.Simple.fromA3UserNoPass, Thentos.Adhocracy3.Backend.Api.Simple.fromA3UserWithPass, Thentos.Adhocracy3.Backend.Api.Simple.fromPath, Thentos.Adhocracy3.Backend.Api.Simple.mContentType, Thentos.Adhocracy3.Backend.Api.Simple.mData, Thentos.Adhocracy3.Backend.Api.Simple.mPath, Thentos.Adhocracy3.Types.a3errors

3.7 Function component analysis

The functions are split up into 3 components. You may wish to consider splitting the code up into multiple libraries.

3.8 Overall chain analysis

The code has the following cross-module chains:

These chains can all be compressed down to a single function.

4 Analysis of module imports

4.1 Visualisation of imports

Import visualisation

4.2 Cyclomatic Complexity of imports

The cyclomatic complexity of the imports is: 2

For more information on cyclomatic complexity, please see: Wikipedia: Cyclomatic Complexity

4.3 Import chain analysis

The imports have the following chains:

These chains can all be compressed down to a single module.

5 Analysis of each module

5.1 Analysis of Thentos.Adhocracy3.Backend.Api.Simple

5.1.1 Visualisation of Thentos.Adhocracy3.Backend.Api.Simple

Diagram of: Thentos.Adhocracy3.Backend.Api.Simple

5.1.2 Core analysis of Thentos.Adhocracy3.Backend.Api.Simple

The core of a module is calculated by recursively removing roots and leaves of the call graph; as such, it can be considered as the section where all the "real work" is done.

Core of Thentos.Adhocracy3.Backend.Api.Simple

5.1.3 Visualisation of levels in Thentos.Adhocracy3.Backend.Api.Simple

Visualises how far away from the exported root entities an entity is.

Levels within Thentos.Adhocracy3.Backend.Api.Simple

5.1.4 Cyclomatic Complexity of Thentos.Adhocracy3.Backend.Api.Simple

The cyclomatic complexity of Thentos.Adhocracy3.Backend.Api.Simple is: 85.

For more information on cyclomatic complexity, please see: Wikipedia: Cyclomatic Complexity

5.1.5 Component analysis of Thentos.Adhocracy3.Backend.Api.Simple

The module Thentos.Adhocracy3.Backend.Api.Simple has 3 components. You may wish to consider splitting it up.

5.2 Analysis of Thentos.Adhocracy3.Backend.Core

5.2.1 Visualisation of Thentos.Adhocracy3.Backend.Core

Diagram of: Thentos.Adhocracy3.Backend.Core

5.2.2 Visualisation of levels in Thentos.Adhocracy3.Backend.Core

Visualises how far away from the exported root entities an entity is.

Levels within Thentos.Adhocracy3.Backend.Core

5.2.3 Cyclomatic Complexity of Thentos.Adhocracy3.Backend.Core

The cyclomatic complexity of Thentos.Adhocracy3.Backend.Core is: 5.

For more information on cyclomatic complexity, please see: Wikipedia: Cyclomatic Complexity

5.3 Analysis of Thentos.Adhocracy3.Types

5.3.1 Visualisation of Thentos.Adhocracy3.Types

Diagram of: Thentos.Adhocracy3.Types

5.3.2 Visualisation of levels in Thentos.Adhocracy3.Types

Visualises how far away from the exported root entities an entity is.

Levels within Thentos.Adhocracy3.Types

5.3.3 Cyclomatic Complexity of Thentos.Adhocracy3.Types

The cyclomatic complexity of Thentos.Adhocracy3.Types is: 5.

For more information on cyclomatic complexity, please see: Wikipedia: Cyclomatic Complexity

5.3.4 Component analysis of Thentos.Adhocracy3.Types

The module Thentos.Adhocracy3.Types has 2 components. You may wish to consider splitting it up.