Ознакомительный режим PVS-Studio


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

После скачивания, первой установки и запуска, анализатор PVS-Studio начинает работать в ознакомительном (trial) режиме. Этот режим накладывает определённые ограничения на доступные функции нашего продукта. Тем не менее, trial режим позволяет начать пользоваться инструментом сразу после установки, без каких-либо дополнительных действий, как, например, регистрация на сайте или запрос лицензионного ключа. А основная функция анализатора - обнаружение и исправление реальных ошибок, доступна "сразу из коробки".

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

Ограничения и рекомендации

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

Вначале кратко о рекомендациях по использованию инструмента и существующих ограничениях Trial версии.

Что не работает в trial режиме

Перечислим все ограничения, накладываемые ознакомительной версией на возможности PVS-Studio.

  • Ограниченно количество переходов по сообщениям анализатора (открытие исходного файла и установление курсора на строку, содержащую потенциальную ошибку), найденным в проверяемом коде, при запуске анализа из Visual Studio \ Standalone. Количество переходов по сообщениям в trial режиме равно 200. После того, как эти переходы закончатся, можно один раз получить ещё 200 переходов, заполнив небольшую контактную форму (ваше имя, название компании и электронная почта). На цели заполнения данной формы мы остановимся более подробно чуть позже. После окончания trial переходов, анализатор продолжает работать, но перестаёт выдавать в сообщениях пути до фалов, в которых найдены потенциальные ошибки.
  • Недоступна проверка MSBuild проектов (vcxproj\csproj) из командной строки с помощью PVS-Studio_Cmd.exe. Такие проекты в trial режиме можно проверять, открыв их напрямую в Visual Studio, с ограничением на число переходов, описанным в предыдущем пункте.
  • Недоступна утилита командной строки для отслеживания вызовов компилятора. Использование отслеживания вызовов компилятора в trial режиме возможно только из графического PVS-Studio Standalone приложения, также с ограничением на количество переходов по сообщениям.
  • Не работает плагин PVS-Studio для системы непрерывного контроля качества кода SonarQube.
  • Не работает консольная утилита BlameNotifier, предназначенная для оповещения по электронной почте разработчиков о новых сообщениях анализатора.

Как видно из приведённого списка, все ограничения ознакомительной версии можно разделить на 2 группы - ограничения на суммарное количество сообщений анализатора, доступных для просмотра, и ограничения на использования дополнительной функциональности анализатора. Рассмотрим далее эти группы ограничений более подробно.

Много, не значит полезно

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

Самый типовой неправильный паттерн: программист сразу выставляет настройки предупреждений на максимум. Это наша самая большая боль. Он включает все типы предупреждений (общие, 64-битные, оптимизации), все уровни предупреждений, некоторые даже умудряются добраться в настройках до диагностик, созданных на заказ, и включить их.

Свое поведение программисты объясняют тем, что хотят видеть все возможности анализатора. Это неправильно. Правильная цель - увидеть, что анализатор может быть полезен проекту. То есть, в первую очередь надо увидеть, что анализатор находит настоящие ошибки в коде. Включив же всё на максимум, человек тонет в предупреждениях. Просмотрев 20-30 неинтересных предупреждений, человек теряет интерес. Скорее всего, на этом знакомство с инструментом закончится. Если же сократить набор просматриваемых предупреждений (например, отфильтровать их), то велик шанс, что он заметит настоящие ошибки. Тогда программист будет совсем по-другому относиться к инструменту.

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

Поэтому мы рекомендуем во время знакомства с инструментом просматривать только сообщения, относящиеся к уровням High и Medium.

Мы спешим на помощь

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

Когда "клики" кончатся, программа предложит заполнить небольшую форму с контактными данными, которые мы используем, чтобы поинтересоваться, не можем ли мы чем-то помочь. После этого будут выделены дополнительные "клики".

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

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

У кого-то есть "гадкий макрос", на котором анализатор генерирует массу бессмысленных предупреждений. Человек тратит все "клики", ходя по этим предупреждениям. После чего на наш вопрос "Всё хорошо?", отвечает в духе:

Ужасно. Как таким анализатором вообще пользоваться. Я замучался проматывать сотни предупреждений с номером Vxxx.

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

Другой человек жалуется, что мешаются сообщения, относящиеся к сторонним библиотекам.

Мы подсказываем, что сообщения, относящиеся к библиотекам, можно отключить в два клика мышкой. Действительно, это 2 клика.

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

Не утонуть в глубокой интеграции

Рассмотрим далее ограничение в ознакомительном режиме PVS-Studio на использование инструментов "глубокой" интеграции в процессы разработки.

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

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

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

Пример первый: пользователь запускает консольную утилиту PVS-Studio_Cmd для проверки своего solution'а на build сервере. Результатом её работы является файл отчёта plog, имеющий формат XML. Далее, пользователь пытается самостоятельно распарсить полученный отчёт для занесения результатов в свою bug-tracking систему. И сталкивается с тем, что plog отчёт (который мы настоятельно не рекомендуем нашим пользователям парсить самостоятельно!) содержит предупреждения, которые были подавлены через механизм False Alarms. Пользователь гневно отписывает нам об ошибке в инструменте - "ваш отчёт содержит сообщения, которые я уже подавил!". Но пользователь не учёл, что в plog файле false alarms сообщения размечены специальным образом, при этом мы специально сохраняем в plog'е такие подавленные сообщения, т.к. в некоторых ситуациях их может потребоваться быстро посмотреть без перезапуска анализа и необходимости удалять из кода false alarm разметку. В такой ситуации мы порекомендуем этому пользователю воспользоваться нашей утилитой PlogConverter для фильтрации и преобразования plog отчёта в более удобный для его задач формат.

Другой пример: пользователь настраивает рассылку результатов анализа с помощью утилиты BlameNotifier (или с помощью SonarQube). При этом запускается анализ очень большого проекта, содержащего миллионы строк кода. Конечно, на такой огромной кодовой базе анализатор начинает генерировать тысячи предупреждений. Какие-то из них могут оказаться ложными срабатываниями, какие-то реальными ошибками - суть сейчас не в этом. Из-за огромного количества предупреждений, которые начинают сыпаться разработчикам, они начинают видеть такую рассылку, как спам, т.к. невозможно сразу просмотреть такое огромное число предупреждений. Как следствие, получив несколько таких "спам" рассылок, у разработчика может сформироваться негативное впечатление об анализаторе, и тогда и мы не получим продление лицензии на следующий год, и проект не получит исправления ошибок, найденных анализатором - проиграют все. Мы же порекомендуем, в случае начала использования анализатора на таком крупном проекте, сначала подавить все старые сообщения, и сразу начать использовать анализатор для правки сообщений на вновь написанном коде. А к старым сообщениям всегда можно вернуться попозже, постепенно отсеивая среди них ложные срабатывания и находя реальные ошибки.

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

Я опытный

Осталось сказать, что делать людям, которые не считают себя новичками в сфере инструментов статического анализа. Всё просто. Свяжитесь с нами, и мы выдадим вам временный ключ для более глубокого изучения анализатора, без ограничений, накладываемых ознакомительной версией.


А ты совершаешь ошибки в коде?

Проверь с помощью
PVS-Studio

Статический анализ
кода для C, C++ и C#

goto PVS-Studio;