SourcetrailでROSパッケージを読む


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を押下する。

  1. Compilation Databaseとして先ほど生成したcompile_commands.jsonを設定する。
  2. Header files & Directories to Indexでソースコードのディレクトリを指定する。

あとはCreateして、読み込む。
例えば、ros-navigationパッケージを一通り追加して可視化してみる。
以下の例では、MoveBaseクラスが、抽象クラスであるBaseGlobalPlannermakePlanを呼び出しており、makePlanの具体的な処理はNavfnROSの中で実現されていることがソースコードを読まずに理解できる。すごい!!

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