Tool for drawing coq project dependency graph?

For what is worth, here is the snippet of code I use to generate my dependency graphs:

( echo "digraph interval_deps {" ;
  echo "node [shape=ellipse, style=filled, URL=\"html/Interval.\N.html\", color=black];";
  ( cd src; coqdep -R . Interval $VFILES ) |
    sed -n -e 's,/,.,g;s/[.]vo.*: [^ ]*[.]v//p' |
    while read src dst; do
      color=$(echo "$src" | sed -e 's,Real.*,turquoise,;s,Interval[.].*,plum,;s,Integral.*,lightcoral,;s,Poly.*,yellow,;s,Float.*,cornflowerblue,;s,Eval.*,green,;s,[A-Z].*,white,')
      echo "\"$src\" [fillcolor=$color];"
      for d in $dst; do
        echo "\"$src\" -> \"${d%.vo}\" ;"
      done
    done;
  echo "}" ) | tred > deps.dot
dot -T png deps.dot > deps.png
dot -T cmap deps.dot | sed -e 's,>$,/>,' > deps.map

This produces two files deps.png and deps.map which can then be embedded into a webpage. The specific parts in the script above are the src physical path and the Interval logical path, as well as the color line, which is used to split the library into various sublibraries. This gives the following graph: CoqInterval. The same kind of script is used for Flocq and Coquelicot

2 Likes