Comment Density

Отношение количества комментариев к количеству операторов

Описание

Примечание

Используйте Bug Finder вместо Code Prover для вычислительных метрик кода. Поддержка вычислительных метрик кода в Code Prover будет удалена в будущем релизе. См. Вопросы совместимости.

Эта метрика задает отношение комментариев к операторам, описанным как процент.

На основе стандарта сложности кода Hersteller Initiative Software (HIS):

  • Polyspace® игнорирует эти комментарии:

    • Комментарии, которые включены перед первым оператором. Например, в этом коде, первый комментарий проигнорирован:

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

    • Комментарии, которые запускаются со строки исходного кода. Например, этот комментарий не рассчитывает как комментарий для метрики, но рассчитывает как оператор вместо этого:

       remove(i); // Remove employee record
    • Комментарии, которые появляются после первой линии многострочного комментария. Таким образом, мультилиния комментирует количество как один комментарий. Например, это рассматривается одним комментарием:

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

  • Polyspace вычисляет эту метрику после предварительной обработки кода. Если ваш код содержит макросы, они расширены прежде, чем вычислить плотность комментария.

  • Polyspace не считает эти операторы:

    • Поле Structure и объявления члена класса

    • Объявления шаблона

    • Определение функции члена класса в классе

  • Оператор обычно заканчивается точкой с запятой, но за некоторыми исключениями. Исключения включают точки с запятой в for циклы или объявления поля структуры. Например, инициализация, условие и шаг в круглых скобках в for цикл считается как один оператор. Этот оператор рассчитывает как отдельный оператор:

    for(i=0; i <100; i++)
    Если вы также объявляете счетчик цикла при инициализации, тот оператор рассчитывает как два оператора.

Polyspace не вычисляет эту метрику для включенных заголовочных файлов.

Рекомендуемый нижний предел для этой метрики равняется 20. Для лучшей удобочитаемости вашего кода поместите по крайней мере один комментарий для каждых пяти операторов. Значение этой метрики фиксируется к 100. Такое значение указывает, что ваш код может содержать больше комментария, чем операторы.

Примеры

развернуть все

    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*100 = 38.

Метрическая информация

Группа: файл
Акроним: COMF
Метрика HIS: да

Вопросы совместимости

развернуть все

Не рекомендуемый запуск в R2021b

Смотрите также