aboutsummaryrefslogtreecommitdiff
path: root/thirdparty/ryml/ext/c4core/cmake/c4StaticAnalysis.cmake
diff options
context:
space:
mode:
Diffstat (limited to 'thirdparty/ryml/ext/c4core/cmake/c4StaticAnalysis.cmake')
-rw-r--r--thirdparty/ryml/ext/c4core/cmake/c4StaticAnalysis.cmake154
1 files changed, 0 insertions, 154 deletions
diff --git a/thirdparty/ryml/ext/c4core/cmake/c4StaticAnalysis.cmake b/thirdparty/ryml/ext/c4core/cmake/c4StaticAnalysis.cmake
deleted file mode 100644
index 06de5ca2f..000000000
--- a/thirdparty/ryml/ext/c4core/cmake/c4StaticAnalysis.cmake
+++ /dev/null
@@ -1,154 +0,0 @@
-include(PVS-Studio)
-include(GetFlags)
-include(c4GetTargetPropertyRecursive)
-
-
-function(_c4sta_default_if_not_set var dft)
- if("${${var}}" STREQUAL "")
- set(${var} "${dft}" PARENT_SCOPE)
- endif()
-endfunction()
-
-
-function(c4_setup_static_analysis umbrella_option)
- if(WIN32)
- c4_dbg("no static analyzer available in WIN32")
- return()
- endif()
- if("${CMAKE_BUILD_TYPE}" STREQUAL "Coverage")
- c4_dbg("Coverage build: disabling static analyzers")
- return()
- endif()
- _c4sta_default_if_not_set(C4_LINT ${umbrella_option})
- _c4sta_default_if_not_set(C4_LINT_TESTS ${umbrella_option})
- _c4sta_default_if_not_set(C4_LINT_CLANG_TIDY ${umbrella_option})
- _c4sta_default_if_not_set(C4_LINT_PVS_STUDIO OFF)
- # option to turn lints on/off
- cmake_dependent_option(${_c4_uprefix}LINT "add static analyzer targets" ${C4_LINT} ${umbrella_option} OFF)
- cmake_dependent_option(${_c4_uprefix}LINT_TESTS "add tests to run static analyzer targets" ${C4_LINT_TESTS} ${umbrella_option} OFF)
- # options for individual lints - contingent on linting on/off
- cmake_dependent_option(${_c4_uprefix}LINT_CLANG_TIDY "use the clang-tidy static analyzer" ${C4_LINT_CLANG_TIDY} "${_c4_uprefix}LINT" ON)
- cmake_dependent_option(${_c4_uprefix}LINT_PVS_STUDIO "use the PVS-Studio static analyzer https://www.viva64.com/en/b/0457/" ${C4_LINT_PVS_STUDIO} "${_c4_uprefix}LINT" OFF)
- if(${_c4_uprefix}LINT_CLANG_TIDY)
- find_program(CLANG_TIDY clang-tidy)
- endif()
- if(${_c4_uprefix}LINT_PVS_STUDIO)
- set(${_c4_uprefix}LINT_PVS_STUDIO_FORMAT "errorfile" CACHE STRING "PVS-Studio output format. Choices: xml,csv,errorfile(like gcc/clang),tasklist(qtcreator)")
- endif()
- #
- set(sa)
- if(${_c4_uprefix}LINT_CLANG_TIDY)
- set(sa "clang_tidy")
- endif()
- if(${_c4_uprefix}LINT_PVS_STUDIO)
- set(sa "${sa} PVS-Studio")
- endif()
- if(sa)
- c4_dbg("enabled static analyzers: ${sa}")
- endif()
-endfunction()
-
-
-function(c4_static_analysis_target target_name folder generated_targets)
- set(any_linter OFF)
- if(${_c4_uprefix}LINT_CLANG_TIDY OR ${_c4_uprefix}LINT_PVS_STUDIO)
- set(any_linter ON)
- endif()
- if(${_c4_uprefix}LINT AND any_linter)
- # umbrella target for running all linters for this particular target
- if(any_linter AND NOT TARGET ${_c4_lprefix}lint-all)
- add_custom_target(${_c4_lprefix}lint-all)
- if(folder)
- #message(STATUS "${target_name}: folder=${folder}")
- set_target_properties(${_c4_lprefix}lint-all PROPERTIES FOLDER "${folder}")
- endif()
- endif()
- if(${_c4_uprefix}LINT_CLANG_TIDY)
- c4_static_analysis_clang_tidy(${target_name}
- ${target_name}-lint-clang_tidy
- ${_c4_lprefix}lint-all-clang_tidy
- "${folder}")
- list(APPEND ${generated_targets} ${_c4_lprefix}lint-clang_tidy)
- add_dependencies(${_c4_lprefix}lint-all ${_c4_lprefix}lint-all-clang_tidy)
- endif()
- if(${_c4_uprefix}LINT_PVS_STUDIO)
- c4_static_analysis_pvs_studio(${target_name}
- ${target_name}-lint-pvs_studio
- ${_c4_lprefix}lint-all-pvs_studio
- "${folder}")
- list(APPEND ${generated_targets} ${_c4_lprefix}lint-pvs_studio)
- add_dependencies(${_c4_lprefix}lint-all ${_c4_lprefix}lint-all-pvs_studio)
- endif()
- endif()
-endfunction()
-
-
-function(c4_static_analysis_add_tests target_name)
- if(${_c4_uprefix}LINT_CLANG_TIDY AND ${_c4_uprefix}LINT_TESTS)
- add_test(NAME ${target_name}-lint-clang_tidy-run
- COMMAND
- ${CMAKE_COMMAND} --build ${CMAKE_CURRENT_BINARY_DIR} --target ${target_name}-lint-clang_tidy)
- endif()
- if(${_c4_uprefix}LINT_PVS_STUDIO AND ${_c4_uprefix}LINT_TESTS)
- add_test(NAME ${target_name}-lint-pvs_studio-run
- COMMAND
- ${CMAKE_COMMAND} --build ${CMAKE_CURRENT_BINARY_DIR} --target ${target_name}-lint-pvs_studio)
- endif()
-endfunction()
-
-
-#------------------------------------------------------------------------------
-function(c4_static_analysis_clang_tidy subj_target lint_target umbrella_target folder)
- c4_static_analysis_clang_tidy_get_cmd(${subj_target} ${lint_target} cmd)
- string(REPLACE ";" " " cmd_str "${cmd}")
- add_custom_target(${lint_target}
- COMMAND ${CMAKE_COMMAND} -E echo "cd ${CMAKE_CURRENT_SOURCE_DIR} ; ${cmd_str}"
- COMMAND ${cmd}
- VERBATIM
- COMMENT "clang-tidy: analyzing sources of ${subj_target}"
- WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
- if(folder)
- set_target_properties(${lint_target} PROPERTIES FOLDER "${folder}")
- endif()
- if(NOT TARGET ${umbrella_target})
- add_custom_target(${umbrella_target})
- endif()
- add_dependencies(${umbrella_target} ${lint_target})
-endfunction()
-
-function(c4_static_analysis_clang_tidy_get_cmd subj_target lint_target cmd)
- get_target_property(_clt_all_srcs ${subj_target} SOURCES)
- _c4cat_filter_srcs_hdrs("${_clt_all_srcs}" _clt_srcs)
- set(result "${CLANG_TIDY}" -p ${CMAKE_BINARY_DIR} --header-filter=.* ${_clt_srcs})
- set(${cmd} ${result} PARENT_SCOPE)
-endfunction()
-
-
-#------------------------------------------------------------------------------
-function(c4_static_analysis_pvs_studio subj_target lint_target umbrella_target folder)
- c4_get_target_property_recursive(_c4al_pvs_incs ${subj_target} INCLUDE_DIRECTORIES)
- c4_get_include_flags(_c4al_pvs_incs ${_c4al_pvs_incs})
- separate_arguments(_c4al_cxx_flags_sep UNIX_COMMAND "${CMAKE_CXX_FLAGS} ${_c4al_pvs_incs}")
- separate_arguments(_c4al_c_flags_sep UNIX_COMMAND "${CMAKE_C_FLAGS} ${_c4al_pvs_incs}")
- pvs_studio_add_target(TARGET ${lint_target}
- ALL # indicates that the analysis starts when you build the project
- #PREPROCESSOR ${_c4al_preproc}
- FORMAT tasklist
- LOG "${CMAKE_CURRENT_BINARY_DIR}/${subj_target}.pvs-analysis.tasks"
- ANALYZE ${name} #main_target subtarget:path/to/subtarget
- CXX_FLAGS ${_c4al_cxx_flags_sep}
- C_FLAGS ${_c4al_c_flags_sep}
- #CONFIG "/path/to/PVS-Studio.cfg"
- )
- if(folder)
- set_target_properties(${lint_target} PROPERTIES FOLDER "${folder}")
- endif()
- if(NOT TARGET ${umbrella_target})
- add_custom_target(${umbrella_target})
- endif()
- add_dependencies(${umbrella_target} ${lint_target})
-endfunction()
-
-function(c4_static_analysis_pvs_studio_get_cmd subj_target lint_target cmd)
- set(${cmd} $<RULE_LAUNCH_CUSTOM:${subj_target}> PARENT_SCOPE)
-endfunction()