chore: add clang-tidy
diff --git a/.clang-tidy b/.clang-tidy
new file mode 100644
index 0000000..d460f98
--- /dev/null
+++ b/.clang-tidy
@@ -0,0 +1,28 @@
+Checks: "*, \
+###################, \
+# ENABLED CHECKS , \
+###################, \
+modernize-*, \
+cppcoreguidelines-*, \
+hicpp-*, \
+google-*, \
+bugprone-*, \
+llvm-*, \
+performance-*, \
+readability-*, \
+clang-analyzer-*, \
+zircon-*, \
+portability-*, \
+misc-*, \
+boost-*, \
+abseil-*, \
+###################, \
+# DISABLED CHECKS , \
+###################, \
+-fuchsia-default-arguments, \
+-readability-container-size-empty, \
+-google-readability-namespace-comments, \
+-llvm-namespace-comment, \
+-modernize-use-trailing-return-type, \
+-fuchsia-default-arguments-calls \
+"
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 89e5356..767d0d0 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -25,6 +25,7 @@
option(COSE_C_COVERALLS "Generate coveralls data" ON)
option(COSE_C_COVERALLS_SEND "Send data to coveralls site" OFF)
option(COSE_C_BUILD_DOCS "Create docs using Doxygen" OFF)
+option(COSE_C_RUN_CLANG_TIDY "Use Clang-Tidy for static analysis" OFF)
option(COSE_C_BUILD_TESTS "build tests" ON)
option(COSE_C_BUILD_DUMPER "build dumper" ON)
option(BUILD_SHARED_LIBS "Build Shared Libraries" ON)
@@ -90,8 +91,6 @@
set(COSE_C_COVERALLS OFF)
endif()
-message("Build type: ${CMAKE_BUILD_TYPE}")
-
add_definitions(-DUSE_ARRAY)
if(CMAKE_C_COMPILER_ID STREQUAL "GNU" OR CMAKE_C_COMPILER_ID MATCHES "Clang")
message(STATUS "adding GCC/Clang options ")
@@ -145,6 +144,24 @@
# DEPENDENCIES
###############################################################################
+if(COSE_C_RUN_CLANG_TIDY)
+ find_program(
+ CLANG_TIDY_EXE
+ NAMES "clang-tidy"
+ DOC "/usr/bin/clang-tidy")
+ if(NOT CLANG_TIDY_EXE)
+ message(WARNING "clang-tidy not found.")
+ else()
+ message(STATUS "clang-tidy found: ${CLANG_TIDY_EXE}")
+ set(DO_CLANG_TIDY "${CLANG_TIDY_EXE}")
+ endif()
+endif(COSE_C_RUN_CLANG_TIDY)
+
+
+###############################################################################
+# DEPENDENCIES
+###############################################################################
+
if(COSE_C_USE_FIND_PACKAGE)
find_package(cn-cbor)
else()
@@ -166,12 +183,11 @@
externalproject_get_property(project_cn-cbor install_dir)
include_directories("${install_dir}/include")
+ add_library(cn-cbor STATIC IMPORTED GLOBAL)
if(MSVC)
- add_library(cn-cbor STATIC IMPORTED GLOBAL)
set_property(TARGET cn-cbor PROPERTY IMPORTED_LOCATION
"${install_dir}/lib/${CMAKE_SHARED_MODULE_PREFIX}cn-cbor.lib")
else()
- add_library(cn-cbor STATIC IMPORTED GLOBAL)
set_property(
TARGET cn-cbor PROPERTY IMPORTED_LOCATION
"${install_dir}/lib/${CMAKE_SHARED_MODULE_PREFIX}cn-cbor${CMAKE_SHARED_LIBRARY_SUFFIX}")
@@ -265,3 +281,6 @@
message(STATUS "CMAKE_BUILD_TYPE:................${CMAKE_BUILD_TYPE}")
message(STATUS "BUILD_SHARED_LIBS:...............${BUILD_SHARED_LIBS}")
message(STATUS "COSE_VERSION:....................${COSE_VERSION}")
+message(STATUS "CMAKE_C_COMPILER:................${CMAKE_C_COMPILER}")
+message(STATUS "CMAKE_CXX_COMPILER:..............${CMAKE_CXX_COMPILER}")
+message(STATUS "DO_CLANG_TIDY:...................${DO_CLANG_TIDY}")
diff --git a/build_clang_tidy.sh b/build_clang_tidy.sh
new file mode 100755
index 0000000..2c06dca
--- /dev/null
+++ b/build_clang_tidy.sh
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+export CC=clang-10
+export CXX=clang++-10
+rm -rf build
+mkdir build
+cd build
+cmake .. -DCOSE_C_RUN_CLANG_TIDY=ON
+make
diff --git a/dumper/CMakeLists.txt b/dumper/CMakeLists.txt
index 600a0db..bb11620 100644
--- a/dumper/CMakeLists.txt
+++ b/dumper/CMakeLists.txt
@@ -17,4 +17,6 @@
target_link_libraries(cose_dumper PRIVATE ${OPENSSL_LIBRARIES})
endif()
-# target_include_directories(cose_dumper PRIVATE ../src)
+if(CLANG_TIDY_EXE)
+ set_target_properties(cose_dumper PROPERTIES C_CLANG_TIDY "${DO_CLANG_TIDY}")
+endif()
\ No newline at end of file
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 1fe93c0..3c2beac 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -31,11 +31,8 @@
PUBLIC $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include> $<INSTALL_INTERFACE:include>
PRIVATE ../src)
target_link_libraries(${PROJECT_NAME} PRIVATE cn-cbor::cn-cbor)
-# target_include_directories(${PROJECT_NAME} PUBLIC ${dist_dir}/include)
if(COSE_C_USE_MBEDTLS)
- # target_include_directories(${PROJECT_NAME}
- # PUBLIC ${CMAKE_SHARED_MODLE_PREFIX}mbedtls${CMAKE_SHARED_LIBRARY_SUFFIX}/include)
target_link_libraries(${PROJECT_NAME} PRIVATE mbedtls)
else()
target_include_directories(${PROJECT_NAME} PRIVATE ${OPENSSL_INCLUDE_DIR})
@@ -46,6 +43,16 @@
target_link_libraries(${PROJECT_NAME} PRIVATE ws2_32)
endif()
+if(CLANG_TIDY_EXE)
+ set_target_properties(${PROJECT_NAME} PROPERTIES C_CLANG_TIDY "${DO_CLANG_TIDY}")
+endif()
+
+target_compile_options(
+ ${PROJECT_NAME}
+ PRIVATE $<$<OR:$<CXX_COMPILER_ID:AppleClang>,$<CXX_COMPILER_ID:GNU>,$<CXX_COMPILER_ID:Clang>>:-Wextra>
+ $<$<OR:$<CXX_COMPILER_ID:AppleClang>,$<CXX_COMPILER_ID:GNU>,$<CXX_COMPILER_ID:Clang>>:-Wall>
+ $<$<OR:$<CXX_COMPILER_ID:AppleClang>,$<CXX_COMPILER_ID:GNU>,$<CXX_COMPILER_ID:Clang>>:-Wno-sign-compare>)
+
add_library(${PROJECT_NAME}::${PROJECT_NAME} ALIAS ${PROJECT_NAME})
if(COSE_C_COVERALLS)
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
index b95743f..07a9a8a 100644
--- a/test/CMakeLists.txt
+++ b/test/CMakeLists.txt
@@ -18,7 +18,10 @@
endif()
target_include_directories(cose_test PRIVATE ../src)
-# target_include_directories(cose_test PUBLIC ../../cose/cn-cbor/include)
+
+if(CLANG_TIDY_EXE)
+ set_target_properties(cose_test PROPERTIES C_CLANG_TIDY "${DO_CLANG_TIDY}")
+endif()
enable_testing()