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

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

Бесплатная лицензия PVS-Studio для специалистов Microsoft MVP
* Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

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

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

Ваше сообщение отправлено.

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


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

>
>
Использование PVS-Studio в очень больши…

Использование PVS-Studio в очень больших проектах (интеграция с MSBuild)

18 Апр 2013

Если в ваше решение (solution) входит много больших проектов, то работа с анализатором PVS-Studio может стать некомфортной. В этой небольшой заметке мы рассмотрим, почему это происходит и как можно исправить ситуацию, интегрировав PVS-Studio в сборочный процесс MSBuild.

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

Но будем считать, что у вас именно тот самый случай. В solution включено большое количество проектов. Общее количество компилируемых файлов исчисляется многими тысячами.

Анализатор PVS-Studio использует функции API, предоставляемые Visual Studio, чтобы собрать информацию о файлах. Он должен узнать, какие файлы следует проверять, какие директивы препроцессора заданы для каждого файла, какие директории с заголовочными файлами нужно использовать и так далее.

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

Сделать с этим мы ничего не можем, так как не можем ускорить вызовы API функций. Однако существует обходной путь. Это интеграция со сборочным процессом MSBuild.

В этой заметке мы не будем рассматривать, как начать использовать MSBuild. Это очень подробно описано в документации. Нет смысла копировать оттуда текст. Со временем что-то может измениться и заметка в блоге устареет. Поэтому отсылаем читателя за более подробной информацией к разделу в документации: "Прямая интеграция анализа PVS-Studio в сборочный процесс MSBuild. Режим интеграции MSBuild в Visual Studio IDE".

Здесь же отметим только достоинства и недоставки интеграции.

Достоинства:

1) Анализатору не нужно собирать информацию о файлах. Всю необходимую информацию ему сообщает MSBuild. Это может существенно сократить время анализа в проектах с огромным количеством файлов.

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

3) Можно проверить проекты, которые являются расширением стандартной проектной модели Visual C++. Например, проекты драйверов. Любой пользователь Visual C++ может расширить проектную модель для добавления каких-нибудь своих специфичных параметров сборки. Но, если проект собирается через MSBuild, в него может быть встроена проверка PVS-Studio. Обычная же проверка PVS-Studio через плагин не всегда в описанной ситуации отработает, так как такая расширенная проектная модель не будет отображена в Visual Studio Extensibility API.

4) Так как проверка PVS-Studio интегрирована в сборочный процесс, то проект можно проверять (одновременно со сборкой) на системе без установленной IDE, например, на сборочном сервере во время ночной сборки.

Недостатки:

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

2) Интеграция с MSBuild приведёт к необходимости модификации проектного файла (*.vcxproj).

Популярные статьи по теме
Эффект последней строки

Дата: 31 Май 2014

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

Я изучил множество ошибок, возникающих в результате копирования кода. И утверждаю, что чаще всего ошибки допускают в последнем фрагменте однотипного кода. Ранее я не встречал в книгах описания этого …
Как и почему статические анализаторы борются с ложными срабатываниями

Дата: 20 Мар 2017

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

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

Дата: 21 Ноя 2018

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

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

Дата: 17 Янв 2019

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

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

Дата: 22 Дек 2018

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

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

Дата: 14 Апр 2016

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

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

Дата: 31 Июл 2017

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

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

Дата: 27 Июн 2017

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

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

Дата: 30 Янв 2019

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

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

Дата: 22 Окт 2018

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

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

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

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