[Haskell] ANNOUNCE: Graphalyze-0.5 and SourceGraph-0.3

Ivan Lazar Miljenovic ivan.miljenovic at gmail.com
Sun Nov 2 22:35:58 EST 2008

Hash: SHA1

I've just submitted my thesis this morning (w00t!!!) and as such I'm announcing
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 waiting
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 ).

[1] http://hackage.haskell.org/cgi-bin/hackage-scripts/package/Graphalyze
[2] http://code.haskell.org/Graphalyze
[3] http://hackage.haskell.org/cgi-bin/hackage-scripts/package/SourceGraph
[4] http://code.haskell.org/SourceGraph

Briefly, SourceGraph is a utility that uses the Graphalyze library to analyse
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, and
then produces an HTML report in:
      <project directory>/SourceGraph/<project name>.html
This report contains visualisation of the code for each module, for the imports
(similar to what graphmod [5] does) as well as the entire code base.
Furthermore, the entire code base is also visualised with functions grouped by
the modules they're defined in, as well some simple analyses (such as comparing
the export list to what functions are actually roots, similar to the output for
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 copying
  the rootsOf function definition to leavesOf, but not changing the function
* Images in the document representation are now inline elements.
* When using Pandoc [6] for document generation, the size of generated graphs
  is now customisable on a per-format basis; furthermore, for web pages graph
  visualisations link to larger versions.  Also, graph visualisations can now
  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 analysing
  the entire code base don't return cliques, etc. that contain functions all in
  the same module (as they would have been reported in the per-module section).

Note, however, that the parsing limitations for version 0.2 still apply: cpp is
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 ambiguous
which actual function you want, the latter because they're boring :p ).  Also,
SourceGraph is _still_ not a refactoring tool ;-)

If anyone's interested, I'll soon be uploading the final version of my thesis
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 coding
over summer, blech :s ), but I intend to come back to it later on.

- -- 
Ivan Lazar Miljenovic
Ivan.Miljenovic at gmail.com
Version: GnuPG v2.0.9 (GNU/Linux)


More information about the Haskell mailing list