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()