我的任务是将我们的 CMake 构建系统与 HP Fortify SCA 集成,遇到了这个 Thread,它提供了一些见解,但缺乏与 HP Fortify 相关的细节,所以我想我会分享我的实现。
我在源目录的同一级别创建了一个 fortify_tools 目录。在 fortify_tools 内部是一个工具链文件和 fortify_cc、fortify_cxx 和 fortify_ar 脚本,这些脚本将通过工具链文件设置为 cmake_compilers。
强化_cc
#!/bin/bash
sourceanalyzer -b <PROJECT_ID> gcc $@
强化_cxx
#!/bin/bash
sourceanalyzer -b <PROJECT_ID> g++ $@
强化_ar
#!/bin/bash
sourceanalyzer -b <PROJECT_ID> ar $@
注意:插入您的项目名称代替 PROJECT_ID
将 cmake 设置为使用脚本是在工具链文件中完成的。
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)
使用工具链文件生成 makefile
ccmake -DCMAKE_TOOLCHAIN_FILE=../fortify_tools/foritfy_linux_toolchain.cmake ../
配置并生成您的 makefile 并构建您的项目。
从构建目录中构建项目后,生成一个强化报告
sourceanalyzer -Xmx2400M -debug -verbose -b <PROJECT_ID> -scan -f <PROJECT_ID>.fpr
我知道最后一步在 CMake 之外,但我非常有信心可以创建一个 cmake_custom_command 来执行扫描步骤作为构建后操作。
最后,这只是 linux 实现,但通过创建必要的批处理文件和特定于 Windows 的工具链文件,该概念可以很好地扩展到 Windows