pvs studio что это
Как использовать PVS-Studio бесплатно
Мы хотим помочь миру программного обеспечения лучше познакомиться с инструментами статического анализа кода и повысить качество программного обеспечения. Мы предоставляем возможность бесплатного использования анализатора PVS-Studio студентам в учебных целях, индивидуальным разработчикам и коллективам энтузиастов.
Введение
Клиентами анализатора PVS-Studio являются отделы разработчиков различных компаний. Мы бы хотели, чтобы нашими клиентами были и индивидуальные разработчики. К сожалению, у нас ничего не получилось с экспериментальным продуктом CppCat. Мы не знаем, как построить успешный бизнес в сфере статического анализа кода, продавая персональные лицензии. Поэтому сейчас продукт PVS-Studio позиционируется исключительно как B2B решение.
Думаю, что наш провал с CppCat был предопределён. Мир диктует свои законы, и, например, тот же Coverity ориентирован на корпоративные лицензии. Однако, это не значит, что нужно исключать другие варианты взаимодействия с миром.
Мы долго думали, как помочь маленьким командам разработчиков или как распространять академические лицензии. На первый взгляд кажется, что самый простой путь — дарить лицензии тем, кто развивает бесплатное программное обеспечение. К сожалению, это решение не кажется нам правильным.
Стоит пояснить нашу позицию. Впрочем, если вам не терпится, вы можете сразу перейти к разделу «Бесплатная лицензия PVS-Studio». Если же читателю интересно узнать подробности, то предлагаю продолжить чтение.
Размышления
Представим индивидуального разработчика, разрабатывающего и продающего, например, какую-то игру. Его код закрыт и используется в коммерческих целях. Тем не менее, мы рады помочь ему познакомиться с методологией статического анализа кода и готовы подарить ему лицензию. Это рекламный шаг, который со временем может окупиться. Сейчас он один, но кто знает, что произойдёт через 5 лет.
С другой стороны, возьмем команду из 50 человек, работающих в крупной компании и занимающихся созданием открытого бесплатного проекта. Сидят 50 человек в офисе, едят печенье, получают зарплату и при этом позиционируют себя как идеалисты в плане развития свободного программного обеспечения. Да, продукт бесплатен, но компания извлекает из его существования значительную прибыль косвенными методами. Просто по ряду причин компании удобно, чтобы проект был открытым и бесплатным. Нам кажется вполне честным, что такая организация должна приобрести платную лицензию для использования анализатора.
Как видите, критерий бесплатности программы или открытости кода нам не подходит для принятия решения. Хочется разделить проекты, разрабатываемые в компании, и проекты маленьких коллективов энтузиастов. Можно сделать это исключительно лицензионным соглашением, но в таком случае сложно провести границу между разными типами проектов. Вдобавок, это мало поможет нам с точки зрения рекламы. Давайте будем честны: компании предоставляют бесплатные лицензии ради рекламы. В этом мы не хуже и не лучше других.
Решение было найдено интуитивно. Что отличает корпоративные проекты от проектов энтузиастов? В корпоративных проектах меньше свободы и больше бюрократии. Вряд ли руководство компании Microsoft будет радо, если разработчик в коде Microsoft Office напишет, что это его персональный проект. Этим надо воспользоваться и предлагать вносить в код правки, в которых упоминается PVS-Studio. Заодно код открытых проектов будет рекламировать PVS-Studio.
Бесплатная лицензия PVS-Studio
Вам нужно выполнить два шага, чтобы начать бесплатно использовать статический анализатор PVS-Studio.
Шаг 1.
Если вы используете PVS-Studio как плагин к Visual Studio или используете утилиту «C and C++ Compiler Monitoring UI» (Standalone.exe), то введите следующий лицензионный ключ:
Name: PVS-Studio Free
Если Вы используете PVS-Studio for Linux/macOS, то воспользуйтесь командой:
pvs-studio-analyzer credentials PVS-Studio Free FREE-FREE-FREE-FREE
Примечание. Ранее для активации бесплатной лицензии для Linux-версии было достаточно только комментария. Теперь требуется вводить и этот специальный ключ, так как без него некоторые сценарии использования анализатора оказались неудобными. Подробнее.
Шаг 2.
Внесите правки во все компилируемые файлы вашего проекта. Имеются в виду файлы с расширениями c, cc, cpp, cs и так далее. Заголовочные h-файлы менять не требуется.
Вы должны вписать в начало каждого файла две строки с комментарием. Мы предоставляем на выбор несколько вариантов. Это своего рода плата за возможность бесплатного использования анализатора PVS-Studio.
Комментарии для студентов (академическая лицензия):
Комментарии для открытых бесплатных проектов:
Комментарии для индивидуальных разработчиков:
Конечно, предложенные варианты подходят далеко не всем. В этом и состоит их смысл. Если ни один из предложенных вариантов вам не подходит, то предлагаем обсудить с нами вопрос покупки лицензии.
Примечание. Помимо описанного здесь способа бесплатного использования анализатора, вы можете по-прежнему скачивать с сайта демонстрационную версию анализатора для ознакомления. Если вы хотите на время снять ограничения демонстрационной версии, то просим написать нам.
Автоматизация
Если в вашем проекте много файлов, то вы можете воспользоваться вспомогательной утилитой. Вы должны будете указать ей какой комментарий вставлять и каталог с кодом. Затем утилита рекурсивно обойдет все файлы в папке и вложенных папках, добавляя в файлы с исходным кодом соответствующие комментарии. Скачать утилиту (вместе с исходным кодом) можно здесь: how-to-use-pvs-studio-free.
Заключение
Некоторые разработчики могут сказать, что не хотят видеть в начале файла две строчки с комментарием, не относящимся к сути проекта. Это их право, и они могут просто не использовать анализатор. Или они могут приобрести коммерческую лицензию и использовать её без ограничений. Мы рассматриваем наличие этих комментариев, как благодарность за предоставленную лицензию и, заодно, как дополнительную рекламу нашего продукта. Я думаю, это хороший, честный обмен.
Заодно решается вопрос отделения корпоративных проектов от частных инициатив. Если проект делают энтузиасты, они в праве делать с кодом всё, что им хочется, в том числе и добавлять такие комментарии. Если нет, значит за проектом стоит некая организация, от которой мы хотим получить вознаграждение в виде приобретения лицензии.
Надеемся наше предложение и позиция понятны. Если у вас остаются вопросы, то просим написать нам.
Чтобы убедить ваших коллег начать использовать анализатор кода PVS-Studio, предлагаем познакомить их со следующими разделами нашего сайта:
Update
Возникло очень много рассуждений на тему того, допустимо ли добавлять и удалять комментарии в исходный код, чтобы бесплатно использовать анализатор. Мы считаем такой приём неприемлемым, так как он по факту является способом обхода ограничения, наложенного нами на бесплатную лицензию. Поэтому мы решили добавить следующий раздел в лицензионное соглашение:
Вы имеете право использовать PVS-Studio бесплатно, добавив в исходный код своего проекта комментарии специального вида. Какие именно комментарии следует добавлять и как автоматизировать этот процесс описано в статье «Как использовать PVS-Studio бесплатно».
Отметим, что данный режим не предназначен для оценки возможностей анализатора. Чтобы познакомиться с анализатором, вы должны использовать демонстрационную версию или запросить у нас временный лицензионный ключ.
Вам следует вставлять комментарии, когда вы уже решили, что будете использовать анализатор на регулярной основе. Вы можете удалить впоследствии эти комментарии, но можете сделать это только один раз.
Не допускается многократное добавление комментариев в исходный код с последующим их удалением. Также не допускается многократное добавление комментариев с последующим откатом содержимого исходных файлов с помощью системы контроля версий. Такие действия направлены на обход условия, что исходный код должен содержать комментарии, и являются нарушением данного соглашения об использовании анализатора.
Update: Поддержка
Постепенно бесплатный вариант лицензирования набирает популярность, и наша команда всё больше времени тратит, оказывая поддержку бесплатным пользователем. При этом многие вопросы повторяются, поэтому мы считаем целесообразным оказывать в дельнейшем поддержку, отвечая на вопросы на сайте StackOverflow.
Общение через сайт StackOverflow сократит объем переписки, и позволит нам часто отвечать на вопросы, просто давая ссылку на уже обсужденный вопрос по данной теме. Более того, многие вопросы просто не будут заданы, так как пользователи смогут найти готовые ответы на StackOverflow самостоятельно, и им не потребуется ожидать нашего ответа в почте.
Итак, всех кто использует бесплатную версию PVS-Studio просим задавать нам вопросы на сайте StackOverflow. Чтобы ваш вопрос не остался незамеченным, используйте тег «pvs-studio».
Наши платные клиенты по-прежнему будут получать поддержку приватно через почту. Впрочем, если кто-то из клиентов будет задавать вопросы через StackOverflow, мы не возражаем.
Как использовать PVS-Studio бесплатно
Мы хотим помочь миру программного обеспечения лучше познакомиться с инструментами статического анализа кода и повысить качество программного обеспечения. Мы предоставляем возможность бесплатного использования анализатора PVS-Studio студентам в учебных целях, индивидуальным разработчикам и коллективам энтузиастов.
Данная статья является устаревшей, так как в ней описан только один из способов бесплатного использования PVS-Studio. Со временем мы предоставили и другие варианты бесплатного лицензирования, например, для открытых проектов. Предлагаем познакомиться с более новой версией статьи: «Бесплатные варианты лицензирования PVS-Studio».
Введение
Клиентами анализатора PVS-Studio являются отделы разработчиков различных компаний. Мы бы хотели, чтобы нашими клиентами были и индивидуальные разработчики. К сожалению, у нас ничего не получилось с экспериментальным продуктом CppCat. Мы не знаем, как построить успешный бизнес в сфере статического анализа кода, продавая персональные лицензии. Поэтому сейчас продукт PVS-Studio позиционируется исключительно как B2B решение.
Думаю, что наш провал с CppCat был предопределён. Мир диктует свои законы и, например, тот же Coverity ориентирован на корпоративные лицензии. Однако это не значит, что нужно исключать другие варианты взаимодействия с миром.
Стоит пояснить нашу позицию. Впрочем, если вам не терпится, вы можете сразу перейти к разделу «Бесплатная лицензия PVS-Studio». Если же читателю интересно узнать подробности, то предлагаю продолжить чтение.
Размышления
Представим индивидуального разработчика, разрабатывающего и продающего, например, какую-то игру. Его код закрыт и используется в коммерческих целях. Тем не менее, мы рады помочь ему познакомиться с методологией статического анализа кода и готовы подарить ему лицензию. Это рекламный шаг, который со временем может окупиться. Сейчас он один, но кто знает, что произойдёт через 5 лет.
С другой стороны, возьмем команду из 50 человек, работающих в крупной компании и занимающихся созданием открытого бесплатного проекта. Сидят 50 человек в офисе, едят печенье, получают зарплату и при этом позиционируют себя как идеалисты в плане развития свободного программного обеспечения. Да, продукт бесплатен, но компания извлекает из его существования значительную прибыль косвенными методами. Просто по ряду причин компании удобно, чтобы проект был открытым и бесплатным. Нам кажется вполне честным, что такая организация должна приобрести платную лицензию для использования анализатора.
Как видите, критерий бесплатности программы или открытости кода нам не подходит для принятия решения. Хочется разделить проекты, разрабатываемые в компании, и проекты маленьких коллективов энтузиастов. Можно сделать это исключительно лицензионным соглашением, но в таком случае сложно провести границу между разными типами проектов. Вдобавок, это мало поможет нам с точки зрения рекламы. Давайте будем честны: компании предоставляют бесплатные лицензии ради рекламы. В этом мы не хуже и не лучше других.
Решение было найдено интуитивно. Что отличает корпоративные проекты от проектов энтузиастов? В корпоративных проектах меньше свободы и больше бюрократии. Вряд ли руководство компании Microsoft будет радо, если разработчик в коде Microsoft Office напишет, что это его персональный проект. Этим надо воспользоваться и предлагать вносить в код правки, в которых упоминается PVS-Studio. Заодно код открытых проектов будет рекламировать PVS-Studio.
Бесплатная лицензия PVS-Studio
Вам нужно выполнить два шага, чтобы начать бесплатно использовать статический анализатор PVS-Studio.
Шаг 1
Если вы используете PVS-Studio как плагин к Visual Studio или используете утилиту «C and C++ Compiler Monitoring UI» (Standalone.exe), то введите следующий лицензионный ключ:
Name: PVS-Studio Free
Key: FREE-FREE-FREE-FREE
Если Вы используете PVS-Studio for Linux/macOS, то воспользуйтесь командой:
pvs-studio-analyzer credentials PVS-Studio Free FREE-FREE-FREE-FREE
Примечание. Ранее для активации бесплатной лицензии для Linux-версии было достаточно только комментария. Теперь требуется вводить и этот специальный ключ, так как без него некоторые сценарии использования анализатора оказались неудобными. Подробнее.
Шаг 2
Внесите правки во все компилируемые файлы вашего проекта. Имеются в виду файлы с расширениями c, cc, cpp, cs и так далее. Заголовочные h-файлы менять не требуется.
Вы должны вписать в начало каждого файла две строки с комментарием. Мы предоставляем на выбор несколько вариантов. Это своего рода плата за возможность бесплатного использования анализатора 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
Комментарии для открытых бесплатных проектов:
// This is an open source non-commercial project. Dear PVS-Studio, please check it.
// PVS-Studio Static Code Analyzer for C, C++, C#, and Java: http://www.viva64.com
Комментарии для индивидуальных разработчиков:
// This is an independent project of an individual developer. Dear PVS-Studio, please check it.
// PVS-Studio Static Code Analyzer for C, C++, C#, and Java: http://www.viva64.com
Конечно, предложенные варианты подходят далеко не всем. В этом и состоит их смысл. Если ни один из предложенных вариантов вам не подходит, то предлагаем обсудить с нами вопрос покупки лицензии.
Примечание. Помимо описанного здесь способа бесплатного использования анализатора, вы можете по-прежнему скачивать с сайта демонстрационную версию анализатора для ознакомления. Если вы хотите на время снять ограничения демонстрационной версии, то просим написать нам.
Примечание 2. Существуют и другие варианты бесплатного лицензирования. Например, существует возможность бесплатного использования PVS-Studio для тех, кто участвует в развитии открытых проектов.
Автоматизация
Если в вашем проекте много файлов, то вы можете воспользоваться вспомогательной утилитой. Вы должны будете указать ей какой комментарий вставлять и каталог с кодом. Затем утилита рекурсивно обойдет все файлы в папке и вложенных папках, добавляя в файлы с исходным кодом соответствующие комментарии. Скачать утилиту (вместе с исходным кодом) можно здесь: how-to-use-pvs-studio-free.
Заключение
Некоторые разработчики могут сказать, что не хотят видеть в начале файла две строчки с комментарием, не относящимся к сути проекта. Это их право, и они могут просто не использовать анализатор. Или они могут приобрести коммерческую лицензию и использовать её без ограничений. Мы рассматриваем наличие этих комментариев, как благодарность за предоставленную лицензию и, заодно, как дополнительную рекламу нашего продукта. Я думаю, это хороший, честный обмен.
Заодно решается вопрос отделения корпоративных проектов от частных инициатив. Если проект делают энтузиасты, они в праве делать с кодом всё, что им хочется, в том числе и добавлять такие комментарии. Если нет, значит за проектом стоит некая организация, от которой мы хотим получить вознаграждение в виде приобретения лицензии.
Надеемся наше предложение и позиция понятны. Если у вас остаются вопросы, то просим написать нам.
Чтобы убедить ваших коллег начать использовать анализатор кода PVS-Studio, предлагаем познакомить их со следующими разделами нашего сайта:
Спасибо за внимание. Давайте вместе сделаем программы надежнее и безопаснее.
Дополнение
Возникло очень много рассуждений на тему того, допустимо ли добавлять и удалять комментарии в исходный код, чтобы бесплатно использовать анализатор. Мы считаем такой приём неприемлемым, так как он по факту является способом обхода ограничения, наложенного нами на бесплатную лицензию. Поэтому мы решили добавить следующий раздел в лицензионное соглашение:
Вы имеете право использовать PVS-Studio бесплатно, добавив в исходный код своего проекта комментарии специального вида. Какие именно комментарии следует добавлять и как автоматизировать этот процесс описано в статье «Как использовать PVS-Studio бесплатно».
Отметим, что данный режим не предназначен для оценки возможностей анализатора. Чтобы познакомиться с анализатором, вы должны использовать демонстрационную версию или запросить у нас временный лицензионный ключ.
Вам следует вставлять комментарии, когда вы уже решили, что будете использовать анализатор на регулярной основе. Вы можете удалить впоследствии эти комментарии, но можете сделать это только один раз.
Не допускается многократное добавление комментариев в исходный код с последующим их удалением. Также не допускается многократное добавление комментариев с последующим откатом содержимого исходных файлов с помощью системы контроля версий. Такие действия направлены на обход условия, что исходный код должен содержать комментарии, и являются нарушением данного соглашения об использовании анализатора.
Дополнение: Поддержка
Постепенно бесплатный вариант лицензирования набирает популярность, и наша команда всё больше времени тратит, оказывая поддержку бесплатным пользователем. При этом многие вопросы повторяются, поэтому мы считаем целесообразным оказывать в дальнейшем поддержку, отвечая на вопросы на сайте StackOverflow.
Общение через сайт StackOverflow сократит объем переписки и позволит нам часто отвечать на вопросы, просто давая ссылку на уже обсужденный вопрос по данной теме. Более того, многие вопросы просто не будут заданы, так как пользователи смогут найти готовые ответы на StackOverflow самостоятельно, и им не потребуется ожидать нашего ответа в почте.
Итак, всех кто использует бесплатную версию PVS-Studio просим задавать нам вопросы на сайте StackOverflow. Чтобы ваш вопрос не остался незамеченным, используйте тег «pvs-studio».
Наши платные клиенты по-прежнему будут получать поддержку приватно через почту. Впрочем, если кто-то из клиентов будет задавать вопросы через StackOverflow, мы не возражаем.
Хотим обратить внимание, что StackOverflow не является багтрекером. Поэтому просим не создавать там топики с такими темами, как «У меня упал плагин PVS-Studio, вот stack-dump» или «Вот это явное ложное срабатывание». Подобные посты противоречат духу сайта StackOverflow и крайне негативно воспринимаются сообществом. Поэтому просим писать туда именно вопросы, связанные с работой анализатора. Чтобы проинформировать нас о явной ошибке, просим по-прежнему писать нам в поддержку.
Использование статического анализатора PVS-Studio при разработке для встраиваемых систем на C и C++
Из этой статьи вы узнаете, как запустить проверку embedded-проекта и как работать с отчетом анализатора. Анализатор PVS-Studio поддерживает ряд компиляторов для встраиваемых систем. В текущей версии возможна проверка проектов при сборке одним из следующих компиляторов под Window, Linux и macOS:
Установка
Процедура установки зависит от операционной системы, под которой вы ведете разработку. Под Linux вы можете установить анализатор из репозитория или из установочного пакета.
Пример для систем на основе Debian:
Под macOS установку и обновление можно произвести из Homebrew:
Второй вариант – установить из dmg пакета или вручную распаковать из архива.
Под Windows установка производится с помощью инсталлятора:
Скачать установочные пакеты для всех поддерживаемых систем и при необходимости запросить триальный ключ вы можете на странице «Скачать и попробовать PVS-Studio».
После установки следует ввести лицензионный ключ. Вы можете найти информацию о том, как это сделать на разных платформах, на странице документации «Как ввести лицензию PVS-Studio, и что делать дальше».
Проверка проектов
Проверку проектов для embedded систем можно производить теми же способами, что и в случае с разработкой под Windows, Linux и macOS.
Варианты запуска под Linux рассмотрены в статье «Знакомство со статическим анализатором PVS-Studio при разработке C++ программ в среде Linux». Имейте в виду, что так как для сборки под embedded используется кросс-компиляция, и имя компилятора может быть нестандартным, вам может понадобиться указать его при анализе проекта. Для этого используется параметр командной строки –compiler или –c:
Применять этот параметр следует в том случае, когда анализатор не может определить тип используемого компилятора, то есть когда выдается ошибка «No compilation units found».
При кросс-компиляции, так как целевая платформа отличается от той, под которой происходит сборка, вместе с компилятором вам может потребоваться указать целевую платформу с помощью параметра —platform, а также тип препроцессора (—preprocessor).
Поддерживаемые платформы: win32, x64, linux32, linux64, macos, arm.
Поддерживаемые препроцессоры: gcc, clang, keil.
По умолчанию под Linux выбирается платформа linux64 и препроцессор gcc.
Если вы используете Windows, проверить проект можно в режиме мониторинга компиляции. Для этого нужно запустить утилиту «C and C++ Compiler Monitoring UI«, которая устанавливается вместе с анализатором. Чтобы запустить мониторинг, зайдите в меню Tools и нажмите Analyze Your Files. Откроется диалог:
Нажмите на кнопку «Start Monitoring» и запустите сборку. После ее завершения нажмите на кнопку «Stop Monitoring» в диалоговом окне в правом нижнем углу экрана:
Результат проверки можно посмотреть в основном окне утилиты «C and C++ Compiler Monitoring UI«.
Также анализ можно запустить из командной строки. Для этого используется утилита CLMonitor. Запустить мониторинг можно командой:
После завершения сборки следует запустить утилиту в режиме анализа:
Анализатор проверит проект и сохранит результаты в файл, указанный в параметре -l.
Работа с отчетами
Чтобы посмотреть отчет под Linux, нужно сконвертировать полученный в результате работы анализатора файл в один из поддерживаемых форматов с помощью утилиты plog-converter. Получить отчет в формате HTML с возможностью просмотра исходного кода можно следующей командой:
Под Windows также существует утилита PlogConverter, которая позволяет конвертировать файлы отчетов аналогичным образом:
Также отчет в формате plog можно посмотреть с помощью утилиты «C and C++ Compiler Monitoring UI» через меню File->Open PVS-Studio Log.
В случае необходимости из этой утилиты можно экспортировать отчет в один из поддерживаемых форматов через меню File.
Стандарт MISRA
PVS-Studio классифицирует предупреждения согласно CWE и SEI CERT, что подходит для статического тестирования защищенности (SAST) обычных приложений. Однако у встраиваемых систем несколько другие требования к безопасности, которые покрывает специально разработанный стандарт MISRA. Текущая версия анализатора поддерживает часть правил из MISRA C и MISRA C++, список диагностик можно посмотреть здесь, и он постоянно расширяется.
Использования правил MISRA при проверке проектов, не предназначенных для embedded, чаще всего неоправданно. Это связано со спецификой стандарта. В большинстве случаев, если код изначально не писался с расчетом на соответствие MISRA, при проверке будет много ложных и бесполезных предупреждений. Поэтому правила MISRA по умолчанию отключены.
Чтобы включить анализ MISRA под Linux, нужно запустить анализ с ключом -a и передать числовой параметр, который задаст необходимый режим. Этот параметр представляет собой комбинацию битовых полей:
Пример запуска (включены диагностики GA и MISRA):
При использовании plog-converter также нужно указать, что диагностики MISRA должны попасть в отчет:
Под Windows можно использовать диалог настроек утилиты «C and C++ Compiler Monitoring UI«:
Заключение
В этой статье мы обзорно рассмотрели возможности анализатора PVS-Studio для проверки проектов, ориентированных на встраиваемые системы. Если вам нужна более подробная информация о том, как использовать анализатор, рекомендую почитать следующие статьи:
Если хотите поделиться этой статьей с англоязычной аудиторией, то прошу использовать ссылку на перевод: Yuri Minaev. Using PVS-Studio Static Analyzer in C and C++ Development for Embedded Systems