*

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と限定されています。
今後、別の言語に対応することを期待、といったところでしょうか。

ではっ!

関連記事

Splash

EV3開発サポートツール(3)-Ev3Controller

どもです。 今回は、以前ちらりと紹介した、Ev3のモーターの出力を調整するアプリケーションについて

記事を読む

MY_MFC_LOGO

MFCプログラミング(1):CFileまたはCStdioFileクラスを使用してファイル出力

どもです。 突然ですが、仕事でMFCを使用することになりました。 MFCはこれまで触ったことがな

記事を読む

RasPi_Qt

QtでRaspberryPi/GUI開発(10)-SPI通信をしてみた(その2)

どもです。 えー。 「Qtで…」とか書いておきながら、今回もやっぱりQtは出てきません。

記事を読む

toppers

C言語でEV3開発(16)-TOPPERS/HRP2 EV3 で Bluetooth割込み

どもです。 今回は、EV3 の環境をTOPPERS/HRP2 EV3RT で作成したアプリをPC上

記事を読む

toppers

C言語でEV3開発(26)-EV3で機械学習(1)-QLearningをC#に委譲してみた

どもです。 前回の投稿では、Q-LearningをEV3本体に実装してみたら、メモリが足りなくて動

記事を読む

raspberry-pi

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

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

記事を読む

DIY_eye_catch

自宅で電子工作(2)-ラズパイのSPIコネクタ自作

どもです。 今回は、電子工作です。 1.何を作った 今回紹介(?)するのは、Raspber

記事を読む

GitHub

C/C++のスタブを自動生成するツールを公開しました

どもです。 突然ですが、C/C++の単体テストで使用する「スタブ」を自動で生成するツールを公開

記事を読む

toppers

C言語でEV3開発(19)-コマンド通信処理でEchoBackしてみた

どもです。 前回は、Bluetoothの接続状態の変化に伴う、状態遷移について書きました。 今回

記事を読む

no image

C言語でEV3開発(10)-opOUTPUT_CLEAR_COUNTコマンド

どもです。 前回のエントリーのラストで、「モーターを動かすコマンド」と書きましたが、今回紹介するコ

記事を読む

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
Windowsでのカバレッジ測定-OpenCoverageを使ってみた

どもです。 以前、OpenCppCoverageを使用してWindo

EF_GRY-OR_png
Eclipseで単体テストするときの注意点(?)

どもです。 今回のエントリは、Eclipse/cygwinで単体

cygwin_my_image
Windows10/cygwinの音を消す

どもです。 最近、Windows10/cygwinで作業をする場

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

どもです。 今回のエントリも、前回に引き続き、Raspberry

cygwin_my_image
cygwinでstartコマンド

どもです。 このエントリでは、cygwinでWindows/コマ

→もっと見る

PAGE TOP ↑