AUTOSAR C++14 Rule A2-7-2

Разделы кода не должны «комментироваться»

Описание

Определение правила

Разделы кода не должны «комментироваться».

Объяснение

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

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

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

Реализация Polyspace

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

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

  • Комментарии Doxygen, начинающиеся с /**, /*!, /// или //!.

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

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

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

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

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

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

Если вы ожидаете нарушения правил, но не видите его, обратитесь к разделу «Стандартные нарушения кодирования не отображаются».

Примеры

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

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

int getRandInt();

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

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

#include <iostream>
int getRandInt();

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

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

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

Группа: Лексические конвенции
Категория: Необходимый, Неавтоматизированный
Введенный в R2020b