2016-04-05 8 views
0

У меня есть Makefile, созданный CMake. Следующий путь к исполняемому CMake устанавливается в Makefile:Используйте Fortify sourceanalyzer с CMake

CMAKE_COMMAND = /home/xyz/opt/cmake/cmake-3.1.1/bin/cmake 

Как я могу интегрировать FORTIFY sourceanalyzer с ним и запустить сканирование?

+0

Вы никогда не редактируете созданный файл Makefile, но вы должны сообщить CMake использовать sourceanalyzer в качестве компилятора или аналогичного. – usr1234567

+0

Можете ли вы предоставить мне некоторые сведения о том, как сообщить CMake использовать sourceanalyzer в качестве компилятора? – user2361273

+0

Я ничего не знаю об укреплении. С помощью других инструментов вы заменяете компилятор C или C++ фактическим инструментом. – usr1234567

ответ

0

Укрепление не поддерживает CMake, я получил подтверждение от команды поддержки Fortify.

2

Я имел такую ​​же проблему, но решить ее, запустив его так:

  1. sourceanalyzer -b PROJECT_ID -clean
  2. Перейдите в каталог сборки и выполнить очищаете или удалить все содержание, включая Makefile
  3. Run CMake, изменяя CC и переменные CXX: CC = "sourceanalyzer -b pROJECT_ID НКУ" CXX = "sourceanalyzer -b pROJECT_ID г ++" CMake ..
  4. Run make and fortify должны переводить файлы, в то время как компиляторы выполняют свою работу.
  5. Run sourceanalyzer -b PROJECT_ID -SCAN -f results.fpr

Надеется, что это помогает.

+0

Привет, Stan, спасибо за ваш ответ, но CMake работает по-другому, и мы не можем установить значения CC и CXX. См. Следующую страницу: http://stackoverflow.com/questions/34906024/how-do-i-force-cmake-to-use-cl-exe-without-full-path/36791990#36791990 – user2361273

0

Мне было поручено интегрировать нашу систему сборки 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 файл

0

Этот ответ поздно, но может кому-то помочь. Это на самом деле легко исправить - вам просто нужно запустить cmake внутри sourceanalyzer. Создайте простой скрипт сборки, который вызывает cmake, а затем создайте, и вместо этого используйте sourceanalyzer. Я использую fortify 4.21.

 Смежные вопросы

  • Нет связанных вопросов^_^