cmake: sca: codechecker: Configurable variables

Add a separate variables for CodeChecker commands

Signed-off-by: Pieter De Gendt <pieter.degendt@basalte.be>
This commit is contained in:
Pieter De Gendt 2024-08-23 16:29:29 +02:00 committed by Carles Cufí
commit 19a6dd8e2f

View file

@ -6,12 +6,38 @@ find_program(CODECHECKER_EXE NAMES CodeChecker codechecker REQUIRED)
message(STATUS "Found SCA: CodeChecker (${CODECHECKER_EXE})") message(STATUS "Found SCA: CodeChecker (${CODECHECKER_EXE})")
# Get CodeChecker specific variables # Get CodeChecker specific variables
zephyr_get(CODECHECKER_ANALYZE_JOBS)
zephyr_get(CODECHECKER_ANALYZE_OPTS) zephyr_get(CODECHECKER_ANALYZE_OPTS)
zephyr_get(CODECHECKER_CONFIG_FILE)
zephyr_get(CODECHECKER_EXPORT) zephyr_get(CODECHECKER_EXPORT)
zephyr_get(CODECHECKER_NAME)
zephyr_get(CODECHECKER_PARSE_EXIT_STATUS) zephyr_get(CODECHECKER_PARSE_EXIT_STATUS)
zephyr_get(CODECHECKER_PARSE_OPTS) zephyr_get(CODECHECKER_PARSE_OPTS)
zephyr_get(CODECHECKER_PARSE_SKIP)
zephyr_get(CODECHECKER_STORE) zephyr_get(CODECHECKER_STORE)
zephyr_get(CODECHECKER_STORE_OPTS) zephyr_get(CODECHECKER_STORE_OPTS)
zephyr_get(CODECHECKER_STORE_TAG)
zephyr_get(CODECHECKER_TRIM_PATH_PREFIX)
if(NOT CODECHECKER_NAME)
set(CODECHECKER_NAME zephyr)
endif()
if(CODECHECKER_ANALYZE_JOBS)
set(CODECHECKER_ANALYZE_JOBS "--jobs;${CODECHECKER_ANALYZE_JOBS}")
endif()
if(CODECHECKER_CONFIG_FILE)
set(CODECHECKER_CONFIG_FILE "--config;${CODECHECKER_CONFIG_FILE}")
endif()
if(CODECHECKER_STORE_TAG)
set(CODECHECKER_STORE_TAG "--tag;${CODECHECKER_STORE_TAG}")
endif()
if(CODECHECKER_TRIM_PATH_PREFIX)
set(CODECHECKER_TRIM_PATH_PREFIX "--trim-path-prefix;${CODECHECKER_TRIM_PATH_PREFIX}")
endif()
# CodeChecker uses the compile_commands.json as input # CodeChecker uses the compile_commands.json as input
set(CMAKE_EXPORT_COMPILE_COMMANDS ON) set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
@ -31,7 +57,9 @@ add_custom_target(codechecker ALL
--keep-gcc-include-fixed --keep-gcc-include-fixed
--keep-gcc-intrin --keep-gcc-intrin
--output ${output_dir}/codechecker.plist --output ${output_dir}/codechecker.plist
--name zephyr # Set a default metadata name --name ${CODECHECKER_NAME} # Set a default metadata name
${CODECHECKER_CONFIG_FILE}
${CODECHECKER_ANALYZE_JOBS}
${CODECHECKER_ANALYZE_OPTS} ${CODECHECKER_ANALYZE_OPTS}
${CMAKE_BINARY_DIR}/compile_commands.json ${CMAKE_BINARY_DIR}/compile_commands.json
|| ${CMAKE_COMMAND} -E true # allow to continue processing results || ${CMAKE_COMMAND} -E true # allow to continue processing results
@ -67,6 +95,8 @@ if(DEFINED CODECHECKER_EXPORT)
${output_dir}/codechecker.plist ${output_dir}/codechecker.plist
--export ${export_item} --export ${export_item}
--output ${output_dir}/codechecker.${export_item} --output ${output_dir}/codechecker.${export_item}
${CODECHECKER_CONFIG_FILE}
${CODECHECKER_TRIM_PATH_PREFIX}
${CODECHECKER_PARSE_OPTS} ${CODECHECKER_PARSE_OPTS}
BYPRODUCTS ${output_dir}/codechecker.${export_item} BYPRODUCTS ${output_dir}/codechecker.${export_item}
VERBATIM VERBATIM
@ -74,12 +104,14 @@ if(DEFINED CODECHECKER_EXPORT)
COMMAND_EXPAND_LISTS COMMAND_EXPAND_LISTS
) )
endforeach() endforeach()
else() elseif(NOT CODECHECKER_PARSE_SKIP)
# Output parse results # Output parse results
add_custom_command( add_custom_command(
TARGET codechecker POST_BUILD TARGET codechecker POST_BUILD
COMMAND ${CODECHECKER_EXE} parse COMMAND ${CODECHECKER_EXE} parse
${output_dir}/codechecker.plist ${output_dir}/codechecker.plist
${CODECHECKER_CONFIG_FILE}
${CODECHECKER_TRIM_PATH_PREFIX}
${CODECHECKER_PARSE_OPTS} ${CODECHECKER_PARSE_OPTS}
VERBATIM VERBATIM
USES_TERMINAL USES_TERMINAL
@ -91,6 +123,9 @@ if(DEFINED CODECHECKER_STORE OR DEFINED CODECHECKER_STORE_OPTS)
add_custom_command( add_custom_command(
TARGET codechecker POST_BUILD TARGET codechecker POST_BUILD
COMMAND ${CODECHECKER_EXE} store COMMAND ${CODECHECKER_EXE} store
${CODECHECKER_CONFIG_FILE}
${CODECHECKER_STORE_TAG}
${CODECHECKER_TRIM_PATH_PREFIX}
${CODECHECKER_STORE_OPTS} ${CODECHECKER_STORE_OPTS}
${output_dir}/codechecker.plist ${output_dir}/codechecker.plist
VERBATIM VERBATIM