Перейти к содержимому

Pvs studio как пользоваться

  • автор:

PVS-Studio

Мы разрабатываем, продвигаем и продаем статический анализатор C, C++, C# и Java кода PVS-Studio. Это инструмент для программистов, который экономит деньги компаний за счет раннего обнаружения программных ошибок путем анализа исходного кода. Работает в среде Windows, Linux и macOS.

Наша миссия — повышение качества программ. Наша задача — не найти какие-то ошибки, а повысить качество и уровень разработки программного обеспечения. Мы продаём миру идею использования статического анализа кода в целом. Использование методологии статического анализа экономит время при разработке, делает программистов более ответственными, дополнительно контролирует новичков и экономит деньги и нервы конечных пользователей программ. И мы должны донести информацию о статическом анализе всему миру. Доносим мы это не абстрактно, а конкретно, предлагая использовать наш анализатор PVS-Studio. Мир благодарен нам за это, что находит отражение в приобретении лицензий.

PVS-Studio выполняет статический анализ кода и генерирует отчёт, помогающий программисту находить и устранять ошибки и потенциальные уязвимости. PVS-Studio выполняет широкий спектр проверок кода, но наиболее силён в поисках опечаток и последствий неудачного Copy-Paste. Показательные примеры таких ошибок: V501, V517, V522, V523, V3001.

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

  • Страница продукта PVS-Studio.
  • Примеры обнаруживаемых ошибок
  • Блог
  • Как 10 лет назад начинался проект PVS-Studio

Контакты

Вы можете задать любые вопросы, воспользовавшись формой обратной связи на нашем сайте или написав на почтовый ящик support@viva64.com.

Активность

Использование PVS-Studio для поиска ошибок в C# проектах

В ходе митапа посмотрим на интересные ошибки, обнаруженные в таких известных проектах, как Unity, Mono, PowerShell и пр. Поговорим о том, как эти ошибки обнаруживаются, о принципах работы анализатора. Обсудим, как наиболее эффективно использовать PVS-Studio в новом проекте или внедрить в уже существующий. Заинтересовались, и есть о чём спросить? Приходите – обсудим!

Devops / другое
Новые возможности PVS-Studio: анализ кода на языке Java

Хотите посмотреть на ошибки из таких проектов, как Jenkins, IntelliJ IDEA, SonarQube и услышать, как PVS-Studio их обнаруживает? Интересуют принципы работы анализатора и используемые механизмы? Хотите проверить свой проект и есть о чём спросить? Ждём вас на митапе, где и обсудим эти вопросы.

Devops / другое
Возможности PVS-Studio по выявлению ошибок и потенциальных уязвимостей в коде на языке С и C++

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

+7 (495) 646-07-68 support@ontico.ru 125040, Москва, Нижняя ул., д. 14, стр. 7, подъезд 1, оф. 16 ООО «Конференции Олега Бунина»

Служба поддержки и бухгалтерия: support@ontico.ru Сотрудничество: organization@ontico.ru Для докладчиков: — DevOps-секции: speakers.devops@ontico.ru — Остальные секции: speakers.highload@ontico.ru

Pvs studio как пользоваться

Мы разрабатываем, продвигаем и продаем статический анализатор C, C++, C# и Java кода PVS-Studio. Это инструмент для программистов, который экономит деньги компаний за счет раннего обнаружения программных ошибок путем анализа исходного кода. Работает в среде Windows, Linux и macOS.

Наша миссия — повышение качества программ. Наша задача — не найти какие-то ошибки, а повысить качество и уровень разработки программного обеспечения. Мы продаём миру идею использования статического анализа кода в целом. Использование методологии статического анализа экономит время при разработке, делает программистов более ответственными, дополнительно контролирует новичков и экономит деньги и нервы конечных пользователей программ. И мы должны донести информацию о статическом анализе всему миру. Доносим мы это не абстрактно, а конкретно, предлагая использовать наш анализатор PVS-Studio. Мир благодарен нам за это, что находит отражение в приобретении лицензий.

PVS-Studio выполняет статический анализ кода и генерирует отчёт, помогающий программисту находить и устранять ошибки и потенциальные уязвимости. PVS-Studio выполняет широкий спектр проверок кода, но наиболее силён в поисках опечаток и последствий неудачного Copy-Paste. Показательные примеры таких ошибок: V501, V517, V522, V523, V3001.

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

  • Страница продукта PVS-Studio.
  • Примеры обнаруживаемых ошибок
  • Блог
  • Как 10 лет назад начинался проект PVS-Studio

Контакты

Вы можете задать любые вопросы, воспользовавшись формой обратной связи на нашем сайте или написав на почтовый ящик support@viva64.com.

Активность

PVS-Studio

В ходе митапа расскажем о принципах работы анализатора. Обсудим, как наиболее эффективно использовать PVS-Studio в новом проекте или внедрить в уже существующий. Заинтересовались нашим продуктом, но остались вопросы? Приходите – обсудим!

PVS-Studio. Тестируем статический анализатор кода на реальном проекте

В этой статье я покажу тебе, как исполь­зовать ста­тичес­кий ана­лиза­тор кода для отло­ва багов в прог­рамме. Исполь­зовать мы будем пре­дос­тавлен­ный нам на тес­тирова­ние PVS-Studio и на живом про­екте пос­мотрим, на какие ошиб­ки он пожалу­ется и в каких слу­чаях выручит.

Зачем нужен статический анализатор

Сов­ремен­ные при­ложе­ния — это огромные мас­сивы кода и биб­лиотек. Усле­дить за ошиб­ками в них — дело неп­ростое. Мож­но забыть выс­вободить ресур­сы, сде­лать «удач­ную» опе­чат­ку, при которой код собира­ется, но ведет себя неп­равиль­но, допус­тить утеч­ку памяти. Короче, есть мно­жес­тво ситу­аций, которые спо­соб­ны прев­ратить отладку в изма­тыва­ющее прик­лючение. И если ты ока­зал­ся в одной из них, это вов­се не зна­чит, что ты пло­хой прог­раммист. Прос­то люди могут уста­вать, отвле­кать­ся и допус­кать ошиб­ки.

Для помощи прог­раммис­там при­дума­ли спе­циаль­ные тул­зы — ста­тичес­кие ана­лиза­торы кода, которые помога­ют в раз­работ­ке и выяв­ляют раз­ные ошиб­ки: логичес­кие баги, опе­чат­ки, опас­ные конс­трук­ции, несо­ответс­твия каким‑то стан­дартам и кон­венци­ям и так далее. Ста­тичес­кие ана­лиза­торы при­меня­ются имен­но на эта­пе раз­работ­ки, а не тес­тирова­ния, поэто­му поз­воля­ют пра­вить код на мес­те, что нам­ного про­ще и быс­трее.

Да­вай пос­мотрим, как обра­щать­ся с ана­лиза­тором на при­мере PVS-Studio. Я покажу, какие ошиб­ки будут им ловить­ся, а за чем при­дет­ся сле­дить самос­тоятель­но. PVS-Studio «понима­ет» C/C++, C# и Java, под­держи­вает Windows, Linux и macOS. Но пос­коль­ку показы­вать я буду всё на рабочем про­екте, то сфо­куси­руюсь на C++ и Windows.

Установка и настройка

Итак, кача­ем PVS-Studio с сай­та раз­работ­чика. На момент написа­ния статьи акту­аль­ная вер­сия — 7.19.

Промо

Что­бы получить бес­плат­ную проб­ную лицен­зию на 30 дней, перей­ди по ссыл­ке. В поле «про­мокод» будет встав­лен код xakep, который ком­пания‑раз­работ­чик пре­дос­тавила для читате­лей «Хакера».

Что инте­рес­но, инстал­лятор сра­зу нашел у меня на машине Visual Studio 2022 и IntelliJ IDEA Ultimate 2022 и сра­зу пред­ложил интегри­ровать­ся в них. Не отка­зыва­емся, потому что будет удоб­но исполь­зовать ста­тана­лиза­тор не как отдель­ную тул­зу, а имен­но как пла­гин для IDE.

Инсталятор PVS-Studio детектит установленные IDE

Те­перь откро­ем Visual Studio и прой­дем­ся по самым инте­рес­ным нас­трой­кам.

Настройки PVS-Studio

Об­рати вни­мание на IntermoduladAnalysisCpp, что озна­чает «меж­модуль­ный ана­лиз». Эта нас­трой­ка при­меня­ется толь­ко к про­ектам на C++. Раз­работ­чики уве­ряют, что при вклю­чении этой опции ана­лиза­тор про­изво­дит ана­лиз более эффектив­но. Про­верим! Вот два ска­ниро­вания: без этой опции и вмес­те с ней.

Без межмодульного анализаС включенным межмодульным анализом

Как видишь, ста­ло боль­ше на одну ошиб­ку клас­са Low. Не очень впе­чат­ляет, но галоч­ку луч­ше оста­вить.

Сле­дующая инте­рес­ная опция — No Noise. Она исклю­чает низ­копри­ори­тет­ные пре­дуп­режде­ния, что­бы было про­ще ори­енти­ровать­ся в выдаче ана­лиза­тора.

Ре­комен­дую заг­лянуть и во вклад­ку Detectable Errors — здесь мож­но вклю­чать или вык­лючать обна­руже­ние опре­делен­ных групп оши­бок.

PVS-Studio уме­ет опре­делять потен­циаль­ные уяз­вимос­ти, свя­зан­ные с безопас­ностью кода. Сре­ди нацелен­ных на это наборов пра­вил:

  • CWE — база конс­трук­ций язы­ка, которые содер­жат потен­циаль­ные уяз­вимос­ти;
  • AUTOSAR — набор пра­вил для стан­дарта C++ 14 для встра­иваемых отка­зоус­той­чивых сис­тем;
  • MISRA — пра­вила, вырабо­тан­ные ком­пани­ей MISRA для встра­иваемых сис­тем, где важ­ны безопас­ность и отка­зоус­той­чивость;
  • OWASP — пра­вила для безопас­ной раз­работ­ки веб‑при­ложе­ний;
  • SEI-CERT — пра­вила, соз­данные цен­тром CERT, опять же, для повыше­ния надеж­ности ПО.

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

По­мимо это­го, PVS-Studio опре­деля­ет проб­лемы 64-бит­ного кода, пред­лага­ет опти­миза­ции про­изво­дитель­нос­ти и даже содер­жит нес­коль­ко пра­вил (Custom), которые сде­ланы спе­циаль­но по заяв­кам тру­дящих­ся.

Анализатор на практике: разбираем примеры

Те­перь перей­дем к обзо­ру най­ден­ных при помощи PVS-Studio оши­бок и недоче­тов. Весь код, который будет тут пред­став­лен для при­мера, — реаль­ный, из круп­ного опен­сор­сно­го про­екта, который раз­вива­ется нес­коль­ко лет. «Син­тетичес­ких» оши­бок, искусс­твен­но соз­данных для демонс­тра­ции воз­можнос­тей ста­тана­лиза­тора, я при­водить не буду, ведь это не так инте­рес­но.

За­пус­каем ска­ниро­вание! Пер­вый недочет, най­ден­ный ана­лиза­тором и име­ющий рей­тинг Medium:

V560 A part of conditional expression is always true: threadArg

Ес­ли нажать на номер ошиб­ки, откро­ется сайт раз­работ­чика с пояс­нени­ем (как на рус­ском, так и на англий­ском язы­ках): «Ана­лиза­тор обна­ружил потен­циаль­но воз­можную ошиб­ку внут­ри логичес­кого усло­вия. Часть логичес­кого выраже­ния всег­да истинно и оце­нено как опас­ное». Раз­берем­ся.

Преподавателям на заметку: PVS-Studio для знакомства студентов с инструментами анализа кода

PVS-Studio и обучение

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

Разработка современного программного обеспечения невозможна без комплексного подхода к обеспечению качества и надёжности программного обеспечения. Причина в том, что размер кодовой базы современных приложений быстро растёт. Поясню это на числах. Возьмём, например, операционные системы:

  • MS DOS 1.0: 4 000 строк кода. Один человек мог прочитать код целиком, разобраться, найти ошибки.
  • Ядро Linux 1.0.0: 176 000 строк кода. У команды ещё есть возможность сделать подробный обзор кода, хотя на это придётся затратить много времени и сил.
  • Ядро Linux 5.0: более 26 000 000 строк кода. Осознать проект невозможно.

Невозможность осознать проект — это только пол беды. С ростом размера проекта растёт и плотность ошибок. Подчеркну: речь идёт не просто о росте количества ошибок, а именно об их плотности! В программе, написанной в рамках курсовой работы, можно написать 1000 строк кода и не допустить ни одной ошибки. И нереально добавить в большое приложение 1000 строк кода и не допустить несколько ошибок. Для пояснения опять прибегнем к числам:

Рисунок 1. Типичная плотность ошибок в проектах различного размера

Рисунок 1. Типичная плотность ошибок в проектах различного размера. Данные взяты из книги Стива Макконнелла «Совершенный код».

Итак, невозможно писать надёжные программы, используя те же подходы, что и 20-30 лет назад. Необходимо использовать комплекс методологий, помогающих контролировать рост сложности программного проекта и обеспечивать необходимое качество кода:

  • Стандарты кодирования
  • Обзоры кода
  • Юнит-тесты
  • Регрессионное тестирование
  • Нагрузочное тестирование
  • Ручное тестирование
  • .
  • Динамический анализ
  • Статический анализ

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

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

PVS-Studio — это инструмент для выявления ошибок и потенциальных уязвимостей в исходном коде программ, написанных на языках С, C++, C# и Java. Работает в 64-битных системах на Windows, Linux и macOS и может анализировать код, предназначенный для 32-битных, 64-битных и встраиваемых ARM платформ.

Анализатор PVS-Studio можно рассматривать как пример современного инструмента статического анализа кода. Во-первых, на его примере хорошо показывать возможности инструментов статического анализа в выявлении ошибок и дефектов безопасности (SAST). Во-вторых, можно продемонстрировать его интеграцию в цикл разработки программного обеспечения, чтобы контроль кода был непрерывен. На его примере можно показывать возможность интеграции с такими системами, как Jenkins, TeamCity, Azure DevOps, SonarQube, Travis CI и т.д.

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

Мы предоставляем несколько вариантов бесплатного лицензирования PVS-Studio, в том числе и для открытых проектов. Конкретно для обучающих целей, когда студенческие работы не являются открытыми, лучше всего подойдёт вариант с добавлением в код следующего комментария:

// This is a personal academic project. Dear PVS-Studio, please check it.
// PVS-Studio Static Code Analyzer for C, C++, C#, and Java: http://www.viva64.com

Чтобы начать бесплатно использовать статический анализатор PVS-Studio, следует выполнить два следующих шага:

Если вы используете PVS-Studio как плагин к Visual Studio или используете утилиту Standalone, то введите следующий лицензионный ключ:

Name: PVS-Studio Free
Key: FREE-FREE-FREE-FREE

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

Вы должны вписать в начало каждого файла две строки с комментарием. Внесите правки во все компилируемые файлы вашего проекта. Имеются в виду файлы с расширениями c, cc, cpp, cs, java и так далее. Заголовочные h-файлы менять не требуется.

Вы можете добавлять комментарии как вручную, так и воспользоваться для этого вспомогательной утилитой. Скачать утилиту (вместе с исходным кодом) можно здесь: how-to-use-pvs-studio-free.

Всё это более подробно описано в статье «Как использовать PVS-Studio бесплатно». Попросите студентов ознакомиться с ней. В частности, надо учитывать, что поддержку для бесплатных пользователей мы оказываем через сайт StackOverflow. Но при этом не надо путать поддержку и уведомления о багах. Как раз про такие моменты и рассказывается в статье.

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

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

  1. Иван Пономарёв. Доклад на конференции Heisenbug 2019 Moscow: Непрерывный статический анализ кода.
  2. Сергей Хренов, Филипп Хандельянц. Мастер-класс на конференции Saint HighLoad++ 2019: Анализатор кода PVS-Studio.
  3. Андрей Карпов. Бесплатные варианты лицензирования PVS-Studio.
  4. PVS-Studio. Документация.

Если хотите поделиться этой статьей с англоязычной аудиторией, то прошу использовать ссылку на перевод: Andrey Karpov. For professors’ note: use PVS-Studio to get students familiar with code analysis tools.

Добавить комментарий

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