Главная » Хабрахабр » PVS-Studio 7.00

PVS-Studio 7.00

PVS-Studio C#\Java\C++Сегодня важный день – после 28 релизов шестой версии мы выпускаем PVS-Studio 7.00, где ключевым новшеством является поддержка языка Java. Однако за 2018 год накопилось много других важных изменений, касающихся С++, С#, инфраструктуры и поддержки стандартов кодирования. Поэтому предлагаем вашему вниманию заметку, которая обобщает основные изменения, произошедшие в PVS-Studio за последнее время.
PVS-Studio — это инструмент для выявления ошибок и потенциальных уязвимостей в исходном коде программ, написанных на языках С, C++, C# и Java. Работает в среде Windows, Linux и macOS.

Возможности анализатора хорошо демонстрирует обширная коллекция ошибок в коде, найденных нами в процессе проверки различных отрытых проектов.

Это поддержка в анализаторе языка Java, к которому мы давно готовились. Начнём мы с изменения, из-за которого, собственно, и было решено сменить номер версии с 6.x на 7.x.

Java

Самое важное в Java анализаторе то, что он появился :). Приглашаем Java разработчиков скачать инструмент и проверить проекты, над которыми они работают.

Мы сделали доступными для пользователей самые популярные способы интеграции анализатора в сборочную систему:

  • Плагин для Maven.
  • Плагин для Gradle.
  • Плагин для IntelliJ IDEA.

В случае использования самописных сборочных систем имеется возможность запускать анализатор напрямую, перечислив исходники и classpath.

Подробную информацию о всех способах запуска анализатора вы можете найти на странице документации "Как запустить PVS-Studio Java".

Мы не могли обойти стороной платформу контроля качества кода SonarQube, так популярную среди Java разработчиков, поэтому добавили поддержку языка Java в наш плагин для SonarQube.

C, C++

В 2018 году наша команда активно поработала над развитием C++ анализатора. Появилось много новых диагностик, а также усовершенствованы алгоритмы, позволяющие собирать и обрабатывать информацию, извлекаемую из синтаксического дерева.

CWE, CERT

CWE — это система классификации потенциальных и подтверждённых уязвимостей. Сообщения C++ анализатора (как и C# анализатора) были классифицированы согласно Common Weakness Enumeration (CWE). Она поддерживается сообществом с целью выявления проблем программного обеспечения и создания автоматизированных инструментов, которые могут использоваться для выявления и устранения этих проблем.

SEI CERT Coding Standards — это набор стандартов написания программного обеспечения (ПО) на языках C, C++, Java и Perl, разрабатываемых координационным центром CERT (CERT Coordination Center, CERT/CC) для повышения надёжности и безопасности ПО. Дополнительно сообщения были классифицированы согласно CERT C Coding Standard и CERT C++ Coding Standard.

Классификация C и C++ диагностик согласно этим предупреждениям позволяет использовать PVS-Studio как SAST решение.

MISRA

Благодаря поддержке этих стандартов анализатор стало возможным эффективно использовать для улучшения безопасности, переносимости и надежности программ для встраиваемых систем. В 2018 году статический анализатор кода PVS-Studio начал классифицировать свои предупреждения согласно стандартам MISRA C и MISRA C++.

Подробнее: "PVS-Studio: поддержка стандартов кодирования MISRA C и MISRA C++".

Поддержка MISRA стала актуальной в связи с развитием в анализаторе поддержки различных embedded систем, о чём будет рассказано в следующем разделе статьи.

Embedded Development

В 2018 году в анализаторе PVS-Studio были поддержаны:

  • Windows. IAR Embedded Workbench, C/C++ Compiler for ARM C, C++
  • Windows/Linux. Keil µVision, DS-MDK, ARM Compiler 5/6 C, C++
  • Windows/Linux. Texas Instruments Code Composer Studio, ARM Code Generation Tools C, C++
  • Windows/Linux/macOS. GNU Arm Embedded Toolchain, Arm Embedded GCC compiler, C, C++

Две заметки на тему поддержки embedded систем:

  1. Статический анализатор кода PVS-Studio 6.22 адаптирован для ARM-компиляторов (Keil, IAR).
  2. В PVS-Studio появилась поддержка GNU Arm Embedded Toolchain.

Расширение пользовательских аннотаций

Анализатор очень хорошо умеет искать ошибки с использованием стандартных функций, но в пользовательском коде было невозможно применять такие алгоритмы до недавнего времени. Иногда в проектах используются собственные реализации разных системных функций, например, memcpy, malloc и т.п. Теперь с помощью аннотации V_FUNC_ALIAS вы можете ставить имена своих функций в соответствие системным.

Формат комментария:

//V_FUNC_ALIAS, implementation:sysf, function:f, namespace:ns, class:c

  • Ключ implementation — задает имя стандартной функции, для которой определяется псевдоним.
  • Ключ function — задает имя псевдонима. Сигнатура функции, имя которой указано в этом ключе, должна совпадать с сигнатурой функции, указанной в ключе implementation.
  • Ключ class — имя класса. Может отсутствовать.
  • Ключ namespace — имя пространства имен. Может отсутствовать.

Рассмотрим пример:

//V_FUNC_ALIAS, implementation:memcpy, function:MyMemCpy

Теперь анализатор будет обрабатывать вызовы функции MyMemCpy так же, как вызовы memcpy. Например, на такой код будет выдаваться предупреждение V512:

int buf[] = ;
int out[2];
MyMemCpy (out, buf, 4 * sizeof(int)); // Warning!

C#

В этом году существенных изменений C# анализатора не было. Были отдельные улучшения диагностик и правки недочётов. Сообщения C# анализатора, как и C++ анализатора были классифицированы согласно Common Weakness Enumeration (CWE). Соответствие C# диагностик с идентификаторами CWE приведены здесь (см. диагностики с номерами 3xxx).

Планируется разработка новых диагностик и усовершенствование механизма анализа потока данных (Data-Flow Analysis). Мы планируем вернуться к более активному развитию C# анализатора в 2019 году.

Конвертеры отчётов

Утилиты PlogConverter.exe и plog-converter входят в дистрибутивы PVS-Studio для Windows и Linux/macOS соответственно. Также исходных код этих утилит доступен на GitHub.

С появлением PVS-Studio для Java мы переработали подсветку кода для C, C++, C# и добавили Java в формате FullHtml (для веб-браузера).

Также для отчёта в этом формате был добавлен столбец MISRA:

PVS-Studio, MISRA

Как и CWE ID, столбец MISRA является опциональным и включается исследователями безопасности кода при изучении результатов анализа.

Плагины SonarQube

1. Полное обновление

Это позволило добавить новый функционал и обеспечить совместимость с SonarQube 7.x. Мы переписали наши плагины с использованием нового API. 7 LTS. Минимальной поддерживаемый версией теперь является SonarQube 6.

PVS-Studio для Java 2.

Теперь вы можете добавить PVS-Studio к другим инструментам контроля качества своего Java-проекта. В новую версию плагинов добавлена поддержка диагностик для языка Java.

Стандарт MISRA 3.

В новых плагинах тоже появилась их поддержка. Недавно мы объявляли о поддержке стандартов MICRA C и MISRA C++. Например, был добавлен параметр (в дополнение к CWE):

sonar.pvs-studio.misra=active

который включает добавление идентификатора MISRA к предупреждениям анализатора:

MISRA

Информация о количестве найденных предупреждений MISRA добавилась и в метрики, о которых пойдёт речь далее. Независимо от этого параметра будет доступен поиск по тегам misra и pvs-studio#misra в результатах анализа.

Новые метрики 4.

В меню Projects -> Your Project -> Measures доступны различные метрики кода, среди которых теперь есть различная информация от PVS-Studio:

SonarQube

По каждой из метрик можно строить графики и следить за динамикой появления тех или иных групп предупреждений анализатора.

Multiline-переходы 4.

Иногда они находятся очень далеко друг от друга. Некоторые диагностики анализатора выдают предупреждения на несколько строчек файла. В новой версии мы добавили multiline-переходы:

SonarQube

Позже мы добавим и такие переходы для диагностик, в которых есть межмодульный анализ. SonarQube также поддерживает переходы между разными файлами.

Документация 6.

PVS-Studio является кросс-платформенным и мультиязыковым продуктом, поэтому все переработки были направлены на написание более общих и понятных инструкций по работе на той или иной системе. Документация претерпела большие изменения.

SAST

До недавнего времени в своих статьях мы позиционировали PVS-Studio как инструмент для выявления ошибок в коде. При этом мы почти не рассматривали PVS-Studio в контексте безопасности. В этом году мы исправили эту ситуацию и взглянули на инструмент с точки зрения тестирования защищённости приложений и DevSecOps практик.

Другими словами, анализатор PVS-Studio выявляет не только опечатки, мёртвый код и другие ошибки, но и потенциальные уязвимости. PVS-Studio является средством статического тестирования защищённости приложений (Static Application Security Testing, SAST).

Таблицы соответствий диагностик PVS-Studio различным стандартам: Для удобства специалистов, которые будут использовать PVS-Studio как SAST инструмент, анализатор отображает свои предупреждения на Common Weakness Enumeration, SEI CERT Coding Standards.

  1. Соответствие CWE
  2. Соответствие SEI CERT

Более подробно данная тема раскрыта в статье "PVS-Studio как SAST решение".

Также предлагаем познакомиться с публикациями:

  1. Как PVS-Studio может помочь в поиске уязвимостей?
  2. Стреляем в ногу, обрабатывая входные данные.
  3. Предоставляем анализатор PVS-Studio экспертам безопасности.

PVS-Studio Free

В канун празднования нового 2019 года команда PVS-Studio решила сделать приятный подарок всем контрибьюторам open-source проектов, хостящихся на GitHub или Bitbucket. Им предоставляется возможность бесплатного использования статического анализатора PVS-Studio для развития открытых проектов.

Подробности: "Бесплатный PVS-Studio для тех, кто развивает открытые проекты".

macOS

В 2018 году PVS-Studio научился работать под управлением macOS. К этому событию наша команда приурочила проверку XNU Kernel: "Релиз PVS-Studio для macOS: 64 weaknesses в Apple XNU Kernel".

XNU — это ядро компьютерных операционных систем, разрабатываемое компанией Apple и используемое в ОС семейства OS X (macOS, iOS, tvOS, watchOS).

PVS-Studio 7. Если хотите поделиться этой статьей с англоязычной аудиторией, то прошу использовать ссылку на перевод: Andrey Karpov, Svyatoslav Razmyslov. 00.


Оставить комментарий

Ваш email нигде не будет показан
Обязательные для заполнения поля помечены *

*

x

Ещё Hi-Tech Интересное!

Дата-центры на выбор: Лондон, Москва, Цюрих, Санкт-Петербург

Отчасти санкции, отчасти рост технологического бизнеса, отчасти рост дохода этого самого бизнеса сформировали в России условия для развития коммерческих ЦОД. Если раньше можно было горько усмехнуться над SLA, ждать пока встанет интернет-магазин на лежащем сервере, фактически доверять провайдеру «в тёмную», ...

Подборка: 4 полезных сервиса для потенциальных иммигрантов в США, Европу и другие страны

Я решил собрать в одном месте список онлайн-сервисов, которые будут полезны тем, кто всерьез задумался об иммиграции. Тема переезда в Европу, США или другие приятные регионы мира довольно часто поднимается на Хабре. Для статьи я отобрал четыре проекта. На удивление, ...