Coqのモジュール間の依存関係を可視化するスクリプトを書いたよ


こんな感じの画像を生成してくれます。リファクタリングのお供にどうぞ。

何をやるの?

  • coqdepの出力をdotファイルに変換する
  • dotファイルをGraphvizで画像に変換する

使い方

$ coqdep -I . *.v | ruby depends.rb > depend.dot
$ dot -Tpng -o depend.png depend.dot

ソースコード

昔、OCamlのモジュール間の依存関係を可視化したときのスクリプト(haXeのファイル間の依存関係 - Happy OCaml!! - ocaml-nagoyaグループ)の焼き直しです。

puts 'digraph depend{'

ARGF.read.gsub(/\\\n/,'').each do|line|
  file,depends = line.split ':',2
  if file =~ /\.v/
    depends.split.each do |x|
      puts "#{File.basename file,'.*'} -> #{File.basename x,'.*'}"
    end
  end
end

puts '}'