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

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

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

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

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

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

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


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

>
>
Использование анализатора PVS-Studio в …

Использование анализатора PVS-Studio в процессе инкрементальной сборки в Microsoft Visual Studio 2010

20 Июн 2011

Одним из нововведений в последних версиях MSBuild/Visual Studio для компиляторов Visual C++ стала новая система минимальной сборки (также известная как инкрементная сборка), основанная на отслеживании зависимостей между входными и выходными данными при работе компилятора и позволяющая осуществлять пересборку только для файлов, затронутых модификацией исходного кода или не имеющих связанных с ними выходных объектных файлов.

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

В отличие от старой методики минимальной пересборки, завязанной на генерируемые компилятором cl.exe файлы состояний (idb-файлы, Minimal Rebuild Dependancy Database, ключ /Gm) и обладавшей рядом недостатков (как например затруднённость распараллеливания сборки из-за конфликтов доступа и отсутствие прямого отслеживания выходных объектный файлов), новая система не зависит от типа используемых сборочных инструментов (может использоваться как для компиляции, так и для линковки) и имеет открытый API. Данная новинка позволила интегрировать проверку кода анализатором PVS-Studio в процесс разработки на C/C++ с использованием инкрементных пересборок для последней версии Visual Studio 2010. Эта возможность появилась в версии PVS-Studio 4.30.

Одной из основных проблем при регулярном использовании статического анализатора для проверки активно разрабатываемых крупных проектов является необходимость затрачивать большое время на анализ файлов проекта после каждой его модификации. Несмотря на то, что полный анализ можно (и нужно!) регулярно запускать отдельно, например раз в сутки во время ночных сборок, наибольшего эффекта от использования анализатора можно добиться только за счёт как можно более раннего обнаружения и исправления выявленных им дефектов, ведь чем раньше удастся обнаружить ошибку, тем меньше кода придётся в итоге править. Т.О. самым оптимальным вариантом использования статического анализатора является проверка нового кода сразу после его написания. Такой сценарий работы несомненно осложняется необходимостью постоянно вручную запускать проверку для всех модифицированных файлов и каждый раз ждать завершения анализа, что несовместимо с интенсивной разработкой и отладкой нового кода.

Использование анализатора PVS-Studio совместно с системой инкрементной сборки MSBuild позволяет решить все вышеперечисленные проблемы. Включить такой режим послесборочного инкрементального анализа можно в меню PVS-Studio/Incremental Analysis After Build (только для Visual Studio 2010). Инкрементный анализ в Visual Studio 2010 можно использовать и с предыдущими версиями компилятора Visual C++, установив для требуемых проектов соответствующий их версии Platform Toolset.

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

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

Фактически, такой режим работы PVS-Studio приближает по удобству использования наш инструмент к ключу /analyze в некоторых версиях Visual Studio. Теперь вы просто работаете над кодом и компилируете его, при этом периодически получаете сообщения о возможных проблемах от анализатора. А так как анализатор работает в фоне (и количество используемых для анализа ядер можно настроить), то работа с PVS-Studio становится значительно более комфортной. И это значит, что инструмент легко можно установить на машины большого количества (или всех) разработчиков в отделе, чтобы выявлять проблемы в коде сразу же в момент их появления.

ОБНОВЛЕНО: Возможность инкрементального анализа доступна для всех версий Microsoft Visual Studio (2005/2008/2010) начиная с PVS-Studio 4.33.

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

Дата: 22 Дек 2018

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

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

Дата: 14 Апр 2016

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

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

Дата: 21 Ноя 2018

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

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

Дата: 27 Июн 2017

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

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

Дата: 17 Янв 2019

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

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

Дата: 16 Окт 2017

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

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

Дата: 19 Май 2017

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

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

Дата: 22 Окт 2018

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

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

Дата: 20 Мар 2017

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

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

Дата: 30 Янв 2019

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

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

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

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

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