Sourcetrail使ってみる(Windows, Visual Studio2019, c++)

# 背景/目的
 - Sourcetrailが2019/11/18にoss化された、ということで早速使ってみます。
 - C++のプロジェクトで使いたいので、Visual Studio 2019と連携させてみます。
 - 単に使ってみるだけなく、開発フローにどのように組み込むべきかも記述しておきます（考察レベル）

# 環境
 - Windows 10 Home
 - Visual Studio 2019 Community Edition

# 解析対象言語
 - C++

# 準備
 - まずはVisual Studio 2019 Community Edition（以下、VS2019）をインストール
    - ここらへんの説明は省略します
        - C++のビルド環境を忘れずに入れること
        - [参照例](https://qiita.com/Gaccho/items/1409c27216a67014a024)　
 - Sourcetrailで解析するC++のプロジェクトを予め作っておきます。
    - ここも説明省略します
        - [参照例](https://tunasalmon.com/2019/04/13/visual-studio-2019%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E6%96%B9%E6%B3%95/amp/)

 - VS2019にSourceTrailプラグインをインストール
    - 「拡張機能」メニューで「Sourcetrail」を検索して「Download」ボタン押下
    - 私の環境では、VS2019を終了させた後にインストールが開始されました。
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/143120/2e105fc4-6f89-55ca-08e7-eefb9882cda6.png)

 - VS2019を起動して、C++のプロジェクトを開いた状態にしておきます。
    - ここでは「SourcetrailSample」というプロジェクトを作って、開いています。


# 導入方法
 - githubからrelease版をダウンロードする
    - [github](https://github.com/CoatiSoftware/Sourcetrail/releases)
    - 現時点での最新版（portable）をダウンロードします。
        - Sourcetrail_2019_4_61_Windows_64bit_Portable.zip
        - portable or installerはお好みで
       　
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/143120/334187e6-ab8e-8e37-7b88-fb88493ebed2.png)

 - 解凍してアプリ起動
    - 実行ファイル： Sourcetrail.exe

# 使い方
 - アプリ起動後、「New Project」を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/143120/4406f2e5-6254-999e-0383-0e82060cbe6f.png)

 - 「Sourcetrail Project Name」と「Source Project Location」を適当に入力して下部の「Add Source Group」ボタンを押下する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/143120/e9483895-46f4-c297-a0e5-d59e89661d90.png)

 - 「C/C++ from Visual Studio」を選択して「Next」ボタンを押下します。 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/143120/3c18a188-e476-3524-db9c-e70996f4909f.png)

 - Create Compilation Databaseボタンを押下します

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/143120/fd262673-9d97-30ea-a681-eb4bdae2fec6.png)

 - 予め作っておいた「SourceTrailSample」を選択して「Create」ボタンを押下してcompile_commands.jsonファイルを生成します。作成後にポッポアップが出るで「import」を選択します
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/143120/d40b5ba2-49b2-f6aa-aa79-2a9fa4f6c7fc.png)

 - 「New Source Group」ダイアログに戻って、「Header Files & Directories to Index」にソースコードがある場所を追加して、「Next」ボタンを押下します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/143120/c27e98c1-c6b6-85e5-0fee-3dde999959c3.png)

 - 「New Project」ダイアログに戻って「Create」ボタン押下すると、下記のダイアログが表示されるので、そのまま「Start」ボタンを押下します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/143120/403a5653-66e5-75e9-9e1f-48d8799c929d.png)

 - そのまま進んでいけば結果が表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/143120/2b7ace15-68b0-fd4e-9e65-6cd84e09079d.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/143120/327789c3-e914-77c1-2a5a-c9b847db8f8e.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/143120/6e37623e-bab1-bb5e-31ab-5dee692f0712.png)

# 情報更新方法
 - VS2019側でコードを編集した場合、Sourcetrail側でも更新操作（F5）すれば、編集内容を反映してくれます。
    - ファイルを追加した場合でも問題なく反映してくれます（compile_commands.jsonは更新されていませんが、Sourcetrail側は正常に更新されます）

# 開発環境、CIへの統合（考察レベル）
 - VS2019と一緒に、Sourcetrailも立ち上げておいて、コーディング中に他の人が書いたコードを理解したいときなど、Sourcetrailのほうでチェックする、という流れで効率良く開発できそうです。
    - VS2019で選択した部分からSourcetrailの該当箇所にジャンプできますし、逆もできます。
    - 手動で更新すれば常に最新コードの結果を見ることができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/143120/70ab0795-ccc9-b3db-39be-b2a9197dd6b4.png)
 - 開発メンバー全員でSourcetrailを使う場合、何か効率のいい方法がありそうでしょうか。
    - Sourcetrailが出力する各ファイルをプロジェクトと同じレポジトリに含めてバージョン管理ツールで共有しておけば、各自が設定する必要はなくなりそうです。
        - Sourcetrailの出力ファイルは、srctrlbm、srctrldb, srctrlprjファイルの３つで、srctrlprjファイルだけがあれば設定を共有できます、ただしVS2019が出力したcompile_commands.jsonも必要になってきて、絶対パスも含まれているので、開発環境をメンバー間でパスも含めて共通化させていないと厳しそうです。
 - CIについて、あくまでコードの見るときの補助的なツールだとしたら、CIに組み込み必要はないのかもしれません。
    - 強いてやるとすれば、
        - リリース時にSourcetrailの出力ファイルも一緒に含めておき、後でソースコードまで見たくない他の人でも簡単に見れるようにしておく、ぐらいでしょうか。
            - srctrlbm、srctrldb, srctrlprjのみあって、あとはSourcetrailをインストールすれば、Sourcetrailの結果を見ることができます。
    - 試していませんが、commandlineが用意されているようです。
        - https://www.sourcetrail.com/documentation/#COMMANDLINE