Перейти к содержанию

Сканирование сборки для языков C и C++

В случае, если для сборки C/С++ проекта не используется пакетный менеджер Conan и соответствующие манифесты, для получения списка используемых библиотек Johnny можно запустить в специальном режиме для анализа вывода процесса сборки.

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

Версия используемой библиотеки может быть найдена если библиотека была подключена статически. В таком случае агент анализирует .pc файл, содержащий метаданные о компоненте.

Пример работы

В проект добавляется JSON-файл buildConfig, описывающий последовательность команд для сборки. Например:

{
 //  Commands for execution
 "commands": [
    {
   // Command
   "command": "make",
   // Command execute parameters
   "flags_and_args": "clean"
  },
  {
   "command": "./configure"  
  },
  {
   "command": "make",
   // analyze this command
   "do_analyze": true
  }
 ]
}

Далее вызывается команда анализа сборки и указывается путь до конфиг-файла:

./johnny scan build ./buildConfig.json

В результате работы агент отображает один из трех кодов:

  • 0 – успешный анализ, не было выявлено проблем в сборке;
  • 1 – были выявлены проблемы в сборке, требуется действие;
  • 2 – анализ не удался.

Параметры команды анализа

Команда scan build имеет четыре уникальных параметра:

  • --build-result – вводные данные представляют собой результат предыдущего процесса сборки, включая скомпилированные артефакты.
  • --lib-versions – путь к JSON-файлу со списком версий анализируемых библиотек.
  • --output – путь к файлу, в котором будут сохранены результаты сканирования.
  • --unresolved-file – путь к файлу, где будут сохранены сведения о библиотеках с неразрешенными версиями.

Для сводки доступных параметров команды и инструкции по использованию можно вызвать команду с флагом -h, --help.