Вебинар: Использование статических анализаторов кода при разработке безопасного ПО - 19.12
Одним из нововведений в последних версиях 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.
0