FAQ

QA・C/QA・C++

メトリックスに関する

ID.3

Q. STSCT、および STECTのカウント方法を教えてください。


ファイルメトリックス「宣言した静的変数の数:STSCT」は、製品概要書によりますと、宣言したスタティック変数の数とありますが、実際どのようにカウントするのでしょうか?(グローバルも含めてでしょうか?コーディング例も例示下さい)
同じく、ファイルメトリックス「宣言した外部参照変数の数:STECT」も、どのようにカウントするのか教えてください(コーディング例も例示ください)

A.


宣言した静的変数の数、宣言した外部参照変数の数をカウントします。
Version: 4.2J
OS: SunOS 4.x, SunOS 5.x, HP-UX 9.x, HP-UX 10.x, Windows 95/98/NT 4.0

静的変数の総数 (STSCT) は、ファイルスコープで static という記憶クラス指定子を使用して宣言されている識別子 (変数、関数) の数です。

また、宣言した外部変数の総数が、STECTとしてカウントされます。

前者、後者のメトリックとも1つのファイルが有効範囲(スコープ)です。
外部変数の場合、同じ変数名でいくつのファイルに宣言されている場合、それぞれのファイルで STECTにカウントされます。

また、オプション -ppm(メトリックスを測定するタイミングをプリプロセスの前後どちらにするか指定するオプション)の設定によって、これらの値は変化します。

-ppm-の場合(メトリックスをプリプロセス前に測定)

  宣言されている静的変数の総数 (STSCT) 1
   宣言されている外部変数の総数 (STECT) 2

-ppm-の場合(メトリックスをプリプロセス後に測定)

  宣言されている静的変数の総数 (STSCT) 3
   宣言されている外部変数の総数 (STECT) 3

(例)

test.h

1: int DDD;
2: static int EEE;
3: static int bar(void);

test.c

8: #include "test.h"
9:
10: static int AAA;
11: extern int BBB;
12: int CCC;
13:
14: int foo(void);
15:
16: int foo(void)
17: {
18:  static int x;  /* 関数スコープの static識別子は数えない */
19:
20:  return 1;
21: }


<< メトリックスに関するに関するFAQ一覧へ戻る