Analysed by SourceGraph (version 0.7.0.0) using Graphalyze (version 0.11.0.0)

Wednesday 24 November, 2010

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

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:*

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

The overall cyclomatic complexity is: 140

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

These functions are those that are inaccessible:

*Distribution.Gentoo.PkgManager.dummy,
Main.err*

The code has the following cross-module chains:

Distribution.Gentoo.Packages.stripVersion -> Distribution.Gentoo.Util.breakAll

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

The cyclomatic complexity of the imports is: 5

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 Distribution.Gentoo.GHC is: 6.

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

The module Distribution.Gentoo.GHC has the following chains:

checkLibDir -> isGhcLibDir

getBroken -> ghcPkgRawOut

matchConf -> tryMaybe

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 Distribution.Gentoo.Packages is: 14.

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

The module Distribution.Gentoo.Packages has the following chains:

hasContent -> parseContents

hasContentMatching -> pathOf

installedCats' -> installedCats

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 Distribution.Gentoo.PkgManager is: 35.

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 Distribution.Gentoo.Util is: 3.

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

The module Distribution.Gentoo.Util has 3 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 Main is: 59.

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

The module Main has the following chains:

allGetPackages -> getPackages

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