Analysed by SourceGraph (version 0.1) using Graphalyze (version 0.3)
Sunday 5 October, 2008

The collapsed view of a module collapses down all cliques, cycles, chains, etc. to make the graph tree-like.

The core of a module can be thought of as the part where all the work is actually done.
The module Main is a tree.
The cyclomatic complexity of Main is: 1.
For more information on cyclomatic complexity, please see:Wikipedia: Cyclomatic Complexity
The module Main has the following chains:
binding -> guessKeys
These chains can all be compressed down to a single function.

The collapsed view of a module collapses down all cliques, cycles, chains, etc. to make the graph tree-like.

The core of a module can be thought of as the part where all the work is actually done.
The module XMonad is a tree.
The cyclomatic complexity of XMonad is: 0.
For more information on cyclomatic complexity, please see:Wikipedia: Cyclomatic Complexity
The module XMonad has 0 components. You may wish to consider splitting it up.

The collapsed view of a module collapses down all cliques, cycles, chains, etc. to make the graph tree-like.

The core of a module can be thought of as the part where all the work is actually done.
The module XMonad.Config is a tree.
The cyclomatic complexity of XMonad.Config is: 1.
For more information on cyclomatic complexity, please see:Wikipedia: Cyclomatic Complexity

The collapsed view of a module collapses down all cliques, cycles, chains, etc. to make the graph tree-like.

The core of a module can be thought of as the part where all the work is actually done.
The module XMonad.Operations is a tree.
The cyclomatic complexity of XMonad.Operations is: 21.
For more information on cyclomatic complexity, please see:Wikipedia: Cyclomatic Complexity
These nodes are those that are in the export list and roots:
manage, unmanage, kill refresh, rescreen focus, sendMessage setLayout screenWorkspace extraModifiers cleanMask, initColor restart mouseMoveWindow mouseResizeWindow mkAdjust
These nodes are those that are not in the export list but roots:
windows, setWMState, hide, reveal clientMask, setInitialProperties clearEvents, tileWindow containedIn, nubScreens getCleanedScreenInfo, setButtonGrab setTopFocus, setFocusX broadcastMessage sendMessageWithNoRefresh updateLayout, withFocused isClient, floatLocation, float mouseDrag, applySizeHints applySizeHintsContents applySizeHints', applyAspectHint applyResizeIncHint applyMaxSizeHint
The module XMonad.Operations has 6 components. You may wish to consider splitting it up.
The module XMonad.Operations has the following chains:
applySizeHintsContents -> applySizeHints'
getCleanedScreenInfo -> nubScreens -> containedIn
kill -> withFocused
mkAdjust -> applySizeHints
restart -> broadcastMessage
setFocusX -> setButtonGrab
These chains can all be compressed down to a single function.

Here is the current module groupings:

Here are two proposed module groupings:


The cyclomatic complexity of the imports is: 3For more information on cyclomatic complexity, please see:Wikipedia: Cyclomatic Complexity
These modules are those that are in the export list and roots:
Main
These modules are those that are in the export list but not roots:
XMonad
The imports have 2 components. You may wish to consider splitting the code up.

Here is the current module grouping of functions:

Here are two proposed module groupings:


The collapsed view of code collapses down all cliques, cycles, chains, etc. to make the graph tree-like.

The core of software can be thought of as the part where all the work is actually done.
The code is a tree.
The overall cyclomatic complexity is: 47For more information on cyclomatic complexity, please see:Wikipedia: Cyclomatic Complexity
These functions are those that are available for use and roots:
Main.main
These functions are those that are available for use but not roots:
XMonad.Config.defaultConfig XMonad.Operations.cleanMask XMonad.Operations.extraModifiers XMonad.Operations.initColor XMonad.Operations.manage XMonad.Operations.mkAdjust XMonad.Operations.rescreen XMonad.Operations.unmanage
The functions are split up into 5 components. You may wish to consider splitting the code up into multiple libraries.
The functions have the following chains:
Main.binding -> Main.guessKeys
XMonad.Operations.applySizeHintsContents -> XMonad.Operations.applySizeHints'
XMonad.Operations.getCleanedScreenInfo -> XMonad.Operations.nubScreens -> XMonad.Operations.containedIn
XMonad.Operations.mkAdjust -> XMonad.Operations.applySizeHints
XMonad.Operations.restart -> XMonad.Operations.broadcastMessage
XMonad.Operations.setFocusX -> XMonad.Operations.setButtonGrab
These chains can all be compressed down to a single function.