1
0
mirror of https://github.com/rwengine/openrw.git synced 2024-11-25 11:52:40 +01:00

cmake: update code coverage cmake script

- add branch coverage
- ignore interface libraries
- ignore generator expressions
This commit is contained in:
Anonymous Maarten 2018-12-18 19:03:05 +01:00
parent 8b38fda984
commit c3573c8070

View File

@ -4,7 +4,7 @@
get_filename_component(_CODECOVERAGE_MODDIR ${CMAKE_CURRENT_LIST_FILE} PATH) get_filename_component(_CODECOVERAGE_MODDIR ${CMAKE_CURRENT_LIST_FILE} PATH)
function(codecoverage_enable _DIR _GLOBALREPORT) function(codecoverage_enable)
if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
find_program(GCOV_BIN gcov) find_program(GCOV_BIN gcov)
if(NOT GCOV_BIN) if(NOT GCOV_BIN)
@ -104,6 +104,10 @@ function(_coverage_filter_languages _RETURNVAR)
set(FILTERED_FILES) set(FILTERED_FILES)
foreach(FILE ${ARGN}) foreach(FILE ${ARGN})
if(FILE MATCHES "^\\$<")
#ignore generator expressions
continue()
endif()
get_filename_component(FILE_EXT "${FILE}" EXT) get_filename_component(FILE_EXT "${FILE}" EXT)
string(TOLOWER "${FILE_EXT}" FILE_EXT) string(TOLOWER "${FILE_EXT}" FILE_EXT)
string(SUBSTRING "${FILE_EXT}" 1 -1 FILE_EXT) string(SUBSTRING "${FILE_EXT}" 1 -1 FILE_EXT)
@ -119,6 +123,11 @@ endfunction()
function(coverage_add_target _TARGET) function(coverage_add_target _TARGET)
cmake_parse_arguments(CAT "" "" "EXCEPT" ${ARGN}) cmake_parse_arguments(CAT "" "" "EXCEPT" ${ARGN})
get_target_property(TARGET_TYPE "${_TARGET}" TYPE)
if(TARGET_TYPE STREQUAL "INTERFACE_LIBRARY")
return()
endif()
get_property(COMPILE_FLAGS TARGET "${_TARGET}" PROPERTY COMPILE_FLAGS) get_property(COMPILE_FLAGS TARGET "${_TARGET}" PROPERTY COMPILE_FLAGS)
set_property(TARGET "${_TARGET}" set_property(TARGET "${_TARGET}"
@ -278,6 +287,7 @@ function(coverage_lcov_capture_target _TARGET)
&& "${GENINFO_BIN}" --quiet --base-directory && "${GENINFO_BIN}" --quiet --base-directory
"${PROJECT_SOURCE_DIR}" --gcov-tool "${COV_BIN}" "${PROJECT_SOURCE_DIR}" --gcov-tool "${COV_BIN}"
--output-filename "${OUTFILE}" --no-external --output-filename "${OUTFILE}" --no-external
--rc lcov_branch_coverage=1
"${LCOV_DIR}/${RELSOURCE}.gcda" "${LCOV_DIR}/${RELSOURCE}.gcda"
|| cp "${INIT_DIR}/${RELSOURCE}.info.init" "${OUTFILE}" || cp "${INIT_DIR}/${RELSOURCE}.info.init" "${OUTFILE}"
DEPENDS "${_TARGET}" "${_TARGET}-capture-init" "${LCOV_DIR}/${RELSOURCE}.gcda" DEPENDS "${_TARGET}" "${_TARGET}-capture-init" "${LCOV_DIR}/${RELSOURCE}.gcda"
@ -309,7 +319,8 @@ function(coverage_lcov_capture_target _TARGET)
COMMAND "${GENHTML_BIN}" --quiet --sort --prefix "${PROJECT_SOURCE_DIR}" COMMAND "${GENHTML_BIN}" --quiet --sort --prefix "${PROJECT_SOURCE_DIR}"
--baseline-file "${LCOV_DATA_PATH_INIT}/${_TARGET}.info" --baseline-file "${LCOV_DATA_PATH_INIT}/${_TARGET}.info"
--output-directory "${LCOV_HTML_PATH}/${_TARGET}" --output-directory "${LCOV_HTML_PATH}/${_TARGET}"
--title "${CMAKE_PROJECT_NAME} - target ${_TARGET}" --highlight --legend --show-details --branch-coverage --function-coverage
--title "${PROJECT_NAME}" --target "${_TARGET}"
--demangle-cpp "${OUTFILE}" --demangle-cpp "${OUTFILE}"
DEPENDS "${_TARGET}-geninfo" "${_TARGET}-capture-init" DEPENDS "${_TARGET}-geninfo" "${_TARGET}-capture-init"
COMMENT "Generating coverage report for target ${_TARGET}" COMMENT "Generating coverage report for target ${_TARGET}"
@ -380,6 +391,7 @@ function(codecoverage_lcov_capture)
COMMAND "${GENHTML_BIN}" --quiet --sort COMMAND "${GENHTML_BIN}" --quiet --sort
--baseline-file "${LCOV_DATA_PATH_INIT}/all_targets.info" --baseline-file "${LCOV_DATA_PATH_INIT}/all_targets.info"
--output-directory "${LCOV_HTML_PATH}/all_targets" --output-directory "${LCOV_HTML_PATH}/all_targets"
--highlight --legend --show-details --branch-coverage --function-coverage
--title "${CMAKE_PROJECT_NAME}" --prefix "${PROJECT_SOURCE_DIR}" --title "${CMAKE_PROJECT_NAME}" --prefix "${PROJECT_SOURCE_DIR}"
--demangle-cpp "${TOTALCAPTURE_FILE}" --demangle-cpp "${TOTALCAPTURE_FILE}"
DEPENDS lcov-geninfo-init lcov-geninfo DEPENDS lcov-geninfo-init lcov-geninfo
@ -401,8 +413,10 @@ function(coverage_lcov_merge_files)
add_custom_command(OUTPUT "${OUTFILE}" add_custom_command(OUTPUT "${OUTFILE}"
COMMAND "${LCOV_BIN}" --quiet -a "${OUTFILE}.raw" --output-file "${OUTFILE}" COMMAND "${LCOV_BIN}" --quiet -a "${OUTFILE}.raw" --output-file "${OUTFILE}"
--rc lcov_branch_coverage=1
--base-directory "${PROJECT_SOURCE_DIR}" ${CLMF_FLAGS} --base-directory "${PROJECT_SOURCE_DIR}" ${CLMF_FLAGS}
COMMAND "${LCOV_BIN}" --quiet -r "${OUTFILE}" ${CLMF_REMOVE_PATTERNS} COMMAND "${LCOV_BIN}" --quiet -r "${OUTFILE}" ${CLMF_REMOVE_PATTERNS}
--rc lcov_branch_coverage=1
--output-file "${OUTFILE}" ${CLMF_FLAGS} --output-file "${OUTFILE}" ${CLMF_FLAGS}
DEPENDS "${OUTFILE}.raw" DEPENDS "${OUTFILE}.raw"
COMMENT "Post-processing ${FILE_REL}" COMMENT "Post-processing ${FILE_REL}"