Вышел новый релиз 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 можно здесь.

Если хотите получать пресс‑релизы по почте, подписывайтесь на рассылку.

Если хотите поделиться этой статьей с англоязычной аудиторией, то прошу использовать ссылку на перевод: Nikita Lipilin. PVS‑Studio 7.23: Qt Creator 9 plugin, and more.

Комментарии (4)


  1. GAlex1980
    00.00.0000 00:00

    Решил ради праздного любопытства попробовать PVS-Studio в Qt. Но, CompilerCommandsAnalyzer.exe не воспринимает "PVS-Studio Free" лицензию. А так, в целом, интеграция с Qt это прекрасно.


    1. Firensis Автор
      00.00.0000 00:00

      Хм, довольно странно, что возникли какие-то проблемы с CompilerCommandsAnalyzer. Возможно, я не совсем понял ваш сценарий. Буду благодарен, если напишите нам тут, мы бы попробовали разобраться в данном вопросе.


      1. GAlex1980
        00.00.0000 00:00

        Доброй ночи. В этой проблеме виноват я. Я все пути в аргументах команды CompilerCommandsAnalyzer (путь к лицензии, логфайлу, исключаемые пути) экранировал при помощи одинарных ковычек. Заменил их на двойные и программа успешно прочитала файл лицензий.

        Приношу извинения за ложную информацию.


        1. Firensis Автор
          00.00.0000 00:00

          Нет проблем :). Если что, пишите, подскажем