Дорожная Карта Pvs-Studio На 2021 Год



Дорожная карта PVS-Studio на 2021 год

В начале года наша команда года провела несколько встреч и разработала внутреннюю карту развития компании и продукта PVS-Studio на 2021 год. Часть наших планов мы решили формализовать в виде этой статьи.

Неопубликованная часть планов является секретной? Нет, но вряд ли нашим читателям будут интересны подробности о планах обучения отдельных сотрудников или о том, когда и какой сервер мы планируем приобрести.

Здесь мы опишем основные планы по развитию самого программного продукта PVS-Studio и его позиционированию.



PVS-Studio как продукт в целом

PVS-Студия — статический анализатор общего назначения, и именно поэтому мы будем продолжать его развивать.

Однако в этом году мы сосредоточимся на его позиционировании как средства статического тестирования безопасности приложений (Static Application Security Testing, SAST).

Для этих целей мы сосредоточимся на поддержке CWE, OWASP, SEI CERT, MISRA, AUTOSAR. На данный момент PVS-Studio поддерживает анализ программ на C, C++, C#, Java. Также поддерживаются некоторые расширения языка C++, например C++/CLI и C++/CX. В 2021 году мы не планируем реализовывать поддержку новых языков, но планируем развивать анализатор вширь.

А именно, хотелось бы дополнительно поддержать несколько новых компиляторов (C, C++) для микроконтроллеров и некоторых сред разработки, например CLion. Помимо улучшений, которые будут описаны ниже, ядра всех анализаторов (C++, C#, Java) будут развиваться по следующим направлениям:

  1. Поддержка новых версий языков программирования;
  2. Улучшение существующей диагностики для снижения количества ложных срабатываний;
  3. Внедрение новых средств диагностики общего назначения (ГА);
  4. Ручное аннотирование функций в популярных библиотеках для увеличения количества обнаруживаемых дефектов;
  5. Разработка внутренних механизмов анализаторов, таких как анализ потоков данных, символьные вычисления, межпроцедурный и межмодульный анализ и т.д.
Мы решили перечислить все эти пункты сразу, чтобы не повторять их ниже для каждого языка.

Примечание.

Если вы не знакомы с терминами «анализ потока данных» и «ручное аннотирование функций», то предлагаем вам ознакомиться с публикацией « Технологии, используемые в анализаторе кода PVS-Studio для поиска ошибок и потенциальных уязвимостей ".



Веб-сайт



Новый сайт анализатора

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

В какой-то момент продукт перерастает идеологию и возможности текущего сайта.

Теперь мы достигли этого момента.

А в первой половине 2021 года мы полностью обновим наш сайт, переработав размещение на нем информации и сделав новый дизайн.



Подписка на новости по электронной почте

При подготовке нового сайта мы провели работу по категоризации и тегированию существующих статей.

Теперь такой подход позволит вам делать актуальные рассылки.

Например, вы можете подписаться на статьи о проверке проектов или только на выпуск анонсов или теоретических статей.



С++



MISRA C, MISRA C++, AUTOSAR

Поддержка стандартов кодирования MISRA C и MISRA C++ будет продолжена.

Но помимо этого пришло время также поддержать более современный набор правил, описанный в Руководстве по кодированию AUTOSAR C++14. Этот документ представляет собой обновление стандарта MISRA C++:2008, а также основан на других ведущих стандартах кодирования и исследованиях, проведенных организацией.

АВТОСАР .



Межмодульный анализ потока данных

Ядра анализатора PVS-Studio для C# и Java умеют в той или иной форме проводить межмодульный анализ.

По ряду причин реализация кросс-модульного анализа в анализаторе C++ более сложна и постоянно откладывается.

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

Это позволит найти, например, ошибки, когда функции передается нулевой указатель, и эта функция, реализованная в другой единице трансляции, разыменовывает этот указатель без выполнения предварительной проверки.

На всякий случай уточним.

Нет, речь не идет о модулях из C++20. Поддержка модулей — еще одна задача, которую мы тоже будем делать, но, возможно, не в этом году.

Речь идет об анализе, учитывающем взаимодействие функций, реализованных в разных *.

cpp файлах (в разных единицах трансляции).



САЛ

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

Исходный код Microsoft (SAL) .



Компиляторы для встраиваемых платформ

За последние несколько лет PVS-Studio для C и C++ значительно расширен поддержка различных компиляторов, при этом мы сосредоточились в основном на компиляторах для платформы ARM. В наступающем году мы обратим внимание на более экзотические платформы.



Эльбрус

Изучим возможность портирования ядра анализатора C++ на платформу.

Эльбрус .

Около года назад мы уже задумывались о таком эксперименте, но компилятор для этой платформы отстает от современного стандарта языка C++.

Анализатор PVS-Studio написан с использованием последних новинок языка, так как нам самим необходимо тренироваться на новых конструкциях языка C++ :).

Но здесь написание кода в таком стиле является недостатком.

Посмотрим, как пойдут дела в этом году, но пока ничего обещать не можем.



CLion

Планируется выпуск плагина для среды разработки CLion. Это кроссплатформенная IDE для C и C++ от JetBrains. Кстати, если вы хотите стать бета-тестером этого плагина, то вы можете перейти по этой ссылке.

связь и заполните форму.

И мы свяжемся с вами, когда у нас будет первая реализация.

Теперь анализатор PVS-Studio для C++ можно использовать на Unix-подобных системах (Linux, macOS) в связке с большим количеством IDE и систем сборки.

Однако интеграция с такими кроссплатформенными IDE осуществляется стандартными средствами самой IDE, обычно в виде загрузки отчета анализатора в формате предупреждений компилятора.

Этот способ интеграции хоть и вполне достаточен для работы, тем не менее уступает интеграции анализатора через расширение (плагин) для IDE, как в случае с плагином PVS-Studio для Visual Studio. Через плагин IDE пользователю доступны многие дополнительные возможности анализатора, такие как подавление сообщений, удобная маркировка ложных срабатываний и т.д. В связи с тем, что для Unix-подобных систем, в отличие от Windows с ее Visual Studio, не существует одной наиболее распространенной IDE, мы пока отложили разработку полноценного плагина для любой из кроссплатформенных IDE для C++.

язык.

Однако, поскольку сейчас мы видим, что популярность JetBrains CLion среди наших пользователей растёт с каждым годом, и у нас уже есть поддержка сред, «близких» к этой IDE. IntelliJ ИДЕЯ И Райдер , мы решили, что пришло время поддержать и CLion.

CSharp (Хабр не поддерживает заголовок 2-го уровня с решётками в режиме Markdown :)



ОВАСП

При внедрении новых диагностик мы планируем ориентироваться на OWASP и особенно на OWASP Top 10. По нашему мнению, статический анализатор для C# значительно выиграет от увеличения количества диагностик из сектора безопасности.



.

СЕТЬ

Мы планируем добавить поддержку проектов .

NET 5, а также работать с .

NET 5 SDK. Вместе с этим будет добавлен анализ кода, написанного на C# 9. Согласно дорожной карте Microsoft, новые версии .

NET планируется выпускать каждый год. Следовательно, в 2021 году планируется выпустить .

NET 6, для которого мы также хотим добавить поддержку.



Учитывать особенности C#8 и C#9 в старой диагностике.

Хотелось бы провести аудит старых диагностик, чтобы посмотреть, насколько хорошо они учитывают нововведения языка, появившиеся в версиях C#8 и C#9. Возможно, некоторые диагностики удастся улучшить, и они начнут генерировать детекты кода с помощью самые современные модели.

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



Джава

Планируется пометить некоторые существующие диагностики, чтобы они соответствовали классификации потенциальных уязвимостей OWASP. Также планируется создать новую диагностику с упором на OWASP и особенно OWASP Top 10.

Другой



Код Visual Studio

Возможно, в этом году мы реализуем плагин для Visual Studio Code, который позволит вам удобно просматривать отчеты, формируемые консольной версией анализатора.

Теперь вы можете использовать для этого утилиту Пользовательский интерфейс мониторинга компиляторов C и C++ , входящий в комплект поставки PVS-Studio. Или конвертировать отчет в формате HTML .

Это вполне рабочие варианты, но с помощью плагина для Visual Studio Code будет удобнее работать с отчетом и вносить изменения в код. Выше, в разделе о поддержке CLion, мы также писали о существующей ситуации с «зоопарком» различных IDE для Unix-систем.

Теперь мы видим перспективу, что Visual Studio Code благодаря своей открытости и модульности имеет шанс стать де-факто самой универсальной IDE для разработки под большое количество языков, компиляторов и платформ.

Это еще одна причина, по которой мы планируем обратить внимание именно на эту IDE в следующем году.



Офлайн-мероприятия

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

Это наша внутренняя кухня, но я хотел бы озвучить один момент публично.

Мы всегда активно участвовали в различных конференциях и других оффлайн мероприятиях (описание как это проходило) первый И второй полугодие 2019).

В 2020 году почти вся подобная деятельность была свернута, и 2021 год может продолжиться аналогичным образом.

Мы очень скучаем по офлайн-мероприятиям.

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

Во-вторых, это был хороший способ внести дополнительные штрихи и подогреть интерес к продукту.

И в-третьих, это положительно сказалось на сотрудниках.

Они могли посещать мероприятия, чтобы отдохнуть, увидеться с другими и похвастаться собой.



Дорожная карта PVS-Studio на 2021 год

Поэтому мы подумали и решили попробовать организовать в 2021 году серию небольших собственных оффлайн-мероприятий.

Это будет что-то среднее между бизнес-ланчами и семинарами.

Мы соберем представителей компаний-клиентов, а также тех, кто только рассматривает возможность приобретения лицензии.

Мы поговорим о новых возможностях PVS-Studio, о способах их интеграции с различными системами, такими как Jenkins, IncrediBuild, Travis CI, SonarQube. Для разнообразия мы также можем пригласить сторонних спикеров, которые хотели бы рассказать о статическом анализе кода.

И естественно будут дискуссии, ответы на вопросы и демонстрации того, как и что работает. Для простоты мы хотим начать с Москвы.

И если нам понравится, как все идет, мы расширим географию мероприятий.

Мероприятия будут бесплатными для участников.

Вопрос к читателям.

Есть ли здесь кто-нибудь, кто уже хочет принять участие в таком мероприятии в качестве слушателя? Если да, то пожалуйста Напишите нам на котором вы хотели бы присутствовать в качестве слушателя или докладчика.

Так мы сможем понять интерес аудитории к таким офлайн-мероприятиям и лучше спланировать их реализацию.

Заранее спасибо.



Дополнительные ссылки

  1. Как внедрить статический анализатор кода в устаревший проект, не демотивируя команду
  2. Релиз PVS-Studio 7.11: IAR Arm, диагностика, БЕСПЛАТНО-БЕСПЛАТНО-БЕСПЛАТНО-БЕСПЛАТНО
  3. Релиз PVS-Studio 7.10: OWASP, AUTOSAR, SARIF
  4. Релиз PVS-Studio 7.09
  5. Релиз PVS-Studio 7.08: C# для Linux и macOS, JetBrains Rider
В опросе могут участвовать только зарегистрированные пользователи.

Войти , Пожалуйста.

Для каких IDE плагин отсутствует? 37,04% JetBrains CLion 20 57,41% Visual Studio Code 31 9,26% Eclipse 5 18,52% Моя версия (напишу в комментариях) 10 Проголосовало 54 пользователя.

21 пользователь воздержался.

В опросе могут участвовать только зарегистрированные пользователи.

Войти , Пожалуйста.

Какие языки может обучать PVS-Studio? 28,36% JavaScript 19 20,9% TypeScript 14 52,24% Python 35 20,9% PHP 14 8,96% Моя версия (напишу в комментариях) 6 Проголосовали 67 пользователей.

22 пользователя воздержались.

Теги: #pvs-studio #дорожная карта

Вместе с данным постом часто просматривают: