Metrics

Understand のメトリクス

列ヘッダの意味

言語キー
A
Ada
C
C/C++
S
C#
F
FORTRAN
J
Java
V
Jovial
P
Pascal
例えば "CFJ" の場合、そのメトリクスは C/C++, FORTRAN および Java で利用可能なことを示します。
Metric Name and Description
Understand 上で表示されるメトリクス名とその説明です。
Project
このメトリクスはプロジェクト全体で利用可能なことを示します。
File
このメトリクスはファイルで利用可能なことを示します。
Function or Program Unit
このメトリクスは関数/メソッド/プログラムユニットで利用可能なことを示します。
Class
このメトリクスはクラスで利用可能なことを示します。
Common Name
このメトリクスの一般的な名称です。
Metric Name and Description Project File Function or Program Unit Class Common Name
AltAvgLineBlank
関数・メソッドの空白行数の平均(非アクティブ行を含む)
 C C 
AltAvgLineCode
関数・メソッドのコード行数の平均(非アクティブ行を含む)
 C C 
AltAvgLineComment
関数・メソッドのコメント行数の平均(非アクティブ行を含む)
 C C 
AltCountLineBlank
空白行数(非アクティブ行を含む)
 CCC 
AltCountLineCode
コード行数(非アクティブ行を含む)
CCCC 
AltCountLineComment
コメント行数(非アクティブ行を含む)
CCCC 
AvgCyclomatic
関数・メソッドの Cyclomatic 複雑度の平均
 ACSFJPV CSJP 
AvgCyclomaticModified
関数・メソッドの Modified?Cyclomatic 複雑度の平均
 ACSFJPV CSJP 
AvgCyclomaticStrict
関数・メソッドの Strict Cyclomatic 複雑度の平均
 ACSJ CSJP 
AvgEssential
関数・メソッドの Essential 複雑度の平均
 ACSFJ CSJ 
AvgLine
関数・メソッドの行数の平均
 ACSFPV CSJ 
AvgLineBlank
関数・メソッドの空白行数の平均
 ACSFPV CSJ 
AvgLineCode
関数・メソッドのコード行数の平均
 ACSFPV CSJ 
AvgLineComment
関数・メソッドのコメント行数の平均
 ACSFPV CSJ 
CountClassBase
基底クラス数(継承の最上位数)
   CSJIFANIN
CountClassCoupled
クラスの結合度.
結合度とは、クラスから型、データ、メンバーが使用されていることを意味する。低い値の方が好ましいとされる。
   CSJCBO (Coupling Between Object classes)
CountClassDerived
クラス内のサブクラス数
   CSJNOC (Number of Children)
CountDeclClass
クラス数
CSJCSJ   
CountDeclClassMethod
クラスメソッド数(静的メソッド数)
   CSJNCM (Number of Class Methods)
CountDeclClassVariable
クラス変数の数(静的変数の数)
   CSJNCV (Number of Class Variables)
CountDeclFile
ファイル数
Understand プロジェクトファイルに定義されていない include ファイルは含まれない。
ACSFJPV    
CountDeclFileCode
ソースコードファイル数
C    
CountDeclFileHeader
ヘッダーファイル数
C    
CountDeclFunction
関数の数
CSJCSJ   
CountDeclInstanceMethod
インスタンスメソッド数
   CSJNIM (Number of Instance Methods)
CountDeclInstanceVariable
インスタンス変数の数
   CSJNIV (Number of Instance Variables)
CountDeclInstanceVariablePrivate
private インスタンス変数の数
   C 
CountDeclInstanceVariableProtected
protected インスタンス変数の数
   C 
CountDeclInstanceVariablePublic
public インスタンス変数の数
   C 
CountDeclLibunit
ライブラリユニットの数
A    
CountDeclMethod
(継承ではない)ローカルメソッド数
   CSJ 
CountDeclMethodAll
継承メソッドを含む実装メソッド数
   CSJRFC (Response For Class)
CountDeclMethodConst
const メソッド数
   C 
CountDeclMethodDefault
デフォルトスコープ メソッド数
   J 
CountDeclMethodFriend
(継承ではない)friend メソッド数
   CNFM (Number of Friend Methods)
CountDeclMethodPrivate
(継承ではない)private メソッド数
   CSJNPRM (Number of PRivate Methods)
CountDeclMethodProtected
(継承ではない)protected メソッド数
   CSJ 
CountDeclMethodPublic
(継承ではない)public メソッド数
   CSJNPM (Number of Public Methods)
CountDeclModule
モジュール数
FPFPVF  
CountDeclProgUnit
プログラムユニット数
FF   
CountDeclSubprogram
サブプログラム数
FPVFPVFPVV 
CountInput
関数に対する入力の数
Useしているグローバルオブジェクト・メンバーオブジェクト・パラメータ+CalledByしている関数
  CSJ FANIN (Infomational fan-in)
CountLine
行数
ACSFJPVACSFJPVACSFJPVACSJVNL (Number of Lines)
CountLineBlank
空白行数
ACSFJPVACSFJPVACSFJPVACSJVBLOC (Blank Lines of Code)
CountLineCode
コード行数
クラスの場合、クラスのメンバー関数の CouneLineCode の総和。
ACSFJPVACSFJPVACSFJPVACSJVLOC (Lines of Code)
CountLineCodeDecl
宣言コード行数
 ACSACSACS 
CountLineCodeExe
実行可能コード行数
 ACSACSACS 
CountLineComment
コメント行数
ACSFJPVACSFJPVACSFJPVACSJVCLOC (Comment Lines of Code)
CountLineInactive
非アクティブ行数
#if や #ifdef で FALSE の部分。
CCCC 
CountLinePreprocessor
プリプロセッサ行数
CCCC 
CountOutput
関数に対する出力の数
Set/Modifyしているグローバルオブジェクト・メンバーオブジェクト・パラメータ+Callしている関数+戻値がvoid以外の場合関数自身
  CSJ FANOUT (Infomational fan-out)
CountPath
実行可能パス数
exit や goto 文で終了する異常ケースは除く。
  CSFJANPATH
CountSemicolon
セミコロン数
ACJACJACJAJ 
CountStmt
宣言・実行可能ステートメント数
ACSFJVACSFJPVACSFJPVACSJV 
CountStmtDecl
宣言ステートメント数
ACSFJPVACSFJPVACSFJPVACSJV 
CountStmtEmpty
空白ステートメント数
CCCC 
CountStmtExe
実行可能ステートメント数
ACSFJPVACSFJPVACSFJPVACSJ 
Cyclomatic
Cyclomatic 複雑度(サイクロマティック複雑度)
一般的には10以下であればシンプルな構造、30以上の場合には構造に問題があるとされる。
  ACSFJPVACC (Cyclomatic Complexity)
CyclomaticModified
Modified Cyclomatic 複雑度
Switch-Case の様な条件文 (switch in C/Java, Case in Ada, computed Goto and arithmetic if in FORTRAN) において、個々の条件をカウントせずに条件文全体で 1 とカウントする。
  ACSFJPVACC3
CyclomaticStrict
Strict Cyclomatic 複雑度
個々の Boolean オペレータを 1 とカウントする。
  ACSJPVACC2
Essential
Essential 複雑度
  ACFJAev(G)
Knots
ノット値
プログラムの実行制御構造複雑度(break 文や goto 文のようにコントロールフローの経路が交差する数)
  ACA 
MaxCyclomatic
Cyclomatic 複雑度の最大値
 CSJ CSJ 
MaxCyclomaticModified
Modified Cyclomatic 複雑度の最大値
 CSJ CSJ 
MaxCyclomaticStrict
Strict Cyclomatic 複雑度の最大値
 CSJ CSJ 
MaxEssentialKnots
構造化プログラミング構造が削除された後の最大ノット値
  ACA 
MaxInheritanceTree
継承ツリー構造の最大深度
ルートノードでの値は 0 であり、継承ツリーが深くなるほど、値が大きくなる。
   CSJDIT (Depth of Inheritance Tree)
MaxNesting
制御構造(if, while, for, switch など)の最大ネストレベル値
  ACSFJPVA 
MinEssentialKnots
構造化プログラミング構造が削除された後の最小ノット値
  ACA 
RatioCommentToCode
コード行に占めるコメント行の割合
コードとコメントの両方を含む行がある場合、コメント率は1を超える場合がある。
コメント率は、20%(=0.20)以下程度が好ましい(多すぎるコメントは逆に可読性・理解性を下げるため)とする例もある。
ACSFJPVACSJPVACSFJPVACSJV 
PercentLackOfCohesion
クラス凝集度の欠如
LCOM2に100を乗じてノーマライズした値
LCOM2 = 1 - sum(mA) / (m * a)
m :クラス中のメソッド数
a :クラス中のフィールド数
mA :フィールドにアクセスしているメソッド数
sum(mA) :クラス中の各mAの総和
低い値ほど凝集性が高く好ましいとされる。
   CSJLCOM2 (Lack of Cohesion in Methods)
※LCOM*(LCOM3)とは異なる
SumCyclomatic
Cyclomatic 複雑度の総和
 CSJ CSJWMC (Weighted Methods Per Class)
SumCyclomaticModified
Modified Cyclomatic 複雑度の総和
 CSJ CSJ 
SumCyclomaticStrict
Strict Cyclomatic 複雑度の総和
 CSJ CSJ 
SumEssential
Essential 複雑度の総和
 CSJ CSJ