Hatena::ブログ(Diary)

みずぴー日記 Twitter

2010-01-13(水)

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

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

f:id:mzp:20100113073200p:image

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

何をやるの?

  • 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 '}'
トラックバック - http://d.hatena.ne.jp/mzp/20100113/coq