Analysed by SourceGraph (version 0.7.0.0) using Graphalyze (version 0.11.0.0)
Wednesday 24 November, 2010







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.
Here is the current module grouping of functions:
Here is a proposed alternate module grouping:
Using the Chinese Whispers algorithm:
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.
Visualises how far away from the exported root entities an entity is.
The overall cyclomatic complexity is: 249
For more information on cyclomatic complexity, please see: Wikipedia: Cyclomatic Complexity
These functions are those that are inaccessible:
Data.Graph.Analysis.Internal.addLabels', Data.Graph.Analysis.Internal.applyBoth, Data.Graph.Analysis.Internal.filterNodes', Data.Graph.Analysis.Internal.getLabels, Data.Graph.Analysis.Internal.getLabels', Data.Graph.Analysis.Internal.relLabel
The functions are split up into 13 components. You may wish to consider splitting the code up into multiple libraries.
The cyclomatic complexity of the imports is: 14
For more information on cyclomatic complexity, please see: Wikipedia: Cyclomatic Complexity
Visualises how far away from the exported root entities an entity is.
The cyclomatic complexity of Data.Graph.Analysis is: 11.
For more information on cyclomatic complexity, please see: Wikipedia: Cyclomatic Complexity
The module Data.Graph.Analysis has 8 components. You may wish to consider splitting it up.
Visualises how far away from the exported root entities an entity is.
The cyclomatic complexity of Data.Graph.Analysis.Algorithms.Clustering is: 8.
For more information on cyclomatic complexity, please see: Wikipedia: Cyclomatic Complexity
The module Data.Graph.Analysis.Algorithms.Clustering has 4 components. You may wish to consider splitting it up.
The module Data.Graph.Analysis.Algorithms.Clustering has the following chains:
collapseAllBy -> collapseAll
Class: Metric, Data: (PosLabel a) -> euclidian
maybeAdjustLabel -> adjustLabel
whisperNode -> whisper -> chooseWhisper
These chains can all be compressed down to a single function.
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.
Visualises how far away from the exported root entities an entity is.
The cyclomatic complexity of Data.Graph.Analysis.Algorithms.Common is: 13.
For more information on cyclomatic complexity, please see: Wikipedia: Cyclomatic Complexity
The module Data.Graph.Analysis.Algorithms.Common has 3 components. You may wish to consider splitting it up.
The module Data.Graph.Analysis.Algorithms.Common has the following cliques:
extractNode, nodeExtractor
The module Data.Graph.Analysis.Algorithms.Common has the following chains:
componentsOf -> splitComponent -> extractNode -> nodeExtractor
extractNode -> nodeExtractor
findRegular -> findRegularOf -> regularOf
isChainStart -> hasNext
These chains can all be compressed down to a single function.
Visualises how far away from the exported root entities an entity is.
The cyclomatic complexity of Data.Graph.Analysis.Algorithms.Directed is: 4.
For more information on cyclomatic complexity, please see: Wikipedia: Cyclomatic Complexity
The module Data.Graph.Analysis.Algorithms.Directed has the following chains:
graphLevels' -> getNextLevel
keepOnlyInternal -> onlyInternalPred
These chains can all be compressed down to a single function.
Visualises how far away from the exported root entities an entity is.
The cyclomatic complexity of Data.Graph.Analysis.Internal is: 13.
For more information on cyclomatic complexity, please see: Wikipedia: Cyclomatic Complexity
The module Data.Graph.Analysis.Internal has 13 components. You may wish to consider splitting it up.
Visualises how far away from the exported root entities an entity is.
The cyclomatic complexity of Data.Graph.Analysis.Reporting is: 35.
For more information on cyclomatic complexity, please see: Wikipedia: Cyclomatic Complexity
The module Data.Graph.Analysis.Reporting has 4 components. You may wish to consider splitting it up.
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.
Visualises how far away from the exported root entities an entity is.
The cyclomatic complexity of Data.Graph.Analysis.Reporting.Pandoc is: 50.
For more information on cyclomatic complexity, please see: Wikipedia: Cyclomatic Complexity
The module Data.Graph.Analysis.Reporting.Pandoc has the following cliques:
elements, multiElems
elements, multiElems'
The module Data.Graph.Analysis.Reporting.Pandoc has the following chains:
defaultProps -> defaultWidth
inlines -> loc2target
multiElems' -> elements
These chains can all be compressed down to a single function.
Visualises how far away from the exported root entities an entity is.
The cyclomatic complexity of Data.Graph.Analysis.Types is: 26.
For more information on cyclomatic complexity, please see: Wikipedia: Cyclomatic Complexity
The module Data.Graph.Analysis.Types has 4 components. You may wish to consider splitting it up.
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.
Visualises how far away from the exported root entities an entity is.
The cyclomatic complexity of Data.Graph.Analysis.Utils is: 26.
For more information on cyclomatic complexity, please see: Wikipedia: Cyclomatic Complexity
The module Data.Graph.Analysis.Utils has 19 components. You may wish to consider splitting it up.
Visualises how far away from the exported root entities an entity is.
The cyclomatic complexity of Data.Graph.Analysis.Visualisation is: 3.
For more information on cyclomatic complexity, please see: Wikipedia: Cyclomatic Complexity
The module Data.Graph.Analysis.Visualisation has 2 components. You may wish to consider splitting it up.
The module Data.Graph.Analysis.Visualisation has the following chains:
blockPrintWith' -> takeLen -> takeLine
These chains can all be compressed down to a single function.