Number of Instructions

Количество инструкций на функцию

Описание

Эта метрика измеряет количество инструкций в теле функции.

Рекомендуемый верхний предел для этой метрики равен 50. Для получения более модульного кода попробуйте применить верхний предел для этой метрики.

Для обеспечения пределов на метрики смотрите Compute Code Complexity Metrics.

Подробные данные расчетов

Метрика вычисляется с помощью следующих правил:

  • Простой оператор, заканчивающийся ; является одной инструкцией.

    Если оператор пуст, он не учитывается как инструкция.

  • Объявление переменной рассчитывает как одну инструкцию, если оба из этих условий верны:

    • Переменная не является статической.

    • Переменная инициализирована.

  • Управляйте операторами потока, такими как if, for, break, goto, return, switch, while, do-while считайте как одну инструкцию.

  • Следующие инструкции сами по себе не учитываются:

    • Начало блока кода

      Например, следующая команда считается одной:

      {
          var = 1;
      }

    • Метки

      Например, следующее отсчитывается как две инструкции. The case метки не учитываются как инструкции.

      switch (1) {  // Instruction 1: switch 
          case 0: 
          case 1: 
          case 2: 
          default: 
          break;    // Instruction 2: break 
       } 

Примеры

расширить все

int func(int* arr, int size) {
    int i, countPos=0, countNeg=0, countZero = 0;
    for(i=0; i<size; i++) {
        if(arr[i] >0)
            countPos++;
        else if(arr[i] ==0)
            countZero++;
        else
            countNeg++;
    }
}

В этом примере количество инструкций в func равен 9. Инструкции:

  1. countPos=0

  2. countNeg=0

  3. countZero=0

  4. for(i=0;i<size;i++) { ... }

  5. if(arr[i] >=0)

  6. countPos++

  7. else if(arr[i]==0)

    Конечная else учитывается как часть if-else инструкция.

  8. countZero++

  9. countNeg++

Примечание

Эта метрика отличается от количества исполняемых линий. Для образца:

  • for(i=0;i<size;i++) содержит 1 инструкцию и 1 исполняемую линию.

  • Следующий код имеет 1 инструкцию, но 3 исполняемые линии.

    for(i=0;
        i<size;
        i++)

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

Группа: Функция
Акроним: STMT
ЕГО Метрика: Да