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