見出し画像

Sourcetrailでソースの解析 - 導入から

この記事は導入について書かれています。不明な点や間違っている点などありましたらコメントなどでご連絡くれると助かります。

ソースコードを可視化できるソフトウェア「Sourcetrail」を使ってみたいと思います。
もともとはライセンスタイプでしたが OSSになりました。ありがたいことです。

前提として Windowsに VisualStudioがインストールされている環境を想定しています。

macOSや Linuxにも対応しています
対応エディタでしたら問題なく同じように使用できます(Atom, bracket, SublimeText, VS Codeなど)
「C」「C++」「Java」「Python」に対応しています


1. Sourcetrailを準備する

アプリケーションは以下からダウンロードできます。
(特に気にしていないのでしたらポータブル版でいいかと思います)

ダウンロードしましたら適当な場所へインストールまたは展開しておきましょう。


2. VisualStudioに拡張機能をインストールする

さて、まずはインストールしてある VisualStudioを開いてください。Sourcetrailと連携させるために拡張機能をインストールする必要があります。

画像10

ツールメニューから「拡張機能と更新プログラム」を選択します。
すると次のようなダイアログが開きますのでオンラインを選び右上の検索ボックスに sourcetrail と入力してください。
拡張機能が表示されます。出てきましたら迷わずダウンロードしてください。

画像2

ダウンロードが完了するとスケジューリングされますので、いったん VisualStudioを終了してください。

画像3

閉じて!

画像4

VisualStudioを起動するとインストールするか問われますので「変更」を選択することでインストールすることができます。
ちょっとだけ時間がかかりますよ。

画像5

変更が完了しました。閉じると VisualStudioが起動します。
するとメニューバーには

画像6

Sourcetrailが追加されてます!。これで VisualStudioと Sourcetrailを連携させることができました。


3. Sourcetrailのデータベースを生成する

いろいろはしょりますが、ソースの可視化をしたいソリューション(.sln)を開いてください(可視化したいって思ってるくらいですからなにかしらのソリューションはありますよね?汗)。

今回はサクラエディタのソリューション(ソース)で試しました。
https://sourceforge.net/projects/sakura-editor/

画像7

特にビルドはする必要ありません。メニューバーの Sourcetrailから Create Compilation Databaseを選択してください。
ソースファイルをリストアップして Sourcetrailで使用するためのコマンドデータベースを作成します。

画像8

上記のようなダイアログが開きましたら必要な情報を入力していきます。
設定するのは下記くらいで十分でしょう。
もっと細かく条件づけしたい場合は Clangのオプションを参考にしてください。

Select Projects → データベースを作成するプロジェクト
Directory → ソリューションファイルのあるディレクトリ
C Standard → Cの規格の選択

ひとまず、これだけ設定してあればそこそこのものは出来上がります。
では Createを押してください。
ちょっとだけ時間がかかるので今のうちにコーヒーでも淹れてくるといいですよ。

画像9

このダイアログがでたら終わりです。英語が苦手な人はせめてこれくらいは読めるようになりましょう。

コンパイルしたデータベース「compile_commands」は、ディレクトリ「D:\github.niki\sakura\sakura」に作成されました。
それを Sourcetrailにインポートしますか?

今回は流れに沿って行うため Finishを選択してください。

・・・


4. Sourcetrailでインデックスファイルを生成する

それではお待ちかね Sourcetrail (sourcetrail.exe) を実行してください。

はじめに下のようなパネルが表示されます。
何ができるかは見ての通りです。一度開いたプロジェクトは Recent Projects に追加されるので開くのが楽になります。

画像22

では、新規プロジェクトを作成してみましょう New Project を選択してください。

画像23

開いたダイアログボックスに必要な情報を入力していきます。今回は Project Name は「Sakura」にしました。
あとはプロジェクトの場所を指定する必要があります。トップあたりでいいでしょう。

入力が終わりましたら右下の Add Source Group を選択します。

画像24

ここでは種類を選択します。C++なのでタブは C++ グループタイプは Visual Studio を選択してください。そして Next で次へ進みます。

画像25

いよいよインデックスファイルを生成することになりますが、はじめに VisualStudioでデータベースを生成済みなので、ここで改めて作る必要はありません。Next で次へ進みます。

画像26

いよいよです。Compilation Database に VisualStudioで生成したデータベースファイル(.json)を選択します。

選択後、Header Files & Directores to Index にソースファイルがあるディレクトリがリストに追加されれば準備完了です。

さあ、Create ボタンを選択してください。

画像11

初回はインデックスファイルを生成する必要があります。ファイル数が多ければ多いほど時間がかかるのが悩みどころですね。
とりあえず初回なので All filesStart してください。

ご飯作ってきていいですよ。

画像12

・・・終わるまでひたすら待ちましょう・・・

画像13

終わりました!

設定が適当なので失敗しているファイルもあるようですが特に気にしなくていいと思います。
おや?「🔴 211 Errors」と出ています。何気に「C Standard」で設定した規格でエラーチェックもしてくれます。便利ですね。

OKを押すと Sourcetrailに移ります。


5. 解析結果の表示と操作

解析結果が表示されます。

画像14

では早速手始めに Files を選んでみます。
エラーを表示しているウィンドウは邪魔なので閉じてしまって構いません。

画像15

ファイルの一覧が表示されたようです。
今回は CDlgAbout.cpp を対象に見てみたいと思います。でも、たくさんのファイルから探すのが面倒なので画面上部にある overview(初めてのときはないかもしれません) と書かれている入力ボックスから探すことにします。

ここにファイル名を入力していきます。

画像16

すると該当するファイルやメソッドなど、シンボルの絞り込みを行えるので目的のものが見つかるまで入力してください。
見つかったら選択してみましょう。

画像17

では、下の方にある CDlgAbout を選択してみましょう。
すると中身が可視化されて表示されます。メソッドとかメンバとか色分けされててわかりやすいですね。

画像18

OnInitDialog を選択してみましょう。
見にくいときは Ctrl+マウスホイールで拡縮ができるのでやってみてください。

画像19

左側のビューには CDlgAbout クラスの親子関係や呼び出し順序なども確認できますね。OnInitDialog がどんな処理をしているか一目でわかります。


6. ソースウィンドウからIDEを参照する

右側のビューには選択したメソッドのソースが表示されます。
ソース側の GetModuleFileName にカーソルを合わせて右クリックをしてみてください。

画像20

ポップアップメニューが表示されます。
このメニューの一番下の Show in IDE を選択してみてください。

画像21

VisualStudioで対象のファイルが開かれ、カーソル位置も再現されます。
これはとても便利ですね。ただ、今は自動でアクティブにしてくれないのが不満です。

これは、はじめてのトンデモプログラムでも解析できそうな気がしてきました。


7. 気づいたことは issueをだそう

https://github.com/CoatiSoftware/Sourcetrail/issues

不満や要望、バグがあればどんどん知らせましょう。意外と汲み取ってくれます。

issueはちょっと・・・という方は直接メール飛ばしても OKです。僕はそのやり方でやってました。あちらが納得してくれたら issueを立ててくれます。


8. まとめ

細かく書いてませんが、これが Sourcetrailの簡単な使い方です。

Doxygen + Graphviz + Cppcheckの組み合わせとどちらが便利か比べてみたいところですが、それはいずれ時間のあるときにでも。
(ただ、ちゃんとドキュメント作るなら Doxygenとかも使いこなせるようにしておきましょう)

使ってみて良かったと思ったらぜひ OSSの支援者になってみてください。そして要望投げまくってください。


ではー。


悉く書を信ずれば則ち書無きに如かず