関数呼び出しの関係をグラフ化する.

大きなソースコードを読むためのツールとして etagとか global とか doxygen を使ってきた.しかし,もっと便利なツールがあるはず.という訳で今日は cflow を試してみた.

たとえばこのようなソースコードを cflow に食わせると

void fuga(int i)
{
  printf("%d\n", i);
}
     
void hoge()
{
  int i;
  for (i=0; i<10; i++)
    fuga(i);
}

int main()
{
  printf();
  hoge();
  printf();
}
$ cflow  test.c
1       main {a.c 15}
2               printf {}
3               hoge {a.c 8}
4                       fuga {a.c 3}
5                               printf {}

と言う風に,関数名 "{" ファイル名 行番号 "}" という形式でネストしてテキストを出力するみたい.うーん,すごく便利とは言えないが,それなりに便利そう.