From 8122c0f0a835171bbc28f968196ca890b7966ca5 Mon Sep 17 00:00:00 2001 From: Andrey Astafyev Date: Sun, 30 Jun 2019 18:45:56 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B0=20=D0=BF=D1=80=D0=BE=D0=B2=D0=B5=D1=80=D0=BA=D0=B0?= =?UTF-8?q?=20clang-check=20-analyze?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CMLibCodeAnalysisClangAnalyze.cmake | 25 +++++++++++++++++++++++++ CMLibCommon.cmake | 1 + 2 files changed, 26 insertions(+) create mode 100644 CMLibCodeAnalysisClangAnalyze.cmake diff --git a/CMLibCodeAnalysisClangAnalyze.cmake b/CMLibCodeAnalysisClangAnalyze.cmake new file mode 100644 index 0000000..61ec74f --- /dev/null +++ b/CMLibCodeAnalysisClangAnalyze.cmake @@ -0,0 +1,25 @@ +function(add_clang_analyze_check) + list(GET ARGN 0 _target) + set(_sources ${ARGN}) + list(REMOVE_AT _sources 0) + + option(CLANG_ANALYZE_FIX "Perform fixes for Clang-Check" OFF) + find_program(CLANG_CHECK_EXE + NAMES clang-check-9 clang-check-8 clang-check-7 clang-check-6.0 clang-check) + if(CLANG_CHECK_EXE) + if(CLANG_CHECK_FIX) + list(APPEND _args "-fix") + endif() + if(NOT TARGET clang-analyze-check) + add_custom_target(clang-analyze-check) + endif() + add_custom_target(clang-analyze-check-${_target} + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} + COMMAND ${CLANG_CHECK_EXE} -analyze -extra-arg="-Wno-unknown-warning-option" -p ${CMAKE_BINARY_DIR} ${_sources}) + add_dependencies(clang-analyze-check-${_target} ${_target}) + add_dependencies(clang-analyze-check clang-analyze-check-${_target}) + else() + message(WARNING "ClangCheck is not found") + endif() +endfunction() + diff --git a/CMLibCommon.cmake b/CMLibCommon.cmake index a3d958b..b7f1415 100644 --- a/CMLibCommon.cmake +++ b/CMLibCommon.cmake @@ -31,6 +31,7 @@ include(CMLibCommonTargetProperties) include(CMLibCommonLibraryTarget) include(CMLibBuildTypes) include(CMLibCodeAnalysisPvsStudio) +include(CMLibCodeAnalysisClangAnalyze) include(CMLibCodeAnalysisClangTidy) include(CMLibCodeAnalysisClazy) include(cotire)