メインコンテンツ

コメント密度

ステートメント数に対するコメント数の比率

説明

このメトリクスは、ステートメントに対するコメントの比率をパーセントで示します。

Hersteller Initiative Software (HIS) コード複雑度標準に基づいて次のようになります。

  • Polyspace® は次のコメントを無視します。

    • 最初のステートメントよりも前に含まれているコメント。たとえば、次のコードでは最初のコメントが無視されます。

      // This function implements a hashtble
      extern void hashdef();

    • ソース コード行で始まるコメント。たとえば、次のコメントはメトリクスのコメントとしてはカウントされず、代わりにステートメントとしてカウントされます。

       remove(i); // Remove employee record
    • 複数行にわたるコメントの最初の行以外のコメント。つまり、複数行にわたるコメントも、1 つとしてカウントされます。たとえば以下のような場合、コメント数は 1 つと見なされます。

      // This function implements
      // regular maintenance on an internal database

  • Polyspace は、コードの前処理後にこのメトリクスを計算します。コードにマクロが含まれている場合は、コメント密度の計算前にマクロが展開されます。

  • Polyspace は以下のステートメントをカウントしません。

    • 構造体フィールドとクラス メンバーの宣言

    • テンプレート宣言

    • クラス内のクラス メンバー関数の定義

  • ステートメントは一部の例外を除き、通常セミコロンで終了します。例外として、for ループまたは構造体フィールド宣言内のセミコロンがあります。たとえば、for ループの小かっこ内の初期化、条件、およびインクリメントは 1 つのステートメントとしてカウントされます。次のステートメントは 1 つのステートメントとしてカウントされます。

    for(i=0; i <100; i++)
    初期化時にループ カウンターも宣言する場合、このステートメントは 2 つのステートメントとしてカウントされます。

Polyspace は、インクルードされるヘッダー ファイルに対してこのメトリクスを計算しません。

このメトリクスの推奨下限は 20 です。コードを読みやすくするには、5 つのステートメントごとに少なくとも 1 つのコメントを入れてください。このメトリクスの値の上限は 100 です。この値は、コードに含まれているコメントの数がステートメントよりも多い可能性があることを示します。

メトリクスに制限を適用するには、Polyspace を使用したコード複雑度メトリクスの計算を参照してください。

すべて展開する

    struct record {
    char name[40];
    long double salary;
    int isEmployed;
};

struct record dataBase[100];

struct record fetch(void);
void remove(int);

void maintenanceRoutines() {
// This function implements
// regular maintenance on an internal database
    int i;
    struct record tempRecord;

    for(i=0; i <100; i++) {
        tempRecord = fetch(); // This function fetches a record
        // from the database
        if(tempRecord.isEmployed == 0)
            remove(i);         // Remove employee record
        //from the database
    }
}

この例では、コメント密度は 38 です。計算は次の表に示すように行われます。

コード累積コメント数累積ステートメント数
struct record {
    char name[40];
    long double salary;
    int isEmployed;
};

01
struct record dataBase[100];
struct record fetch(void);
void remove(int);
04
void maintenanceRoutines() {
04
// This function implements
// regular maintenance on an internal database
14
int i;
struct record tempRecord;
16
for(i=0; i <100; i++) {
16
 tempRecord = fetch(); // This function fetches a record
        // from the database
27
if(tempRecord.isEmployed == 0)
            remove(i);         // Remove employee record
        //from the database
  }
}
38

3 つのコメントと 8 つのステートメントがあります。コメント密度は 3/8*100 =38 です。

メトリクス情報

グループ: ファイル
頭字語: COMF
HIS メトリクス:あり