Спасибо. Приятно видеть Ваш интерес. Также очень рекомендую попробовать пункт меню "
What Is It?" в меню анализатора. Он именно для подобных вопросов.
Теперь по порядку.
1) Конкретно в данном случае 0xFFFFFFFF действительно не является ошибкой. Однако наличие этой константы с высокой вероятностью свидетельствует о наличии ошибки. Хорошую демонстрацию можно увидеть в статье "
Коллекция примеров 64-битных ошибок в реальных программах" (Пример 10. Магические числа в качестве параметров):
HANDLE hFileMapping = CreateFileMapping(
(HANDLE) 0xFFFFFFFF,
NULL,
PAGE_READWRITE,
dwMaximumSizeHigh,
dwMaximumSizeLow, name);
2) Второй пример "pER != LPVOID(0xFFFFFFFF)" почти на 100% содержит ошибку! 64-битыный указатель пытаются сравнить с аналогом -1, а 0xFFFFFFFF вовсе не -1. Рассмотрим код:
void *p = LPVOID(0xFFFFFFFF);
ptrdiff_t x = ptrdiff_t(p);
// x == 0x00000000ffffffff
Дело в том, что FFFFFFFF имеет тип unsigned (так как в int это значение не помещается). А следовательно при расширении до 64-бит, оно превращается не в -1 (0xffffffff ffffffff), а в 4294967295 (0x00000000ffffffff).
3) По поводу swprintf_s ложное срабатывание. С замечанием согласен, учту. Пока можно выключить V111 или использовать фильтры (ввести в исключения строку "swprintf_s"). Еще в конце строки можно написать комментарий "//-V111", чтобы подавить предупреждение.
4) Здесь "static const int WebOperators = 4;" конечно тоже ложное срабатывание, но тут невозможно понять, может быть ошибка или нет. Вдруг тут написано "static const int SizeOfPointer = 4;".
5) "это предположение как минимум нужно сделать отключаемым". Все предупреждения отключаемы. Имеются механизмы фильтрации. Можно писать подавляющие комментарии. Есть еще неописанный механизм пометки типов, которые не могут образовывать огромные массивы. Например, массив из HWND не может содержать больше 2 миллиардов элементов.
Станете нашим клиентом, мы подробнее поработаем с Вами, чтобы сократить количество ложных срабатываний и сделать процесс проверки приятным.