連載
» 2017年01月25日 11時00分 公開

タダでソフト開発の生産性と品質を上げる方法(1):意外に使える無料のソースコード測定ツール「SourceMonitor」山浦恒央の“くみこみ”な話(91)(2/3 ページ)

[山浦恒央 東海大学 大学院 組込み技術研究科 非常勤講師(工学博士),MONOist]

3.ツールその1:ソースコード計測ツール「SourceMonitor」

 経験的に、ソースコードの複雑な場所にはバグが潜んでいます。理由は単純で、プログラムが複雑になると全ての条件を網羅できず、バグの温床になるためです。その際、プログラムを目で追って当たりを付ける方法もありますが、非常に面倒な上、経験を要します。個人の能力や経験によるので、判断が分かれたりもします。

 ソースコードが複雑に絡み合った箇所をツールで自動的に計測し、判断できると便利です。新シリーズの第1回目として、ソースコードを簡単に分析し、計測するツールの「SourceMonitor」を紹介します。意外に強力なツールです。

3.1 「SourceMonitor」でできること

 SourceMonitorは、プログラムのコード・メトリクスを測定するツールです(図1)。

図1 図1 「SourceMonitor」での測定例(クリックで拡大)

 図1に、SourceMonitorの使用例を表します。左側のFile Nameがソースコードを表し、右が計測データです。例えば、プログラムの行数(Lines)や関数の数(Functions)、プログラムの複雑度(Avg Complexity)などを測定できます。以下に、測定可能なコードメトリクスを示します。

測定項目 詳細
Files ファイル数
Lines 空行も含んだコード行数
Functions 関数の数
Statements 空行を除いたコード行数
Max Complexity 複雑度の最大値(*3)
Max Depth ネストの最大値
Avg Depth ネストの平均値
Avg Complexity 複雑度の平均値
表1 主要なコードメトリクス

 表1にSourceMonitorで測定できる主要なメトリクスを記しました。測定可能な項目は他にもありますし、言語や設定方法によって計測法が変わります。

*3)プログラムの複雑度には、幾つか種類がありますが、本ツールではサイクロマティック数を採用しているようです。詳しく知りたい方は、本コラムの連載第24回「人類初のソフトウェア・メトリクスをめぐる熱い論争」を参照ください。

3.2 ダウンロードとインストール

 本コラムでは、ダウンロードから、最初に使うところまでガイドします(インストールの影響については、各自の責任でお願いします)。なお、筆者のPC環境はWindows7、メモリは8GBで、SouceMonitorのバージョンは3.5.0.306です。

3.2.1 SMSetup.exeのダウンロード

 SourceMonitorをインストールするexeファイルをダウンロードします。Webサイトの「http://www.campwoodsw.com/sourcemonitor.html」の「via HTTP」をクリックし、exeファイルをダウンロードします(*4)

*4)2016年12月28日時点の話ですので、今後、URLやダウンロード方法が変わることがあります。

3.2.2 SourceMonitorのインストール

 ダウンロードしたexeファイルを実行すると、図2の画面が表れます。「Next」を押して、次の画面に移ります。次のLicense Agreement画面で、利用規約を読んで、「I accept the agreement」タブにチェックを付け、「Next」を選択します。その後図3の画面に遷移します。

図2 図2 Setup画面1(クリックで拡大)

 図3の左画面から、説明文を読み、「Next」を選択し、右画面から、インストールするディレクトリを決定し、「Next」を選択します。

図3 図3 Setup画面2(クリックで拡大)

 以下の図4の左画面の「Next」を選択すると、右の画面が表れます。右の画面で、「Next」を選択すると、図5の画面が出ます。

図4 図4 Setup画面3(クリックで拡大)

 図5の画面で、「Install」を選ぶと、インストールが始まり、「Launch SourceMonitor」のチェックボックスを選択し、「Finish」を選択すると、ツールのホーム画面が出ます。

図5 図5 Setup画面4(クリックで拡大)

 図6において、「Start SourceMonitor」を選択すると、セットアップ完了です。

図6 図6 スタートアップ画面

Copyright © ITmedia, Inc. All Rights Reserved.