*

Sourcetrailを試してみました

公開日: : 開発

どもです。
つい最近、ソースコードの解析に役に立ちそうなツールを見つけたので、ここで少し紹介をします。

1.何を見つけた?

見つけたのは、Sourcetrailというツールです。
これは、ソースコード内の関数の呼び出し関係やクラスの継承関係を可視化するツールです。
似たようなツールでは、「understand」というツールが有名ですが、これは有償なうえ高価です。
調べてみた範囲ですが、趣味でソフトの開発を行っている個人で払える、払うのは現実的ではないと考えてしまう価格です。
しかし、このSourcetrailは、オープンソースで似たような機能が提供されています。

2.インストールとかとか

Sourcetrailは、こちらからインストーラをダウンロードできます。
(https://www.sourcetrail.com/)
Windowsでは、インストール版とポータブル版があります。
機能的には、どちらも違いは無いようです。
インストールするか、それともUSBメモリに実行ファイルを格納してどのPCでも実行できるようにするか、の違いしか無いようです。

なお、私は「インストール版」を選択しました。
インストール手順については、ここでは割愛します。
インストーラをダウンロードして、実行して、インストール場所指定して…という極々「フツー」の手順で完了します。

3.試しに使ってみた

インストールが終わったので、試しに使ってみました。

3.1.試してみたプロジェクトは?

Sourcetrailを試すにあたり、過去に自分が作ったプロジェクトの中から、「CStubMk」を選びました。
理由は、

  • C++で書かれている(っていうか、書いた)
  • 少し大きい

からです。
※ソースコードは、GitHubで公開しています。

3.2.試した結果

こうなりました。
source_trail_install_020
この画面から、どれを中心に解析結果を見たいかを選択します。
ココでは、「Function」を選択してみます。
source_trail_install_021
関数の一覧が表示されます。

表示されるのは、グローバル関数のみの模様です。
クラスのメンバ関数は、こちらには表示されない様です。
mainを選択してみます。
source_trail_install_022
ここで初めて、どのクラスを参照しているか、どのメンバ関数を呼び出しているかを可視化できました。

更に、各関数が参照している、呼び出している他の関数を調べてみます。
下図のボタンを押します。
source_trail_install_022_5
で、得られる図がコレ。
source_trail_install_023
解析の深さを「5」に設定しているため、全ての呼び出しを解析できているわけではありませんが、呼び出し関係が可視化できています。
なお、試しに深さを「inf」に設定してみると、より大きい図になります。
ココでは示しませんので、気になる場合はお試しあれ。

4.結論

ソース解析ということだけ見れば、「understand」に劣らない、十分な機能を備えているかと思います。
しかし、解析できる言語がC/C++/Java/Pythonと限定されています。
今後、別の言語に対応することを期待、といったところでしょうか。

ではっ!

関連記事

think_about_utest

単体テストの効率化を考える(4)-スタブの引数(ダブルポインタ)

どもです。 「単体テストの効率化について考える」の4回目です。 1回目から3回目まではコチラ

記事を読む

raspberry-pi

ライブラリでRasPiのピンにアクセス(3)-SPIのインターフェース追加(その2)

どもです。 今回のエントリも、前回に引き続き、RaspberryPiのピンをより簡便に使用でき

記事を読む

raspberry-pi

ライブラリでRasPiのピンにアクセス(2)-SPIのインターフェース追加

どもです。 前回のエントリでは、RaspberryPiのピンをより簡便に使用できるようにするた

記事を読む

no image

C言語でEV3開発(17)-コマンドによるTOPPERS/HRP2 EV3RT アプリケーションの制御(コントロール)

どもです。 今回は、TOPPERS/HRP2 EV3RT で作成したアプリをPC上から操作するため

記事を読む

RasPi_Qt

Rasbianの新しいバージョンが出たので、クロス環境を更新してみた。

どもです。 RaspberryPiのOS:Raspbianの新しいバージョンが、少し前(…なの

記事を読む

Qt_logo_2016

QtでRaspberryPi/GUI開発(2):ためしに時計を作ってみた(其の弐)

どもです。 前回のエントリーでは、ラジオボタンのグループ化と、選択されたボタンの特定方法まで記載し

記事を読む

no image

C言語でEV3開発(12)-opOUTPUT_TIME_POWERコマンド

どもです。 今回のエントリーでは、これまた前回に引き続き、モーターを動かすためのコマンドについて書

記事を読む

iot_raspberrypi_gateway_001_eye_catch

IoT開発(12)
RaspberryPiをIoTゲートウェイにする(V)
nginxとuWSGIの連携

どもです。このエントリは、以下のエントリの続きです。 IoT開発(6) RaspberryPiをI

記事を読む

eclipse_cdt_top_100

C言語でEV3開発(3)

どもです。 今回のエントリーの内容は、前回まででセットアップした環境で、実際にEV3上で動く実行フ

記事を読む

iot_raspberrypi_gateway_001_eye_catch

IoT開発(8)
RaspberryPiをIoTゲートウェイにする(II)-ex
MariaDBにPHPからアクセス

どもです。 このエントリは、前回のエントリの追加項目です。 前回のエントリ内でMariaDB

記事を読む

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

c_sharp_eye_catch
セル内の「取り消し線で消された文字列」の削除を簡単にしてみた

どもです。 前回、C#/OpenXmlを用いて、エクセルのセル内

c_sharp_eye_catch
セル内の「取り消し線で消された文字列」を削除してみた

どもです。 今回は、C#/OpenXmlの組み合わせで、エクセル

c_sharp_eye_catch
C#でバッファの内容を表示する処理を実装してみた-
データ型に従って動的に書式を設定する

どもです。 最近、C#でバッファ/配列の値をコンソールに表示した

arduino_relay_switch_003_self_preservation_circuit_eye_catch
Arduinoでリレースイッチ(3)-自己保存回路

どもです。 前回の記事で、リレースイッチ「AE-G5V-DRV」

arduino_relay_switch_002_ae_g5v_drv_eye_catch
Arduinoでリレースイッチ(2)-AE-G5V-DRV

どもです。 前回の記事では、「フォトカプラリレー」を使用したLチ

→もっと見る

PAGE TOP ↑