爆速でコールグラフを作成できる GitHub Copilot
プログラムコードの解析をするとき、コールグラフがあると便利である。私は本気でやるときは、diagrams.net を使って手動で作る。書式は我流で、たとえば下図のような感じ。
もちろん、gprof とか pycallgraph とか、昔からコールグラフを自動的に作成ツールも色々あるのだが、個人的にはなかなかしっくり来るものがなく、結局はソースコードを自分で読んで上図のようなものを作っている。そのほうが理解が深まるし、知らない土地を探検しながら地図を作るような楽しさもあるからだ。
しかし、毎回これをやるのは大変であるし、概要を掴みたいだけのときはもっと楽にやりたい。
そこでお世話になるのが、毎度おなじみ GitHub Copilot である。やり方は、コールグラフの入口、例えば main 関数ブロックを範囲選択して、Copilot Chatに「コールグラフを作ってください」とプロンプトを入力すればOKである。
すると、以下のような結果が即座に得られる。
main
├── parse_command_line_arguments
├── load_config
│ └── open_config_file
├── setup_evaluation_mode (if args.eval is True)
│ ├── override_config_for_evaluation
│ └── log_evaluation_mode_settings
├── prepare_save_directory
│ ├── create_save_directory
│ └── copy_config_to_save_directory
├── initialize_wandb
│ ├── set_wandb_project_and_name
│ └── define_wandb_metrics
├── run_slam_process
│ └── SLAM.run
└── finalize
├── wandb.finish
└── log_completion
これは、とあるPythonプログラムのコールグラフである。概要を掴むにはこれぐらいで十分だ。このグラフから深堀りしたい箇所を見つけて、さらにCopilotでブレークダウンしたコールグラフを作ってもよいし、自力で精読してもよい。
他のツールのセットアップの手間などもなく、Copilotだけでここまでできるのは、気持ち的にもハードルが低くて助かる。
みなさんも、試してみてください。
今回の記事は以上です。お読みいただき、ありがとうございました。