Обновление PVS
This commit is contained in:
		
							
								
								
									
										78
									
								
								thirdparty/PVS-Studio.cmake
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										78
									
								
								thirdparty/PVS-Studio.cmake
									
									
									
									
										vendored
									
									
								
							@@ -33,8 +33,9 @@ if (PVS_STUDIO_AS_SCRIPT)
 | 
			
		||||
    endforeach ()
 | 
			
		||||
 | 
			
		||||
    execute_process(COMMAND ${PVS_STUDIO_COMMAND} ${additional_args}
 | 
			
		||||
                    ERROR_VARIABLE error
 | 
			
		||||
                    RESULT_VARIABLE result)
 | 
			
		||||
                    RESULT_VARIABLE result
 | 
			
		||||
                    OUTPUT_VARIABLE output
 | 
			
		||||
                    ERROR_VARIABLE error)
 | 
			
		||||
 | 
			
		||||
    set(stderr_type "")
 | 
			
		||||
 | 
			
		||||
@@ -42,7 +43,7 @@ if (PVS_STUDIO_AS_SCRIPT)
 | 
			
		||||
        set(stderr_type FATAL_ERROR)
 | 
			
		||||
    endif ()
 | 
			
		||||
 | 
			
		||||
    if (result OR error)
 | 
			
		||||
    if (NOT error STREQUAL "" OR (result AND NOT output STREQUAL "No compilation units were found.\n"))
 | 
			
		||||
        message(${stderr_type} "${error}")
 | 
			
		||||
    endif ()
 | 
			
		||||
 | 
			
		||||
@@ -126,6 +127,11 @@ function (pvs_studio_set_target_flags TARGET CXX C)
 | 
			
		||||
    set(CXX_FLAGS "${${CXX}}")
 | 
			
		||||
    set(C_FLAGS "${${C}}")
 | 
			
		||||
 | 
			
		||||
    if (NOT MSVC)
 | 
			
		||||
        list(APPEND CXX_FLAGS "$<$<BOOL:${CMAKE_SYSROOT}>:--sysroot=${CMAKE_SYSROOT}>")
 | 
			
		||||
        list(APPEND C_FLAGS "$<$<BOOL:${CMAKE_SYSROOT}>:--sysroot=${CMAKE_SYSROOT}>")
 | 
			
		||||
    endif ()
 | 
			
		||||
 | 
			
		||||
    set(prop_incdirs "$<TARGET_PROPERTY:${TARGET},INCLUDE_DIRECTORIES>")
 | 
			
		||||
    list(APPEND CXX_FLAGS "$<$<BOOL:${prop_incdirs}>:-I$<JOIN:${prop_incdirs},$<SEMICOLON>-I>>")
 | 
			
		||||
    list(APPEND C_FLAGS "$<$<BOOL:${prop_incdirs}>:-I$<JOIN:${prop_incdirs},$<SEMICOLON>-I>>")
 | 
			
		||||
@@ -134,6 +140,10 @@ function (pvs_studio_set_target_flags TARGET CXX C)
 | 
			
		||||
    list(APPEND CXX_FLAGS "$<$<BOOL:${prop_compdefs}>:-D$<JOIN:${prop_compdefs},$<SEMICOLON>-D>>")
 | 
			
		||||
    list(APPEND C_FLAGS "$<$<BOOL:${prop_compdefs}>:-D$<JOIN:${prop_compdefs},$<SEMICOLON>-D>>")
 | 
			
		||||
 | 
			
		||||
    set(prop_compopt "$<TARGET_PROPERTY:${TARGET},COMPILE_OPTIONS>")
 | 
			
		||||
    list(APPEND CXX_FLAGS "$<$<BOOL:${prop_compopt}>:$<JOIN:${prop_compopt},$<SEMICOLON>>>")
 | 
			
		||||
    list(APPEND C_FLAGS "$<$<BOOL:${prop_compopt}>:$<JOIN:${prop_compopt},$<SEMICOLON>>>")
 | 
			
		||||
 | 
			
		||||
    set("${CXX}" "${CXX_FLAGS}" PARENT_SCOPE)
 | 
			
		||||
    set("${C}" "${C_FLAGS}" PARENT_SCOPE)
 | 
			
		||||
endfunction ()
 | 
			
		||||
@@ -211,7 +221,7 @@ function (pvs_studio_analyze_file SOURCE SOURCE_DIR BINARY_DIR)
 | 
			
		||||
                           COMMAND "${CMAKE_COMMAND}" -E remove_directory "${LOG}"
 | 
			
		||||
                           COMMAND ${pvscmd}
 | 
			
		||||
                           WORKING_DIRECTORY "${BINARY_DIR}"
 | 
			
		||||
                           DEPENDS "${SOURCE}" "${PVS_STUDIO_CONFIG}" "${PVS_STUDIO_SUPPRESS_BASE}"
 | 
			
		||||
                           DEPENDS "${SOURCE}" "${PVS_STUDIO_SUPPRESS_BASE}" "${PVS_STUDIO_DEPENDS}"
 | 
			
		||||
                           IMPLICIT_DEPENDS "${PVS_STUDIO_LANGUAGE}" "${SOURCE}"
 | 
			
		||||
                           ${depCommandArg}
 | 
			
		||||
                           VERBATIM
 | 
			
		||||
@@ -303,6 +313,7 @@ option(PVS_STUDIO_DEBUG OFF "Add debug info")
 | 
			
		||||
# C_FLAGS flags...              additional C_FLAGS
 | 
			
		||||
# CXX_FLAGS flags...            additional CXX_FLAGS
 | 
			
		||||
# ARGS args...                  additional pvs-studio-analyzer/CompilerCommandsAnalyzer.exe flags
 | 
			
		||||
# CONVERTER_ARGS args...        additional plog-converter/HtmlGenerator.exe flags
 | 
			
		||||
function (pvs_studio_add_target)
 | 
			
		||||
    macro (default VAR VALUE)
 | 
			
		||||
        if ("${${VAR}}" STREQUAL "")
 | 
			
		||||
@@ -319,19 +330,12 @@ function (pvs_studio_add_target)
 | 
			
		||||
        set(DEFAULT_PREPROCESSOR "gcc")
 | 
			
		||||
    endif ()
 | 
			
		||||
 | 
			
		||||
    set(OPTIONAL OUTPUT ALL RECURSIVE HIDE_HELP KEEP_COMBINED_PLOG COMPILE_COMMANDS)
 | 
			
		||||
    set(OPTIONAL OUTPUT ALL RECURSIVE HIDE_HELP KEEP_COMBINED_PLOG COMPILE_COMMANDS KEEP_INTERMEDIATE_FILES)
 | 
			
		||||
    set(SINGLE LICENSE CONFIG TARGET LOG FORMAT BIN CONVERTER PLATFORM PREPROCESSOR CFG_TEXT SUPPRESS_BASE)
 | 
			
		||||
    set(MULTI SOURCES C_FLAGS CXX_FLAGS ARGS DEPENDS ANALYZE MODE)
 | 
			
		||||
    set(MULTI SOURCES C_FLAGS CXX_FLAGS ARGS DEPENDS ANALYZE MODE CONVERTER_ARGS)
 | 
			
		||||
    cmake_parse_arguments(PVS_STUDIO "${OPTIONAL}" "${SINGLE}" "${MULTI}" ${ARGN})
 | 
			
		||||
 | 
			
		||||
    if ("${PVS_STUDIO_CONFIG}" STREQUAL "" OR NOT "${PVS_STUDIO_CFG_TEXT}" STREQUAL "")
 | 
			
		||||
        set(PVS_STUDIO_EMPTY_CONFIG ON)
 | 
			
		||||
    else ()
 | 
			
		||||
        set(PVS_STUDIO_EMPTY_CONFIG OFF)
 | 
			
		||||
    endif ()
 | 
			
		||||
 | 
			
		||||
    default(PVS_STUDIO_CFG_TEXT "analysis-mode=31")
 | 
			
		||||
    default(PVS_STUDIO_CONFIG "${CMAKE_BINARY_DIR}/PVS-Studio.cfg")
 | 
			
		||||
    default(PVS_STUDIO_C_FLAGS "")
 | 
			
		||||
    default(PVS_STUDIO_CXX_FLAGS "")
 | 
			
		||||
    default(PVS_STUDIO_TARGET "pvs")
 | 
			
		||||
@@ -378,17 +382,18 @@ function (pvs_studio_add_target)
 | 
			
		||||
 | 
			
		||||
    string(REPLACE ";" "+" PVS_STUDIO_MODE "${PVS_STUDIO_MODE}")
 | 
			
		||||
 | 
			
		||||
    if (PVS_STUDIO_EMPTY_CONFIG)
 | 
			
		||||
    if ("${PVS_STUDIO_CONFIG}" STREQUAL "" AND NOT "${PVS_STUDIO_CFG_TEXT}" STREQUAL "")
 | 
			
		||||
        set(PVS_STUDIO_CONFIG "${CMAKE_BINARY_DIR}/PVS-Studio.cfg")
 | 
			
		||||
 | 
			
		||||
        set(PVS_STUDIO_CONFIG_COMMAND "${CMAKE_COMMAND}" -E echo "${PVS_STUDIO_CFG_TEXT}" > "${PVS_STUDIO_CONFIG}")
 | 
			
		||||
    else ()
 | 
			
		||||
        set(PVS_STUDIO_CONFIG_COMMAND "${CMAKE_COMMAND}" -E touch "${PVS_STUDIO_CONFIG}")
 | 
			
		||||
 | 
			
		||||
        add_custom_command(OUTPUT "${PVS_STUDIO_CONFIG}"
 | 
			
		||||
                           COMMAND ${PVS_STUDIO_CONFIG_COMMAND}
 | 
			
		||||
                           WORKING_DIRECTORY "${BINARY_DIR}"
 | 
			
		||||
                           COMMENT "Generating PVS-Studio.cfg")
 | 
			
		||||
 | 
			
		||||
        list(APPEND PVS_STUDIO_DEPENDS "${PVS_STUDIO_CONFIG}")
 | 
			
		||||
    endif ()
 | 
			
		||||
 | 
			
		||||
    add_custom_command(OUTPUT "${PVS_STUDIO_CONFIG}"
 | 
			
		||||
                       COMMAND ${PVS_STUDIO_CONFIG_COMMAND}
 | 
			
		||||
                       WORKING_DIRECTORY "${BINARY_DIR}"
 | 
			
		||||
                       COMMENT "Generating PVS-Studio.cfg")
 | 
			
		||||
 | 
			
		||||
    if (NOT "${PVS_STUDIO_PREPROCESSOR}" MATCHES "^${PVS_STUDIO_SUPPORTED_PREPROCESSORS}$")
 | 
			
		||||
        message(FATAL_ERROR "Preprocessor ${PVS_STUDIO_PREPROCESSOR} isn't supported. Available options: ${PVS_STUDIO_SUPPORTED_PREPROCESSORS}.")
 | 
			
		||||
    endif ()
 | 
			
		||||
@@ -397,12 +402,14 @@ function (pvs_studio_add_target)
 | 
			
		||||
    pvs_studio_set_directory_flags("${CMAKE_CURRENT_SOURCE_DIR}" PVS_STUDIO_CXX_FLAGS PVS_STUDIO_C_FLAGS)
 | 
			
		||||
 | 
			
		||||
    if (NOT "${PVS_STUDIO_LICENSE}" STREQUAL "")
 | 
			
		||||
        pvs_studio_join_path(PVS_STUDIO_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}" "${PVS_STUDIO_LICENSE}")
 | 
			
		||||
        list(APPEND PVS_STUDIO_ARGS --lic-file "${PVS_STUDIO_LICENSE}")
 | 
			
		||||
    endif ()
 | 
			
		||||
 | 
			
		||||
    list(APPEND PVS_STUDIO_ARGS --cfg "${PVS_STUDIO_CONFIG}"
 | 
			
		||||
                                --platform "${PVS_STUDIO_PLATFORM}"
 | 
			
		||||
    if (NOT ${PVS_STUDIO_CONFIG} STREQUAL "")
 | 
			
		||||
        list(APPEND PVS_STUDIO_ARGS --cfg "${PVS_STUDIO_CONFIG}")
 | 
			
		||||
    endif ()
 | 
			
		||||
 | 
			
		||||
    list(APPEND PVS_STUDIO_ARGS --platform "${PVS_STUDIO_PLATFORM}"
 | 
			
		||||
                                --preprocessor "${PVS_STUDIO_PREPROCESSOR}")
 | 
			
		||||
 | 
			
		||||
    if (NOT "${PVS_STUDIO_SUPPRESS_BASE}" STREQUAL "")
 | 
			
		||||
@@ -418,6 +425,15 @@ function (pvs_studio_add_target)
 | 
			
		||||
        list(APPEND PVS_STUDIO_ARGS --cc "${CMAKE_C_COMPILER}")
 | 
			
		||||
    endif ()
 | 
			
		||||
 | 
			
		||||
    if (PVS_STUDIO_KEEP_INTERMEDIATE_FILES)
 | 
			
		||||
        list(APPEND PVS_STUDIO_ARGS --dump-files)
 | 
			
		||||
    endif()
 | 
			
		||||
 | 
			
		||||
    string(REGEX REPLACE [123,:] "" ANALYZER_MODE ${PVS_STUDIO_MODE})
 | 
			
		||||
    if (NOT "$ANALYZER_MODE" STREQUAL "GA")
 | 
			
		||||
        list (APPEND PVS_STUDIO_ARGS -a "${ANALYZER_MODE}")
 | 
			
		||||
    endif ()
 | 
			
		||||
 | 
			
		||||
    set(PVS_STUDIO_PLOGS "")
 | 
			
		||||
 | 
			
		||||
    set(PVS_STUDIO_RECURSIVE_TARGETS_NEW)
 | 
			
		||||
@@ -482,7 +498,7 @@ function (pvs_studio_add_target)
 | 
			
		||||
                    ${PVS_STUDIO_ARGS}
 | 
			
		||||
            COMMENT "Analyzing with PVS-Studio"
 | 
			
		||||
            WORKING_DIRECTORY "${CMAKE_BINARY_DIR}"
 | 
			
		||||
            DEPENDS "${PVS_STUDIO_CONFIG}" "${PVS_STUDIO_SUPPRESS_BASE}"
 | 
			
		||||
            DEPENDS "${PVS_STUDIO_SUPPRESS_BASE}" "${PVS_STUDIO_DEPENDS}"
 | 
			
		||||
        )
 | 
			
		||||
        list(APPEND PVS_STUDIO_PLOGS_LOGS "${COMPILE_COMMANDS_LOG}.always")
 | 
			
		||||
        list(APPEND PVS_STUDIO_PLOGS_DEPENDENCIES "${COMPILE_COMMANDS_LOG}")
 | 
			
		||||
@@ -494,9 +510,9 @@ function (pvs_studio_add_target)
 | 
			
		||||
            string(REPLACE / \\ PVS_STUDIO_PLOGS "${PVS_STUDIO_PLOGS}")
 | 
			
		||||
        endif ()
 | 
			
		||||
        if (WIN32)
 | 
			
		||||
            set(COMMANDS COMMAND type ${PVS_STUDIO_PLOGS} ${PVS_STUDIO_PLOGS_LOGS} > "${PVS_STUDIO_LOG}" 2>nul)
 | 
			
		||||
            set(COMMANDS COMMAND type ${PVS_STUDIO_PLOGS} ${PVS_STUDIO_PLOGS_LOGS} > "${PVS_STUDIO_LOG}" 2>nul || cd .)
 | 
			
		||||
        else ()
 | 
			
		||||
            set(COMMANDS COMMAND cat ${PVS_STUDIO_PLOGS} ${PVS_STUDIO_PLOGS_LOGS} > "${PVS_STUDIO_LOG}")
 | 
			
		||||
            set(COMMANDS COMMAND cat ${PVS_STUDIO_PLOGS} ${PVS_STUDIO_PLOGS_LOGS} > "${PVS_STUDIO_LOG}" 2>/dev/null || true)
 | 
			
		||||
        endif ()
 | 
			
		||||
        set(COMMENT "Generating ${LOG_RELATIVE}")
 | 
			
		||||
        if (NOT "${PVS_STUDIO_FORMAT}" STREQUAL "" OR PVS_STUDIO_OUTPUT)
 | 
			
		||||
@@ -506,7 +522,7 @@ function (pvs_studio_add_target)
 | 
			
		||||
            list(APPEND COMMANDS
 | 
			
		||||
                COMMAND "${CMAKE_COMMAND}" -E remove -f "${PVS_STUDIO_LOG}.pvs.raw"
 | 
			
		||||
                COMMAND "${CMAKE_COMMAND}" -E rename "${PVS_STUDIO_LOG}" "${PVS_STUDIO_LOG}.pvs.raw"
 | 
			
		||||
                COMMAND "${PVS_STUDIO_CONVERTER}" -t "${PVS_STUDIO_FORMAT}" "${PVS_STUDIO_LOG}.pvs.raw" -o "${PVS_STUDIO_LOG}" -a "${PVS_STUDIO_MODE}"
 | 
			
		||||
                COMMAND "${PVS_STUDIO_CONVERTER}" "${PVS_STUDIO_CONVERTER_ARGS}" -t "${PVS_STUDIO_FORMAT}" "${PVS_STUDIO_LOG}.pvs.raw" -o "${PVS_STUDIO_LOG}" -a "${PVS_STUDIO_MODE}"
 | 
			
		||||
                )
 | 
			
		||||
            if(NOT PVS_STUDIO_KEEP_COMBINED_PLOG)
 | 
			
		||||
                list(APPEND COMMANDS COMMAND "${CMAKE_COMMAND}" -E remove -f "${PVS_STUDIO_LOG}.pvs.raw")
 | 
			
		||||
@@ -545,7 +561,9 @@ function (pvs_studio_add_target)
 | 
			
		||||
        set(COMMANDS "")
 | 
			
		||||
    endif ()
 | 
			
		||||
 | 
			
		||||
    add_custom_target("${PVS_STUDIO_TARGET}" ${ALL} ${COMMANDS} WORKING_DIRECTORY "${CMAKE_BINARY_DIR}" DEPENDS ${PVS_STUDIO_DEPENDS} "${PVS_STUDIO_LOG}")
 | 
			
		||||
    add_custom_target("${PVS_STUDIO_TARGET}" ${ALL} ${COMMANDS}
 | 
			
		||||
                      WORKING_DIRECTORY "${CMAKE_BINARY_DIR}"
 | 
			
		||||
                      DEPENDS ${PVS_STUDIO_DEPENDS} "${PVS_STUDIO_LOG}")
 | 
			
		||||
 | 
			
		||||
    # A workaround to add implicit dependencies of source files from include directories
 | 
			
		||||
    set_target_properties("${PVS_STUDIO_TARGET}" PROPERTIES INCLUDE_DIRECTORIES "${inc_path}")
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user