Для получения триального ключа
заполните форму ниже
Team License (базовая версия)
Enterprise License (расширенная версия)
* Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

** На сайте установлена reCAPTCHA и применяются
Политика конфиденциальности и Условия использования Google.
Запросите информацию о ценах
Новая лицензия
Продление лицензии
--Выберите валюту--
USD
EUR
GBP
RUB
* Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

** На сайте установлена reCAPTCHA и применяются
Политика конфиденциальности и Условия использования Google.
Для получения лицензии для вашего открытого
проекта заполните, пожалуйста, эту форму
* Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

** На сайте установлена reCAPTCHA и применяются
Политика конфиденциальности и Условия использования Google.
Для получения лицензии для вашего открытого
проекта заполните, пожалуйста, эту форму
* Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

** На сайте установлена reCAPTCHA и применяются
Политика конфиденциальности и Условия использования Google.
Мне интересно попробовать плагин на:
* Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

** На сайте установлена reCAPTCHA и применяются
Политика конфиденциальности и Условия использования Google.
Ваше сообщение отправлено.

Мы ответим вам на


Если вы так и не получили ответ, пожалуйста, проверьте папку
Spam/Junk и нажмите на письме кнопку "Не спам".
Так Вы не пропустите ответы от нашей команды.

>
>
PVS-Studio теперь работает и без среды …

PVS-Studio теперь работает и без среды Visual Studio - проверяем препроцессированные файлы от чего угодно

11 Окт 2013

В вышедшей на днях новой версии статического анализатора кода PVS-Studio 5.10 появилась маленькая незаметная утилита PVS-Studio Standalone. Как говорится, маленький шаг для человечества и большой шаг для PVS-Studio :).

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

0219_Standalone_ru/image1.png

Эта утилита уже сейчас позволяет делать (пока) две вещи:

  • Просматривать без запуска Visual Studio IDE результаты анализа (.plog-файл), сохраненные на другой машине.
  • Анализировать уже препроцессированные файлы (полученные каким-либо образом) без запуска препроцессора и без файлов проекта или makefile-ов.

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

В этой статье я покажу два сценария полезного использования этой утилиты.

Сценарий первый - просмотр .plog файла на машине без среды Visual Studio

Предположим, вы по какой-то причине не имеете на своей рабочей машине Visual Studio. Но при этом начитались статей про то, что PVS-Studio это очень круто и не прочь взглянуть на результаты анализа кода. Поскольку вы не имеете поддерживаемых PVS-Studio сред разработки на своей машине, то вы можете попросить коллегу проверить проект в Visual Studio на другой машине, сохранить результаты проверки в .plog файл и принести его на свою машину (желательно вместе с исходниками проекта, чтобы удобнее было разбираться с ошибками). Что нужно для этого?

Подготовка к проверке на машине со средой

  • Развернуть PVS-Studio на той машине, где все-таки будет проверяться проект и есть среда разработки с интегрированной туда PVS-Studio.
  • Настроить переменную SourceTreeRoot в настройках PVS-Studio) так, чтобы она содержала путь до начала файлов с кодом проекта (проверяемых файлов). Это делается для того, чтобы в .plog-файле были относительные пути, а не абсолютные.
  • Выполнить проверку проекта и сохранить файл отчета.

Просмотр отчета на машине без среды

1. Установить PVS-Studio Standalone (выбрать галочку во время инсталяции).

0219_Standalone_ru/image2.png

2. Запустить PVS-Studio Standalone из Windows-меню Start/Пуск.

0219_Standalone_ru/image1.png

3. В запустившейся программе открыть .plog файл.

0219_Standalone_ru/image3.png

4. Загрузился .plog:

0219_Standalone_ru/image4.png

5. Отчет уже можно просматривать, но если кликнуть по сообщению, то увидим просьбу указать папку с исходниками:

0219_Standalone_ru/image5.png

6. Сделаем это:

0219_Standalone_ru/image6.png

7. И теперь можно просматривать лог, работать над фильтрацией и сортировкой сообщений и даже править исходный код!

0219_Standalone_ru/image7.png

Конечно, отнеситесь с пониманием к этой нашей "среде" - она хоть и построена на Scientilla (как и Notepad++), но до IDE уровня Visual Studio ей как до Луны. Самое главное неудобство - отсутствие IntelliSence. Мы пытаемся его компенсировать диалогом поиска. Тем не менее:

  • Вы можете просматривать диагностические сообщения анализатора и осуществлять навигацию по коду.
  • Вы можете скрывать сообщения, фильтровать, отключать отдельные диагностики БЕЗ перезапуска анализа.
  • Вы можете размечать сообщения как ложные срабатывания.
  • В общем, это практически полноценная PVS-Studio, разве что без инкрементального анализа.

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

Второй сценарий использования - проверка препроцессированных файлов

Но самое крутое в PVS-Studio Standalone - это не работа с готовыми логами, а возможность проверки препроцессированных файлов. Вообще в чем сложность интеграции PVS-Studio в произвольный проект? Дело в том, что для своей работы анализатор должен выполнить препроцессирование файлов. И если у вас есть проектный файл .vcproj/.vcxproj (т.е. вы работаете в среде Visual Studio), то создание препроцессированных файлов для PVS-Studio происходит автоматически, когда вы нажимаете кнопку "Проверить". А вот если вы вдруг работаете в другом режиме (например, через Makefile), то вам надо интегрировать вызов PVS-Studio в сборочную систему, что не всегда бывает легко по разным причинам.

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

И тут наш новый инструмент PVS-Studio Standalone как раз в тему. Вы можете ему подсунуть препроцессированные файлы, и он их проверит, найдет ошибки, и даже сопоставит с исходниками. То есть сообщения об ошибках будут на исходные файлы с кодом, а не готовые препроцессированные файлы. Посмотрим как это делается на практике?

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

Сборка zlib

  • Качаем zip-файл, распаковываем в zlib-1.2.8, кладем в корень (в zlib-1.2.8) файл win32\Makefile.msc.
  • Настраиваем сборочное окружение командной строки с помощью VS2012 x86 Native Tools Command Prompt (или чего-то другого).
  • Запускаем nmake -f Makefile.msc.
  • Убеждаемся, что все скомпилировалось.

Получение препроцессированных .i-файлов

1. Открываем на редактирование файл Makefile.msc

2. Добавляем ключ /P генерировать препроцессированные файлы. То есть вместо строки

CFLAGS = -nologo -MD -W3 -O2 -Oy- -Zi -Fd"zlib" $(LOC)

получаем

CFLAGS = -nologo -MD -W3 -O2 -Oy- -Zi -Fd"zlib" /P $(LOC)

3. Генерируем препроцессированные файлы:

nmake -f Makefile.msc clean

nmake -f Makefile.msc

4. Убеждаемся, что в папке есть .i-файлы.

Проверка файлов в PVS-Studio Standalone

1. Запускаем PVS-Studio Standlone.

2. Открываем меню Tools, команду Verify Preprocessed Files...

0219_Standalone_ru/image8.png

3. Заполняем поля следующим образом:

0219_Standalone_ru/image9.png

Что здесь важно: пути до исходников и до .i-файлов (они у нас совпадают), пути до системных include-папок (чтобы не ругаться на сообщения в этих файлах), ну и некоторые дополнительные параметры.

Интерес представляет список поддерживаемых препроцессоров. Вот он более подробно:

0219_Standalone_ru/image10.png

Давний читатель наших статей тут же воскликнет: "Это что же, вы наконец-то gcc поддерживаете?" Отвечаем: "Поддерживаем!". Поддерживаем и в случае MinGW, и в Cygwin, и в случае (О Боже, они сделали это!) Linux.

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

4. Заполнив диалоговое окошко, нажимаем кнопку Start. После некоторого времени, получаем окно с результатами и навигацией:

0219_Standalone_ru/image11.png

Можно проверять и ПРАВИТЬ код прямо в PVS-Studio Standalone!

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

Что дальше?

А дальше каждый, кто просил у нас проверку MinGW, Cygwin, gcc, а также по каким-то причинам просто не мог проверить свой код с помощью PVS-Studio, должен скачать новую версию и поиграться с PVS-Studio Standalone.

P.S. И да, это первая статья про PVS-Studio с таким большим количеством скриншотов :-).

Популярные статьи по теме
Бесплатный PVS-Studio для тех, кто развивает открытые проекты

Дата: 22 Дек 2018

Автор: Андрей Карпов

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

Дата: 19 Май 2017

Автор: Андрей Карпов

Возможно, читатели помнят мою статью под названием "Эффект последней строки". В ней идёт речь о замеченной мной закономерности: ошибка чаще всего допускается в последней строке однотипных блоков текс…
Статический анализ как часть процесса разработки Unreal Engine

Дата: 27 Июн 2017

Автор: Андрей Карпов

Проект Unreal Engine развивается - добавляется новый код и изменятся уже написанный. Неизбежное следствие развития проекта - появление в коде новых ошибок, которые желательно выявлять как можно раньш…
Характеристики анализатора PVS-Studio на примере EFL Core Libraries, 10-15% ложных срабатываний

Дата: 31 Июл 2017

Автор: Андрей Карпов

После большой статьи про проверку операционной системы Tizen мне было задано много вопросов о проценте ложных срабатываний и о плотности ошибок (сколько ошибок PVS-Studio выявляет на 1000 строк кода)…
Технологии, используемые в анализаторе кода PVS-Studio для поиска ошибок и потенциальных уязвимостей

Дата: 21 Ноя 2018

Автор: Андрей Карпов

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

Дата: 17 Янв 2019

Автор: Андрей Карпов

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

Дата: 20 Мар 2017

Автор: Андрей Карпов

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

Дата: 14 Апр 2016

Автор: Андрей Карпов

Вы угадали, ответ - "42". Здесь приводится 42 рекомендации по программированию, которые помогут избежать множества ошибок, сэкономить время и нервы. Автором рекомендаций выступает Андрей Карпов - тех…
PVS-Studio ROI

Дата: 30 Янв 2019

Автор: Андрей Карпов

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

Дата: 22 Окт 2018

Автор: Андрей Карпов

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

Комментарии (0)

Следующие комментарии

На сайте установлена reCAPTCHA и применяются
Политика конфиденциальности и Условия использования Google.
Этот сайт использует куки и другие технологии, чтобы предоставить вам более персонализированный опыт. Продолжая просмотр страниц нашего веб-сайта, вы принимаете условия использования этих файлов. Если вы не хотите, чтобы ваши данные обрабатывались, пожалуйста, покиньте данный сайт. Подробнее →
Принять