Помимо увеличения количества диагностик с каждым новым релизом анализатор PVS-Studio развивается и в инфраструктурном плане. В данном случае это плагин для среды разработки JetBrains CLion, межмодульный анализ С++ проектов, ускорение работы ядра C# анализатора.
PVS-Studio теперь можно удобно использовать в среде разработки JetBrains CLion с помощью плагина для данной IDE. Подробнее о том, с чем мы столкнулись при разработке CLion плагина, можно почитать в нашем блоге. А здесь можно посмотреть на все IDE от JetBrains, работу с которыми уже поддерживает PVS-Studio.
Поскольку это первый релиз плагина для CLion, то повышена вероятность, что вы натолкнётесь на какие-то неудобства в использовании или ошибки. В этом случае просим не стесняться и сразу написать нам. Мы постараемся помочь, подсказать или исправить недоработки. Заранее спасибо.
В С++ анализатор PVS-Studio добавлена поддержка межмодульного анализа. В этом режиме анализатор при разборе кода учитывает результаты вызовов методов, объявленных в других единицах трансляции. Межмодульный анализ также есть в C# (на уровне проектов) и Java (на уровне пакетов) анализаторах PVS-Studio. В С++ анализаторе данный режим не активирован по умолчанию, т.к. он может замедлять скорость анализа. В нашем блоге можно почитать подробнее о его использовании и особенностях его реализации.
Скорость анализа в C# анализаторе PVS-Studio была увеличена до 2 раз при анализе крупных (более 10 000 исходных файлов) проектов. Также C# анализатор теперь значительно эффективнее использует многоядерные процессоры. В нашем блоге мы поделились методиками, которые мы использовали для ускорения работы C# анализатора и которые могут подойти для других классов .NET приложений:
Как видно из списка, приведённого ниже, большинство реализуемых сейчас диагностик предназначено для покрытия стандарта MISRA C. Мы сосредоточились на его поддержке, и сейчас покрытие стандарта составляет 60%. В ближайшее время мы планируем увеличить поддержку как минимум до 80%, а также реализовать поддержку стандарта проверки соответствия кода MISRA C Compliance.
Помимо этого, мы продолжаем развивать возможности анализатора в выявлении потенциальных уязвимостей. Теперь PVS-Studio обеспечивает покрытие 6 из 10 категорий в OWASP Top 10 — списке наиболее распространённых и опасных угроз защищённости Web-приложений. В этом релизе мы добавили в анализатор диагностики для категорий A5 Broken Access Control, A7 Cross-Site Scripting (XSS) и A8 Insecure Deserialization. В будущих релизах в этом году мы планируем увеличить покрытие до 9 категорий.
В плагин PVS-Studio для SonarQube добавлена поддержка версии SonarQube 8.9 LTS.
В C++ анализаторе PVS-Studio теперь можно отключать диагностические правила для заданного диапазона строк в исходном файле. См. раздел "Включение и выключение определенных диагностик для блока кода" в главе документации, касающейся подавления ложных срабатываний.
Один из наших пользователей написал заметку об опыте интеграции анализатора PVS-Studio с uVision Keil. "Из коробки" такая возможность не предоставляется, но если хочется, то всё можно организовать :). История получилась занятной, и мы рекомендуем познакомиться с ней даже тем, кто не использует uVision Keil: Интеграция PVS-Studio в uVision Keil. Цитата из статьи:
Так продолжалось до тех пор, пока однажды я не потратил 3 дня на отладку очень неприятного бага, который отличался совершенно дикими проявлениями в случайные моменты времени. Баг оказался банальным чтением по нулевому указателю (которое на микроконтроллерах зачастую не приводит ни к каким мгновенным ошибкам типа Access Violation). Быстренько убедившись, что PVS-Studio находит этот баг, я понял, что хватит это терпеть! – и решил-таки заняться интеграцией с Keil'ом.