Мне было поручено интегрировать нашу систему сборки CMake с HP Fortify SCA и наткнулся на это Thread, который дал некоторые идеи, но не имел особых особенностей, связанных с HP Fortify, поэтому я решил поделиться своей реализацией.
Я создал каталог fortify_tools на том же уровне, что и исходный каталог. Внутри fortify_tools есть файл toolchain и fortify_cc, fortify_cxx и fortify_ar скрипты, которые будут установлены как cmake_compilers через файл toolchain.
fortify_cc
#!/bin/bash
sourceanalyzer -b <PROJECT_ID> gcc [email protected]
fortify_cxx
#!/bin/bash
sourceanalyzer -b <PROJECT_ID> g++ [email protected]
fortify_ar
#!/bin/bash
sourceanalyzer -b <PROJECT_ID> ar [email protected]
Примечание: вставить имя проекта вместо PROJECT_ID
Настройка CMake использовать скрипты выполняются в файле toolchain.
fortify_linux_toolchain.cmake
INCLUDE (CMakeForceCompiler)
SET(CMAKE_SYSTEM_NAME Linux)
SET(CMAKE_SYSTEM_VERSION 1)
#specify the compilers
SET(CMAKE_C_COMPILER ${CMAKE_SOURCE_DIR}/fortify_tools/fortify_cc)
SET(CMAKE_CXX_COMPILER ${CMAKE_SOURCE_DIR}/fortify_tools/fortify_cxx)
SET(CMAKE_AR_COMPILER ${CMAKE_SOURCE_DIR}/fortify_tools/fortify_ar)
Для создания мейкфайлы с помощью файла ToolChain
ccmake -DCMAKE_TOOLCHAIN_FILE=../fortify_tools/foritfy_linux_toolchain.cmake ../
настроить и сгенерировать мейкфайлы и построить свой проект.
После того как проект будет построен из каталога сборки генерировать FORTIFY отчет
sourceanalyzer -Xmx2400M -debug -verbose -b <PROJECT_ID> -scan -f <PROJECT_ID>.fpr
Я понимаю, последний шаг за пределами CMake, но я довольно уверен, cmake_custom_command может быть создан, чтобы выполнить шаг сканирования как действие пост-сборки.
Наконец, это просто реализация Linux, но концепция хорошо масштабируется для Windows, путем создания необходимых пакетных файлов и окна конкретных ToolChain файл
Вы никогда не редактируете созданный файл Makefile, но вы должны сообщить CMake использовать sourceanalyzer в качестве компилятора или аналогичного. – usr1234567
Можете ли вы предоставить мне некоторые сведения о том, как сообщить CMake использовать sourceanalyzer в качестве компилятора? – user2361273
Я ничего не знаю об укреплении. С помощью других инструментов вы заменяете компилятор C или C++ фактическим инструментом. – usr1234567