1.ビルド情報のデータベースを生成
以下のオプションをつけてビルドする。
roscd <ros_package_of_interest>
catkin build --this --force-cmake --start-with-this -DCMAKE_EXPORT_COMPILE_COMMANDS=ON
すると、以下の場所にcompile_commands.jsonが生成される。
ls /path/to/catkin_ws/build/<ros_package_of_interest>/compile_commands.json
2. Sourcetrail側でデータベースを読むように設定
プロジェクト名称とプロジェクトの保存場所を設定し、Add Source Groupをクリックすると、SOURCE GROUP Typeの選択画面になるので、C/C++ from Compilation Databaseを選択してNextを押下する。
-
Compilation Databaseとして先ほど生成したcompile_commands.jsonを設定する。 -
Header files & Directories to Indexでソースコードのディレクトリを指定する。
あとはCreateして、読み込む。
例えば、ros-navigationパッケージを一通り追加して可視化してみる。
以下の例では、MoveBaseクラスが、抽象クラスであるBaseGlobalPlannerのmakePlanを呼び出しており、makePlanの具体的な処理はNavfnROSの中で実現されていることがソースコードを読まずに理解できる。すごい!!

※上の図は、BaseGlobalPlannerのmakePlanメソッドを選択するだけで表示される。
