Skip to content
Snippets Groups Projects

WIP: Feature/#353 add clang tidy to the mix

Closed Jan Delember requested to merge feature/#353_Add_clang-tidy_to_the_mix into master
73 files
+ 658
305
Compare changes
  • Side-by-side
  • Inline

Files

+ 114
0
 
#------------------------------------------------------------------------------
 
# Project Phoenix
 
#
 
# Copyright (c) 2017-2018 RWTH Aachen University, Germany,
 
# Virtual Reality & Immersive Visualization Group.
 
#------------------------------------------------------------------------------
 
# License
 
#
 
# Licensed under the 3-Clause BSD License (the "License");
 
# you may not use this file except in compliance with the License.
 
# See the file LICENSE for the full text.
 
# You may obtain a copy of the License at
 
#
 
# https://opensource.org/licenses/BSD-3-Clause
 
#
 
# Unless required by applicable law or agreed to in writing, software
 
# distributed under the License is distributed on an "AS IS" BASIS,
 
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 
# See the License for the specific language governing permissions and
 
# limitations under the License.
 
#------------------------------------------------------------------------------
 
 
set(EXECUTE_CLANG_TIDY__CLANG_TIDY_EXECUTABLE "/usr/local/Cellar/llvm/5.0.1/bin/clang-tidy")
 
 
 
set(EXECUTE_CLANG_TIDY__CHECKS
 
boost-use-to-string
 
bugprone-*
 
clang-analyzer-*
 
cppcoreguidelines-*
 
google-*
 
hicpp-*
 
misc-*
 
modernize-
 
mpi-*
 
performance-*
 
readability-*
 
)
 
string (REPLACE ";" "," EXECUTE_CLANG_TIDY__CHECKS__COMMA "${EXECUTE_CLANG_TIDY__CHECKS}")
 
 
 
# check if newer than stamp -> needs clang-tidy
 
set(EXECUTE_CLANG_TIDY__SOURCES_TO_TIDY)
 
foreach(EXECUTE_CLANG_TIDY__SOURCE ${EXECUTE_CLANG_TIDY__SOURCES})
 
if(${EXECUTE_CLANG_TIDY__SOURCE} IS_NEWER_THAN ${EXECUTE_CLANG_TIDY__STAMP_FILE})
 
list(APPEND EXECUTE_CLANG_TIDY__SOURCES_TO_TIDY ${EXECUTE_CLANG_TIDY__SOURCE})
 
endif()
 
endforeach()
 
 
 
set(EXECUTE_CLANG_TIDY__INCLUDE_DIRECTORIES
 
${EXECUTE_CLANG_TIDY__TARGET_INCLUDE_DIRECTORIES}
 
${EXECUTE_CLANG_TIDY__TARGET_INTERFACE_INCLUDE_DIRECTORIES}
 
)
 
list(REMOVE_DUPLICATES
 
EXECUTE_CLANG_TIDY__INCLUDE_DIRECTORIES
 
)
 
 
 
set(EXECUTE_CLANG_TIDY__EXTRA_ARGS
 
"-extra-arg='-std=c++14'"
 
)
 
foreach(EXECUTE_CLANG_TIDY__INCLUDE_DIRECTORY
 
${EXECUTE_CLANG_TIDY__INCLUDE_DIRECTORIES})
 
list(APPEND EXECUTE_CLANG_TIDY__EXTRA_ARGS
 
"-extra-arg='-I${EXECUTE_CLANG_TIDY__INCLUDE_DIRECTORY}'")
 
endforeach()
 
foreach(EXECUTE_CLANG_TIDY__SYSTEM_INCLUDE_DIRECTORY
 
${EXECUTE_CLANG_TIDY__TARGET_INTERFACE_SYSTEM_INCLUDE_DIRECTORIES})
 
list(APPEND EXECUTE_CLANG_TIDY__EXTRA_ARGS
 
"-extra-arg='-isystem${EXECUTE_CLANG_TIDY__SYSTEM_INCLUDE_DIRECTORY}'")
 
endforeach()
 
 
 
set(EXECUTE_CLANG_TIDY__COMMAND_LINE
 
"${EXECUTE_CLANG_TIDY__CLANG_TIDY_EXECUTABLE}"
 
"-checks='${EXECUTE_CLANG_TIDY__CHECKS__COMMA}'"
 
"-warnings-as-errors='${EXECUTE_CLANG_TIDY__CHECKS__COMMA}'"
 
"-header-filter=.*"
 
"${EXECUTE_CLANG_TIDY__EXTRA_ARGS}"
 
${EXECUTE_CLANG_TIDY__SOURCES_TO_TIDY}
 
)
 
string(REPLACE ";" " "
 
EXECUTE_CLANG_TIDY__COMMAND_LINE_FORMATTED
 
"${EXECUTE_CLANG_TIDY__COMMAND_LINE}"
 
)
 
 
 
file(WRITE
 
${EXECUTE_CLANG_TIDY__TARGET_BINARY_DIR}/clang-tidy.sh
 
"#!/bin/bash\n"
 
"${EXECUTE_CLANG_TIDY__COMMAND_LINE_FORMATTED}"
 
)
 
 
 
message("executing clang-tidy ...")
 
 
execute_process(
 
COMMAND sh ${EXECUTE_CLANG_TIDY__TARGET_BINARY_DIR}/clang-tidy.sh
 
RESULT_VARIABLE EXECUTE_CLANG_TIDY__CLANG_TIDY_RESULT
 
OUTPUT_VARIABLE EXECUTE_CLANG_TIDY__CLANG_TIDY_OUTPUT
 
ERROR_VARIABLE EXECUTE_CLANG_TIDY__CLANG_TIDY_ERROR
 
OUTPUT_STRIP_TRAILING_WHITESPACE
 
ERROR_STRIP_TRAILING_WHITESPACE
 
)
 
 
if ("${EXECUTE_CLANG_TIDY__CLANG_TIDY_OUTPUT}" MATCHES "^.*(error|warning).*$"
 
OR NOT EXECUTE_CLANG_TIDY__CLANG_TIDY_RESULT EQUAL 0)
 
message ("${EXECUTE_CLANG_TIDY__CLANG_TIDY_OUTPUT}")
 
message ("${EXECUTE_CLANG_TIDY__CLANG_TIDY_ERRORS}")
 
message (FATAL_ERROR "Clang-Tidy found problems with your code")
 
endif ()
 
 
message("... done.")
Loading