Граница цикла является числовым значением вместо символьной константы
Этот дефект возникает, когда вы используете числовое значение вместо символьной константы для контура for, while или do-while цикл.
Жестко закодированная контур цикла вызывает следующие проблемы:
Жестко закодированный цикл контура делает код уязвимым к атакам отказа в обслуживании, когда цикл включает в себя длительный расчет или выделение ресурсов.
Жестко закодированная контур цикла увеличивает вероятность ошибок и затрат на обслуживание. Если изменение политики требует, чтобы разработчики изменили контур цикла, они должны изменять каждое вхождение контура в коде.
Для образца контура цикла составляет 10000 и представляет максимальное количество клиентских подключений, поддерживаемых в приложении сетевого сервера. Если сервер поддерживает больше клиентов, необходимо изменить все образцы контура цикла в коде. Даже если контур цикла возникает один раз, вы должны искать числовое значение 10000 в вашем коде. Числовое значение может происходить в местах, отличных от границы цикла. Необходимо просмотреть эти места, прежде чем вы найдете границу цикла.
Используйте символьное имя вместо жестко закодированной константы для контура цикла. Символические имена включают const-квалифицированные переменные, enum константы или макросы enum. константы рекомендованы, поскольку:
Макросы заменяются их постоянными значениями после предварительной обработки. Поэтому они могут показать buffer size.
enum константы известны во время компиляции. Поэтому компиляторы могут выделять им хранилище более эффективно.
const-квалифицированные переменные обычно известны во время исполнения.
| Группа: Хорошая практика |
| Язык: C | C++ |
| По умолчанию: Off |
Синтаксис командной строки: HARD_CODED_LOOP_BOUNDARY |
| Влияние: Низкое |
| ИДЕНТИФИКАТОР CWE: 547 |