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
メソッドを選択するだけで表示される。