Сканирование сборки для языков 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
}
]
}
Далее вызывается команда анализа сборки и указывается путь до конфиг-файла:
В результате работы агент отображает один из трех кодов:
- 0 – успешный анализ, не было выявлено проблем в сборке;
- 1 – были выявлены проблемы в сборке, требуется действие;
- 2 – анализ не удался.
Параметры команды анализа¶
Команда scan build имеет четыре уникальных параметра:
--build-result
– вводные данные представляют собой результат предыдущего процесса сборки, включая скомпилированные артефакты.--lib-versions
– путь к JSON-файлу со списком версий анализируемых библиотек.--output
– путь к файлу, в котором будут сохранены результаты сканирования.--unresolved-file
– путь к файлу, где будут сохранены сведения о библиотеках с неразрешенными версиями.
Для сводки доступных параметров команды и инструкции по использованию можно вызвать команду с флагом -h, --help
.