Мы используем куки, чтобы пользоваться сайтом было удобно.
Хорошо
to the top
>
>
>
V6131. Casting to a type with a...
menu mobile close menu
Проверка проектов
Дополнительная информация
toggle menu Оглавление

V6131. Casting to a type with a smaller range will result in an overflow.

26 Май 2025

Анализатор обнаружил приведение целочисленного значения к типу данных с меньшим размером, которое приводит к переполнению. Это происходит из-за того, что исходное значение выходит из допустимого диапазона целевого типа.

Пример случая с переполнением:

static final long MAX_CHUNK_SIZE = 4L * 1024 * 1024 * 1024;

void makeChunks(int fileSize) {
    int chunkSize = Math.min(fileSize, (int) MAX_CHUNK_SIZE);

    ....
}

Здесь вычисление 4L * 1024 * 1024 * 1024 равняется 4,294,967,296 (2^32), которое после приводится к int. Это значение выходит за пределы допустимого диапазона int ([-2^31..2^31-1]). В результате значение становится 0 вместо ожидаемого максимума.

Чтобы избежать переполнения, в данном случае необходимо использовать тип long для всех переменных и параметров, участвующих в вычислениях:

static final long MAX_CHUNK_SIZE = 4L * 1024 * 1024 * 1024;

void makeChunks(long fileSize) {
    long chunkSize = Math.min(fileSize, MAX_CHUNK_SIZE);

    ....
}

Выявляемые диагностикой ошибки классифицируются согласно ГОСТ Р 71207–2024 как критические и относятся к типу: Ошибки целочисленного переполнения и некорректного совместного использования знаковых и беззнаковых чисел.

Данная диагностика классифицируется как:

close form

Заполните форму в два простых шага ниже:

Ваши контактные данные:

Шаг 1
Поздравляем! У вас есть промокод!

Тип желаемой лицензии:

Шаг 2
Team license
Enterprise license
close form
Запросите информацию о ценах
Новая лицензия
Продление лицензии
--Выберите валюту--
USD
EUR
RUB
close form
Бесплатная лицензия PVS‑Studio для специалистов Microsoft MVP
close form
Для получения лицензии для вашего открытого
проекта заполните, пожалуйста, эту форму
close form
Я хочу принять участие в тестировании
* Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

close form
check circle
Ваше сообщение отправлено.

Мы ответим вам на


Если вы так и не получили ответ, пожалуйста, проверьте, отфильтровано ли письмо в одну из следующих стандартных папок:

  • Промоакции
  • Оповещения
  • Спам