MISRA C++:2008 Rule 2-7-2

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

Описание

Управляйте определением

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

Объяснение

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

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

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

Реализация Polyspace

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

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

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

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

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

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

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

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

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

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

Примеры

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

#include <iostream>
/* class randInt {//Noncompliant
    public: 
      int getRandInt();
};
*/

int getRandInt();

/* Function to print random integers*/ 
void printInteger() {
    /* int val = getRandInt();//Noncompliant 
     * val++; 
     * std::cout << val;*/     
    std::cout << getRandInt();
}

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

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

Группа: лексические соглашения
Категория: необходимый
Введенный в R2020b