PVS-Studio 8.01 получил поддержку JDK 25 и Go 1.27, три новых Java-правила безопасности и сверку SAST-диагностик с OWASP Benchmark for Java. Для команд, которые обновляют стек и одновременно пытаются не превратить security-review в ручную археологию, релиз важен по вполне прикладной причине: анализатор должен понимать свежий код раньше, чем тот успеет доехать до продакшена.
О выпуске сообщает Habr / Новости. Главный акцент разработчики сделали на Java-направлении: они проверили правила статического анализа безопасности на OWASP Benchmark for Java — наборе тестовых кейсов для оценки инструментов поиска уязвимостей. На реальных репозиториях измерить полноту таких проверок сложно: неизвестно, сколько дефектов уже спрятано в коде и какие из них инструмент просто не заметил. Бенчмарк не заменяет боевую эксплуатацию, но позволяет увидеть пробелы в диагностике до того, как их найдёт атакующий или аудит.
Java, Go и безопасность без паузы на обновление
Поддержка JDK 25 выглядит особенно заметной, потому что эта версия относится к LTS-выпускам Java. Обычно именно на такие релизы крупные команды планируют миграции: обновляют библиотеки, CI, плагины IDE и правила проверки кода. Если статический анализатор отстаёт от платформы, обновление превращается в выбор между новым JDK и привычным контуром контроля качества. В PVS-Studio 8.01 анализатор Java заявлен как совместимый с JDK 25, а анализатор Go — с Go 1.27.
Для Java добавлены три правила с OWASP-маркировкой. V5341 ищет создание cookie без атрибута Secure: при передаче по небезопасному соединению это может открыть доступ к чувствительным данным. V5342 предупреждает, когда потенциально недоверенные данные сохраняют в объекте, который затем может стать источником доверенных данных. V5343 отмечает использование криптографически слабого генератора случайных чисел для чувствительных значений. Это не набор «магических» защитных кнопок: каждое срабатывание нужно разбирать в контексте приложения. Но такие места часто остаются незаметными на обычном code review, особенно в давно живущих сервисах с неоднородным кодом.
Проверка по OWASP Benchmark в данном случае важнее самой формулировки «соответствия бенчмарку». Рынок SAST давно живёт в напряжении между двумя плохими сценариями: инструмент либо пропускает опасные конструкции, либо заваливает команду шумом. Разработчики PVS-Studio говорят, что результаты бенчмарка помогли закрыть пробелы в security-части Java-анализатора. Для пользователей это повод не просто включить новые правила, а посмотреть на их точность на собственных сервисах, настроить baseline и определить, какие типы уязвимостей должны блокировать сборку.
Больше контекста в отчётах и тоньше настройки
В Windows-утилите PVS-Studio_Cmd.exe для MSBuild-проектов появилась ещё одна полезная деталь: JSON-отчёт теперь сохраняет конфигурации проектов, с которыми выполнялся анализ. В fullhtml-отчёте, создаваемом PlogConverter.exe, предупреждения группируются по конфигурации анализа. Для многоплатформенных решений и проектов с несколькими сборочными профилями это снимает один неприятный вопрос из обсуждения дефекта: в какой именно конфигурации он найден. Без этой информации воспроизведение предупреждения нередко занимает больше времени, чем его исправление.
Plog Converter также научился фильтровать результаты по номерам CWE и идентификаторам SAST. Это пригодится командам, которые выстраивают отчётность вокруг ГОСТ Р 71207—2024: критические по этому стандарту срабатывания имеют SAST-идентификатор с префиксом SEC. Практический смысл здесь не в очередном фильтре, а в возможности выделить приоритетный слой проблем для безопасности, комплаенса или внутреннего SLA, не смешивая его с более широким списком замечаний к качеству кода.
Отдельный блок изменений посвящён конфигурации. В JavaScript- и TypeScript-анализаторе можно задавать max-old-space-size — лимит памяти для Node.js-сервера анализатора — через pvs-settings.toml или pvs-js.exe. Для больших монорепозиториев это способ сделать потребление памяти предсказуемее в CI. В PVS-Studio_Cmd.exe пути к кэшам зависимостей разрешено задавать относительно файла .pvsconfig, что упрощает перенос настроек между рабочими машинами и агентами сборки. В C и C++ расширены параметры диагностических правил: можно, в частности, вручную обозначать недорогие для копирования типы и учитывать целевую платформу.
Из частных, но показательных изменений — настройка правила V719. Теперь можно отдельно игнорировать ветку default и небольшие enum, задавать значения-исключения и допустимое число игнорируемых констант. Такие опции полезны не потому, что позволяют «выключить неудобное предупреждение», а потому, что дают команде возможность описать реальные соглашения проекта. Хороший статический анализ не требует подгонять весь код под усреднённую модель инструмента; он должен уметь аккуратно адаптироваться к обоснованным ограничениям конкретной кодовой базы.
Релиз не обошёлся без изменения, которое может задеть автоматизацию установки в Windows. Если установщик не смог установить плагины для Visual Studio, он теперь возвращает код 100. Для сохранения прежнего поведения предусмотрен флаг skipVSIXInstallErrorCode. Тем, у кого установка PVS-Studio включена в скрипты развёртывания или образы сборочных агентов, стоит проверить обработку кодов возврата до планового обновления: иначе проблема с плагином внезапно будет выглядеть как падение всего пайплайна.
PVS-Studio 8.01 показывает характерный для рынка статического анализа сдвиг: поддержка новых версий языков уже не отдельный бонус, а базовое требование, тогда как ценность всё чаще создают качество security-диагностик, удобная классификация находок и интеграция в CI. Следующий практический вопрос для команд — смогут ли они встроить эти проверки в процесс так, чтобы SEC-предупреждения действительно приводили к исправлениям, а не оседали в очередном HTML-отчёте, который никто не открывает.