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

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

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

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

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

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

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


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

>
>
Incredibuild для проверки большого прое…

Incredibuild для проверки большого проекта с помощью PVS-Studio

24 Июл 2015

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

0339_IncrediBuild2_ru/image1.png

Об инструментах PVS-Studio и Incredibuild

PVS-Studio выполняет анализ C/C++ кода и подсказывает программисту, где находятся возможные ошибки, или указывает на участки кода, которые могут повлечь проблемы в будущем.

Анализатор состоит из нескольких частей, и проверку каждого файла с исходным кодом выполняет процесс PVS-Studio.exe (ядро анализатора). Далее я буду использовать термин "поток", подразумевая, что в одном потоке запущен один процесс PVS-Studio.exe для проверки одного исходно файла проекта. А файлов будет очень много....

Incredibuild - программное обеспечение для распределённых вычислений, которое позволяет с лёгкостью задействовать несколько компьютеров и ускорить работу своих приложений. При этом не нужно беспокоится за зависимости, которые присутствуют у распараллеленных процессах.

Мы будем использовать Incredibuild, чтобы выполнить анализ проекта во много потоков, используя дополнительные компьютеры.

О проверяемом проекте

Проверяемый проект пожелал быть неназванным, но он имеет около 7 млн. строк исходного кода. Размер кодовой базы - 300 MB, и около 9000 файлов. Проверка такого проекта анализатором PVS-Studio на компьютере с процессором Intel Core i7-4770 3.40 GHz и 16 GB ОЗУ в 8 потоков занимает около 6 часов. Далее я расскажу, как с помощью инструмента Incredibuild и нескольких компьютеров удалось сильно ускорить время анализа проекта.

Результаты

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

При настройке Incredibuild на компьютерах, один из них настраивается как координатор, остальные настраиваются как агенты, которые подключаются к координатору. Т.к. проверка проекта запускалась на агенте, то на этом компьютере в настройках было задано загружать только 1 поток, чтобы излишняя нагрузка не мешала сбору результатов. Для координатора тоже было задано выполнять вычисления только в 1 поток.

Тест первый

Для первого тестового запуска PVS-Studio, были доступны 5 компьютеров:

  • Координатор (1 поток);
  • Агент N1 (1 поток, на нём запускался анализ);
  • Агент N2 (8 потоков);
  • Агент N3 (8 потоков);
  • Агент N4 (8 потоков).

Итого 1 + 1 + 8 + 8 + 8 = 26 потоков для параллельного запуска анализатора для 26 файлов одновременно.

На рисунке 1 представлена проверка проекта анализатором в 26 потоков.

0339_IncrediBuild2_ru/image2.png

Рисунок 1 - Проверка проекта анализатором в 26 потоков

Для читателей, не знакомых с Incredibuild, поясню, что зелёной полоской обозначается 1 процесс, который успешно отработал на компьютере с именем, которое написано слева. На полоске пишется имя процесса. А по временной шкале снизу можно определить, в какой момент времени процесс стартовал и завершился, таким образом сразу видна длительность работы любого распределённого процесса.

На рисунке выше запечатлена проверка довольно крупных исходных файлов. Распараллеливание выполняется очень равномерно и эффективно при длительной загрузке потоков.

На рисунке 2 представлен анализ разных по объёму файлов исходного кода.

0339_IncrediBuild2_ru/image4.png

Рисунок 2 - Проверка мелких и крупных файлов проекта в 26 потоков

Как мы видим, быстрое завершение потоков приводит к накладным расходам на создание новых потоков и происходит небольшое простаивание некоторых компьютеров. Но в целом распараллеливание выполняется очень хорошо. Анализ проекта выполнился за 2 часа 10 минут вместо 6 часов, очень даже неплохо.

Тест второй

Для второго тестового запуска PVS-Studio, были доступны 7 компьютеров:

  • Координатор (1 поток);
  • Агент N1 (2 потока, на нём запускался анализ);
  • Агент N2 (8 потоков);
  • Агент N3 (8 потоков);
  • Агент N4 (8 потоков);
  • Агент N5 (8 потоков);
  • Агент N6 (8 потоков).

Итого 1 + 2 + 8 + 8 + 8 + 8 + 8 = 43 потоков для параллельного запуска анализатора для 43 файлов одновременно.

На рисунке 3 представлена проверка проекта анализатором в 43 потока.

0339_IncrediBuild2_ru/image6.png

Рисунок 3 - Проверка проекта анализатором в 43 потока.

Список из 43 потоков не удаётся увидеть целиком, но хорошо видно, как возросло простаивание компьютеров при проверке маленьких файлов. Но всё равно выглядит очень здорово, учитывая, что общее время анализа составило уже 1 час 24 минуты вместо 6 часов и из приложенных усилий было только быстрая установка Incredibuild на нужные компьютеры. Для настройки PVS-Studio потребовалось изменить всего 1 пункт в настройках - задать количество потоков.

Заключение

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

Ещё раз, что нам потребовалось для быстрой проверки проекта с помощью PVS-Studio:

  • Установить Incredibuild на нужные компьютеры.
  • Увеличить количество потоков в настройках PVS-Studio.
  • Запустить анализ из консоли Incredibuild.

Полученные результаты:

  • Проверка на 1 компьютере - 6 часов.
  • Проверка в 26 потоков - 2 часа 10 минут.
  • Проверка в 43 потока - 1 час 24 минуты.

О том, как использовать PVS-Studio и Incredibuild в своём проекте, вы можете прочесть в статье: "Интеграция PVS-Studio с системой распределённой сборки Incredibuild".

Популярные статьи по теме
Место SAST в Secure SDLC: 3 причины внедрения в DevSecOps-пайплайн

Дата: 19 Апр 2022

Автор: Сергей Васильев

Репутационные и денежные риски, связанные с уязвимостями, огромны. На фоне этого понятен повышенный интерес к безопасности и стремление выстроить цикл безопасной разработки (SSDLC). Сегодня мы погово…
Что нового появилось в PVS-Studio в 2021 году

Дата: 31 Дек 2021

Автор: Максим Стефанов, Олег Лысый, Сергей Васильев

2021 вот-вот закончится, а значит, настало время подведения итогов! Сегодня мы поговорим о том, что нового появилось в анализаторе PVS-Studio за прошедший год. Устраивайтесь поудобнее, мы начинаем.
Как в VSCode смотреть отчёты статических анализаторов, поддерживающих SARIF

Дата: 09 Авг 2021

Автор: Николай Миронов

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

Дата: 18 Май 2021

Автор: Максим Стефанов

В поддержку PVS-Studio часто поступают предложения от пользователей по улучшению продукта. Многие из них мы с радостью берёмся реализовывать. Одно из последних таких предложений было связано с дорабо…
Ускоряем сборку и анализ при помощи Incredibuild

Дата: 17 Май 2021

Автор: Максим Звягинцев

"Да сколько ты ещё будешь собирать?" – фраза, которую каждый разработчик произносил хотя бы раз посреди ночи. Да, сборка бывает долгой и от этого никуда не деться. Нельзя же просто так взять и распар…

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

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