MISRA C:2012 Dir 4.4

Разделы кода не должны быть то, " закомментировал"

Описание

Направляющее определение

Разделы кода не должны быть то, " закомментировал".

Объяснение

C комментарии заключен в /* */ не поддерживайте вложение. Комментарий, начинающийся с /* концы в первом */ даже когда */ предназначается как конец более позднего вложенного комментария. Если раздел кода, который комментируется уже, содержит комментарии, можно столкнуться с ошибками компиляции (или по крайней мере закоментировать меньше кода, чем вы предназначаете).

Комментирование кода не является хорошей практикой. Закоментированный код может остаться из синхронизации с окружающим кодом, не вызывая ошибки компиляции. Позже, если вы не комментируете код, можно столкнуться с неожиданными проблемами.

Используйте комментарии только, чтобы объяснить аспекты кода, которые не очевидны из самого кода.

Реализация Polyspace

Средство проверки использует внутреннюю эвристику, чтобы обнаружить закоментированный код. Например, символы, такие как #, ;, { или } укажите на комментарии, которые могут потенциально содержать код. Эти комментарии затем оценены против других метрик, чтобы определить вероятность кода, подменяющего комментарием. Например, несколько последовательных слов без промежуточного символа уменьшают эту вероятность.

Средство проверки не отмечает следующие комментарии, даже если они содержат код:

  • Доксиджен комментирует начало с /**, /*!, /// или //!.

  • Комментарии, которые несколько раз повторяют тот же символ, например, символ = здесь:

    /* =====================================
     * A comment
     * =====================================*/

  • Комментарии к первой линии файла.

  • Комментарии, которые смешивают стиль C (/* */) и стиль C++ (//).

Средство проверки полагает, что эти комментарии предназначаются для целей документации или вводимый сознательно с некоторой предусмотрительностью.

Поиск и устранение проблем

Если вы ожидаете нарушение правила, но не видите его, обратитесь к Кодированию Стандартных Нарушений, Не Отображенных.

Примеры

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

#include <stdlib.h>

int32_t getRandInt();
void print32_t(int32_t);

/* Function to print32_t random int32_tegers*/ 
void print32_tInteger() {
    /* int32_t val = getRandInt(); 
     * val++; 
     * print32_t(val); */     
    print32_t(getRandInt());
}

Этот пример содержит блок закоментированного кода, который нарушает правило.

Проверяйте информацию

Группа: проект Кода
Категория: консультация
Категория AGC: консультация
Введенный в R2020b