[Haskell-cafe] analyzing modules import/export
Don Stewart
dons at galois.com
Wed Sep 3 16:49:38 EDT 2008
j.m.m.joosten:
>
> I am currently involved with a Haskell project to create a toolset for a
> formal language. The toolset contains a parser, a typechecker and s range of
> other features.
>
> The Haskell code currently consists of about 20 modules. I am new in
> the project, and my impression is that a lot of code does not reside
> in the proper module. I would like to be able to get a good feeling in
> how the modules are structured, and how they are consumed by other
> modules. This would enable me to clean up a little bit.
>
> I use eclipsefp. Do you know of any way to get insight of the
> structure of modules? is any tooling available? Any suggestions would
> help a lot! Thanx for reading.
There's been a few projects at Galois for this kind of high level
structural analysis. We're trying to polish them up into a release.
For now, there's one tool you can get started with: graphmod.
This tool was written by Andy Gill (the dotgen part) and Iavor Diatchki
(the graphmod part), and you can use it like so:
$ git clone http://code.haskell.org/graphmod.git
$ cd graphmod
-- build dotgen
$ cd dotgen
.. edit the .cabal file to add the line:
Build-type: Simple
after the Exposed-modules line
$ cabal install
-- build graphmod
$ cd ..
$ cabal install
...
Installing: /home/dons/.cabal/bin
Now you have 'graphmod' a tool for drawing the module structure.
So go find a project, and analyze it:
$ cd ~/xmonad
-- generate module graph
$ graphmod XMonad XMonad.hs Main.hs > /tmp/xmonad.dot
-- generate svg of graph
$ dot -Tsvg /tmp/xmonad.dot > xmonad.svg
Which gives this result:
http://galois.com/~dons/images/xmonad.svg
Enjoy!
-- Don
More information about the Haskell-Cafe
mailing list