メトリクスの説明

ソースコードメトリクスは、「基本行数」、「差分行数」、および「構造メトリクス」の3種類に分類されます。ここでは、各メトリクスについて説明します。

基本行数

ソースコードの基本的な規模を測定する基準を定義します。

名称(略語) | 測定方法
--- | ---
総行数 (TLOC(*1)) | 測定の対象となるソースコードの物理的な行の数（改行の数）
有効行数 (ELOC(*1)) | プログラムの実行に必要な記述を含む行の数
コメント行数 (CLOC(*1)) | コメントのみで構成された行の数
仕様コメント行数 (DOC) | プログラムの仕様を特定の形式(一般的にdoxygenやjavadocで規定された、/ * *〜 * /の形式）で記述したコメント行の数
一般コメント行数 (REM) | 仕様コメント行以外のコメント行の数
空白行数 (BLOC(*1)) | 空白文字（ ブランク文字、タブ文字、改行文字など） のみで構成された行の数
スキップ行数 (SKIP) | コンパイラもしくはプリプロセスにより無効扱い（ 読み飛ばし）される行の数
整形後行数 (RTLOC, RELOC, RSKIP, RCLOC, RDOC, RREM, RBLOC) | 決められたコーディング規約に準拠した標準形式に整形したあとの行の数
ステートメント数 (STMT(*1)) | プログラミング言語の仕様で規定された「文」の数

*1. 略語説明
TLOC：Total Lines Of Code, ELOC：Effective Lines Of Code, CLOC：Comment Lines Of Code,　BLOC：Blank Lines Of Code, STMT：Statement Count Of Code

差分行数

基本行数で定義されたソースコードの構成をベースに、ソースコードに加えられた何らかの変更に対して、その変更前後の規模を測定する基準を定義します。

名称(略語) | 測定方法
--- | ---
追加行数 (ADD_TLOC) | オリジナル(変更前)のソースコードに対して追加された行の数
| 追加有効行数(ADD_ELOC) | 追加行数の内訳として、「基本行数」で規定した各行の区分に応じて、それぞれ、有効行数、コメント行数、空白行数、スキップ行数を定義する。
| 追加コメント行(ADD_CLOC)
| 追加空白行数 (ADD_BLOC)
| 追加スキップ行 (ADD_SKIP)
削除行数 (DEL_TLOC) | オリジナルのソースコードから削除された行の数
| 削除有効行数, 削除コメント行数, 削除空白行数, 削除スキップ行数 (DEL_*) | 各行の区分に応じて、「削除有効行数」、「削除コメント行数」、「削除空白行数」、「削除スキップ行数」を定義する。
変更行数 (MOD_TLOC)(*1) | オリジナルのソースコードから変更された行の数
| 変更行数, 変更コメント行数, 変更空白行数, 変更スキップ行数 (MOD_*)(*1) | 各行の区分に応じて、「変更有効行数」、「変更コメント行数」、「変更空白行数」、「変更スキップ行数」を定義する。
無変更行 (EQU_TLOC) | オリジナルのソースコードから変更されていない行の数
| 無変更有効行数, 無変更コメント行数, 無変更空白行数, 無変更スキップ行数 (EQU_*) | 各行の区分に応じて、「無変更有効行数」、「無変更コメント行数」、「無変更空白行数」、「無変更スキップ行数」を定義する。

*1. オリジナルのソースコードと変更後のソースコードの両方に対して変更された行を出力します。

MODDEL_* ： オリジナルのソースコードで変更された行数
MODADD_* ： 変更後のソースコードで変更された行数

変更後のソースコードに対する値は"MODADD_*"の値を利用します。
変更行数は、オリジナルのソースコードと、変更後のソースコードの両方に対して定義されます。明示的な区別をせずに単に"変更行数"とした場合は、変更後のソースコードに対する値を指しているものとします。

空白の測定を行う場合([INIT]DIFF_BLANK=TRUE 指定時)には、ソースコードファイルの行数は以下の式で表せます。
オリジナルのソースコードの行数 =
EQU_TOTAL(無変更行数の合計)
+　DEL_TOTAL(削除行数の合計)
+　MODDEL_TOTAL(変更(削除)行数の合計)
変更後のソースコードの行数 =
EQU_TOTAL(無変更行数の合計)
+　ADD_TOTAL(追加行数の合計)
+　MODADDL_TOTAL(変更(追加)行数の合計)
注意：ファイル名を変更した場合の扱い

オリジナルのソースコードのファイル名が変更された場合は、（一般的に測定ツールは同一ファイルであると認識できないため） 変更後のファイルに含まれるソースコードは差分の有無にかかわらず、全て追加行数として扱い、ファイル名が変更されたオリジナルのソースコードは、全て削除行数として測定します。

構造メトリクス

プログラムの構造をある基準で定量的な数値としてあらわしたもの。

コーディング直後のプログラムに対するテスト基準の設定や、開発後の保守のしやすさを把握するなどの目的に利用します。

名称(略語) | 測定方法
--- | ---
サイクロマティック数 (CYCLO) | プログラムの制御フロー上における独立した経路の数
分岐条件数 (BRANCHS) | 複合条件を考慮して、おのおのの条件に分離してカウントした分岐条件の数
最大ネスティング数 (NESTS) | 制御命令やブロック記述などによるロジックのネスト数の最大値