Вышел новый релиз PVS‑Studio — 7.23. В нём мы улучшили поддержку Qt Creator, увеличили стабильность работы PVS‑Studio Java, решили проблемы при анализе проектов, использующих NMake, добавили ряд новых диагностик и многое другое. Подробности в этой заметке.
Улучшения плагина для Qt Creator
В прошлом релизе мы выпустили плагин PVS‑Studio для Qt Creator. Выглядит он следующим образом (скриншот кликабельный):
Примерно в тот же момент вышел Qt Creator 9. Конечно, поддержать новую версию уже тогда мы бы не успели. Однако теперь плагин работает и с Qt Creator версий 9.0.*.
Более того, в релизе 7.23 стало возможно использовать плагин для Qt Creator не только под Windows и Linux, но и под macOS на архитектуре x86–64.
На данный момент плагин даёт возможность открывать отчёт, смотреть и фильтровать предупреждения, и т. п. В будущих релизах мы также планируем добавить в него возможность запуска анализа.
Документация к плагину доступна по ссылке.
Стабилизация Java-анализатора
Некоторое время назад мы обнаружили проблемы в работе нашего Java‑анализатора под системами семейства Unix. В ряде случаев анализатор сразу после запуска аварийно завершал работу и выдавал ошибку подобного вида:
Ошибка была связана с проблемами загрузки динамических библиотек. В релизе 7.23 она была устранена, и теперь Java разработчики могут спокойно использовать PVS‑Studio для анализа своих проектов под Unix системами:). Если же у вас всё ещё появляется эта или какая‑то другая ошибка, напишите нам, постараемся помочь.
Решение проблемы при анализе проектов, использующих NMake
При анализе CMake‑проекта, использующего NMake, в некоторых случаях появлялась ошибка следующего вида:
Данная проблема связана с ограничениями NMake на длину команды, однако, нам удалось её решить. Теперь анализатор успешно генерирует отчёт для всего проекта.
Если ранее вы пробовали PVS‑Studio и сталкивались с описанной ошибкой, то предлагаю вам скачать новую версию, в которой проблема решена.
Новые диагностики
C, C++
V1093. The result of the right shift operation will always be 0. The right operand is greater than or equal to the number of bits in the left operand.
V1094. Conditional escape sequence in literal. Its representation is implementation-defined.
C#
V3184. The argument's value is greater than the size of the collection. Passing the value into the 'Foo' method will result in an exception.
V3185. An argument containing a file path could be mixed up with another argument. The other function parameter expects a file path instead.
V3186. The arguments violate the bounds of collection. Passing these values into the method will result in an exception.
Интерактив
В этот раз наша команда сделала весьма залипательную игру «Рабочий день программиста»:
Сыграть в неё можно здесь. Осторожно — игра очень жизненная.
Также мы сделали рождественский квиз «Спаси Рождество от багов», который можно пройти здесь. В нём вам предстоит ответить на вопросы о рождественских историях багов в разных известных компаниях.
Отличная возможность вновь ощутить атмосферу праздника:).
Также предлагаю вам пройти наш небольшой опрос, в конце которого вы получите небольшой подарок.
Статьи
Для тех, кто пишет на C++:
Для тех, кто пишет на C#:
PVS-Studio и protobuf-net: лучшие предупреждения в один клик
Помоги компилятору, и он поможет тебе. Тонкости работы с nullable reference типами в C#
.NET 7: разбираем ошибки и подозрительные места в исходниках
Разное:
**
Загрузить последнюю версию PVS‑Studio можно здесь.
Если хотите получать пресс‑релизы по почте, подписывайтесь на рассылку.
Если хотите поделиться этой статьей с англоязычной аудиторией, то прошу использовать ссылку на перевод: Nikita Lipilin. PVS‑Studio 7.23: Qt Creator 9 plugin, and more.
GAlex1980
Решил ради праздного любопытства попробовать PVS-Studio в Qt. Но, CompilerCommandsAnalyzer.exe не воспринимает "PVS-Studio Free" лицензию. А так, в целом, интеграция с Qt это прекрасно.
Firensis Автор
Хм, довольно странно, что возникли какие-то проблемы с CompilerCommandsAnalyzer. Возможно, я не совсем понял ваш сценарий. Буду благодарен, если напишите нам тут, мы бы попробовали разобраться в данном вопросе.
GAlex1980
Доброй ночи. В этой проблеме виноват я. Я все пути в аргументах команды CompilerCommandsAnalyzer (путь к лицензии, логфайлу, исключаемые пути) экранировал при помощи одинарных ковычек. Заменил их на двойные и программа успешно прочитала файл лицензий.
Приношу извинения за ложную информацию.
Firensis Автор
Нет проблем :). Если что, пишите, подскажем