From ce5ff46918ae149ef415a831cbcded3c53cf65b3 Mon Sep 17 00:00:00 2001
From: Sebastian Eibl <sebastian.eibl@fau.de>
Date: Fri, 24 Aug 2018 13:42:39 +0200
Subject: [PATCH] enabled modernize-deprecated-headers in clang tidy

added filter to exclude external libraries
---
 .clang-tidy                        |  2 +-
 .gitlab-ci.yml                     |  1 +
 CMakeLists.txt                     |  2 +-
 src/core/debug/PrintStacktrace.cpp |  2 +-
 tests/core/mpi/BroadcastTest.cpp   |  2 +-
 utilities/CMakeLists.txt           |  1 +
 utilities/filterCompileCommands.py | 29 +++++++++++++++++++++++++++++
 7 files changed, 35 insertions(+), 4 deletions(-)
 create mode 100644 utilities/CMakeLists.txt
 create mode 100755 utilities/filterCompileCommands.py

diff --git a/.clang-tidy b/.clang-tidy
index af07d7cf2..5738808c0 100644
--- a/.clang-tidy
+++ b/.clang-tidy
@@ -1,5 +1,5 @@
 ---
-Checks:          '-*,modernize-*,-modernize-use-auto,-modernize-loop-convert,-modernize-pass-by-value,-modernize-raw-string-literal,-modernize-use-using,-modernize-avoid-bind,-modernize-return-braced-init-list,-modernize-deprecated-headers,-modernize-use-transparent-functors,-modernize-redundant-void-arg'
+Checks:          '-*,modernize-*,-modernize-use-auto,-modernize-loop-convert,-modernize-pass-by-value,-modernize-raw-string-literal,-modernize-use-using,-modernize-avoid-bind,-modernize-return-braced-init-list,-modernize-use-transparent-functors,-modernize-redundant-void-arg'
 WarningsAsErrors: '*'
 HeaderFilterRegex: ''
 AnalyzeTemporaryDtors: false
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index d78d00a12..f253211f1 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1151,6 +1151,7 @@ clang-tidy:
       - cd $CI_PROJECT_DIR/build
       - cmake .. -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DWALBERLA_BUFFER_DEBUG=ON -DWALBERLA_BUILD_TESTS=ON -DWALBERLA_BUILD_BENCHMARKS=ON -DWALBERLA_BUILD_TUTORIALS=ON -DWALBERLA_BUILD_TOOLS=ON -DWALBERLA_BUILD_WITH_MPI=ON -DWALBERLA_BUILD_WITH_OPENMP=ON -DCMAKE_BUILD_TYPE=Debug -DWALBERLA_DOUBLE_ACCURACY=ON
       - cmake . -LAH
+      - utilities/filterCompileCommands.py compile_commands.json
       - run-clang-tidy.py -quiet | tee clang-tidy-output.txt
    artifacts:
       paths:
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 08496e073..869cb9f01 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1335,4 +1335,4 @@ waLBerla_export()
 ############################################################################################################################
 
 waLBerla_link_files_to_builddir( .clang-tidy )
-waLBerla_link_files_to_builddir( run-clang-tidy.py )
+add_subdirectory( utilities )
diff --git a/src/core/debug/PrintStacktrace.cpp b/src/core/debug/PrintStacktrace.cpp
index 22b216b55..b4a8e6888 100644
--- a/src/core/debug/PrintStacktrace.cpp
+++ b/src/core/debug/PrintStacktrace.cpp
@@ -39,7 +39,7 @@ void printStacktrace()
 #if defined(WALBERLA_CXX_COMPILER_IS_GNU) || defined(WALBERLA_CXX_COMPILER_IS_INTEL) || defined( WALBERLA_CXX_COMPILER_IS_CLANG)
 
 #include <execinfo.h>
-#include <stdlib.h>
+#include <cstdlib>
 #include <string>
 
 namespace walberla {
diff --git a/tests/core/mpi/BroadcastTest.cpp b/tests/core/mpi/BroadcastTest.cpp
index 9f502ae0c..2724851cf 100644
--- a/tests/core/mpi/BroadcastTest.cpp
+++ b/tests/core/mpi/BroadcastTest.cpp
@@ -26,7 +26,7 @@
 #include "core/mpi/MPIManager.h"
 
 #include <limits>
-#include <stdlib.h>
+#include <cstdlib>
 #include <vector>
 
 
diff --git a/utilities/CMakeLists.txt b/utilities/CMakeLists.txt
new file mode 100644
index 000000000..db4ad8926
--- /dev/null
+++ b/utilities/CMakeLists.txt
@@ -0,0 +1 @@
+waLBerla_link_files_to_builddir( filterCompileCommands.py )
diff --git a/utilities/filterCompileCommands.py b/utilities/filterCompileCommands.py
new file mode 100755
index 000000000..d39a7fac8
--- /dev/null
+++ b/utilities/filterCompileCommands.py
@@ -0,0 +1,29 @@
+#!/usr/bin/env python3
+
+import json
+import sys
+
+def compileCommandSelector(x):
+   return not ("extern" in x["file"])
+
+if __name__ == "__main__":
+   if (len(sys.argv) != 2):
+      print("usage: ./filterCompileCommands.py compile_commands.json")
+      exit(-1)
+
+   filename = sys.argv[1]
+   print("loading compile commands file: {}".format(filename))
+
+   fin = open(filename, "r")
+   cc = json.load(fin)
+   fin.close()
+
+   print("compile commands read: {}".format(len(cc)))
+
+   cc_filtered = list( filter(compileCommandSelector, cc) )
+
+   print("compile commands filtered: {}".format(len(cc_filtered)))
+
+   fout = open(filename, "w")
+   json.dump(cc_filtered, fout)
+   fout.close()
-- 
GitLab