-----BEGIN PGP SIGNED MESSAGE-----
I've just submitted my thesis this morning (w00t!!!) and as such I'm
the latest versions of Graphalyze [1,2] and SourceGraph [3,4], which fix a
couple of bugs in the previous versions (these bugs were fixed whilst
for my supervisor to finish reading through my draft, and as such I had to
re-write bits of my thesis that talked about the limitations of the
software :s ).
Briefly, SourceGraph is a utility that uses the Graphalyze library to
Cabalized Haskell software. Its input/output is rather restrictive at
the moment: it takes a single argument, which is the path to a .cabal file,
then produces an HTML report in:
This report contains visualisation of the code for each module, for the
(similar to what graphmod  does) as well as the entire code base.
Furthermore, the entire code base is also visualised with functions grouped
the modules they're defined in, as well some simple analyses (such as
the export list to what functions are actually roots, similar to the output
top-level functions returned by GHC when using -fwarn-unused-binds).
Main changes in Graphalyze since version 0.4:
* When writing my thesis, I found some obvious silly mistakes (such as
the rootsOf function definition to leavesOf, but not changing the
* Images in the document representation are now inline elements.
* When using Pandoc  for document generation, the size of generated
is now customisable on a per-format basis; furthermore, for web pages
visualisations link to larger versions. Also, graph visualisations can
be created in a sub-directory.
Main changes in SourceGraph since version 0.2:
* Now uses Cabal 1.6
* Improve visual layout of generated HTML report (still no CSS though).
* "Smarter" analysis: don't show trivial analysis results, and when
the entire code base don't return cliques, etc. that contain functions
the same module (as they would have been reported in the per-module
Note, however, that the parsing limitations for version 0.2 still apply:
still as-yet unsupported (as I'm not sure what I'll do about choosing cpp
flags); Template Haskell, HaRP and HXML are still ignored and functions in
class declarations/records are still ignored (the former because it's
which actual function you want, the latter because they're boring :p ).
SourceGraph is _still_ not a refactoring tool ;-)
If anyone's interested, I'll soon be uploading the final version of my
to my blog. Also, if anyone is interested in hacking on any of this, feel
free! I'll probably leave it for a while (I'm going to be doing Java
over summer, blech :s ), but I intend to come back to it later on.
Ivan Lazar Miljenovic
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.9 (GNU/Linux)
-----END PGP SIGNATURE-----