From 127ded1247765f9ee0db061bf81cf1d2f0088917 Mon Sep 17 00:00:00 2001 From: David Robillard <d@drobilla.net> Date: Wed, 29 Jun 2022 09:04:27 -0400 Subject: Add header warning test --- .clant.json | 1 - include/.clang-tidy | 35 ----------------------------------- meson.build | 1 + test/headers/.clang-tidy | 33 +++++++++++++++++++++++++++++++++ test/headers/test_headers.cpp | 39 +++++++++++++++++++++++++++++++++++++++ test/meson.build | 37 +++++++++++++++++++++++++++++++++++++ 6 files changed, 110 insertions(+), 36 deletions(-) delete mode 100644 include/.clang-tidy create mode 100644 test/headers/.clang-tidy create mode 100644 test/headers/test_headers.cpp diff --git a/.clant.json b/.clant.json index 712d9d2..76cae6d 100644 --- a/.clant.json +++ b/.clant.json @@ -1,5 +1,4 @@ { "version": "1.0.0", - "include_dirs": ["include"], "mapping_files": [".includes.imp"] } diff --git a/include/.clang-tidy b/include/.clang-tidy deleted file mode 100644 index 890edd2..0000000 --- a/include/.clang-tidy +++ /dev/null @@ -1,35 +0,0 @@ -Checks: > - *, - -*-avoid-c-arrays, - -*-magic-numbers, - -*-no-malloc, - -*-uppercase-literal-suffix, - -abseil-string-find-str-contains, - -altera-*, - -android-cloexec-accept, - -bugprone-easily-swappable-parameters, - -clang-diagnostic-unused-macros, - -cppcoreguidelines-owning-memory, - -cppcoreguidelines-pro-bounds-array-to-pointer-decay, - -cppcoreguidelines-pro-bounds-pointer-arithmetic, - -cppcoreguidelines-pro-type-const-cast, - -cppcoreguidelines-pro-type-reinterpret-cast, - -fuchsia-default-arguments*, - -fuchsia-overloaded-operator, - -google-runtime-int, - -hicpp-no-array-decay, - -llvmlibc-*, - -modernize-return-braced-init-list, - -modernize-use-nodiscard, - -modernize-use-trailing-return-type, - -readability-identifier-length, - -readability-implicit-bool-conversion, -CheckOptions: - - key: modernize-use-override.AllowOverrideAndFinal - value: 'true' -CheckOptions: - - key: cppcoreguidelines-explicit-virtual-functions.AllowOverrideAndFinal - value: 'true' -WarningsAsErrors: '*' -HeaderFilterRegex: '.*' -FormatStyle: file diff --git a/meson.build b/meson.build index a412e06..23bbe04 100644 --- a/meson.build +++ b/meson.build @@ -12,6 +12,7 @@ project('raul', ['cpp'], ]) raul_src_root = meson.current_source_dir() +raul_build_root = meson.current_build_dir() versioned_name = 'raul-@0@'.format(meson.project_version().split('.')[0]) ####################### diff --git a/test/headers/.clang-tidy b/test/headers/.clang-tidy new file mode 100644 index 0000000..374dbd7 --- /dev/null +++ b/test/headers/.clang-tidy @@ -0,0 +1,33 @@ +Checks: > + *, + -*-avoid-c-arrays, + -*-magic-numbers, + -*-no-malloc, + -abseil-string-find-str-contains, + -altera-*, + -android-cloexec-accept, + -bugprone-easily-swappable-parameters, + -cppcoreguidelines-owning-memory, + -cppcoreguidelines-pro-bounds-array-to-pointer-decay, + -cppcoreguidelines-pro-bounds-pointer-arithmetic, + -cppcoreguidelines-pro-type-const-cast, + -cppcoreguidelines-pro-type-reinterpret-cast, + -fuchsia-default-arguments*, + -fuchsia-overloaded-operator, + -google-runtime-int, + -hicpp-no-array-decay, + -llvmlibc-*, + -modernize-return-braced-init-list, + -modernize-use-nodiscard, + -modernize-use-trailing-return-type, + -readability-identifier-length, + -readability-implicit-bool-conversion, +CheckOptions: + - key: modernize-use-override.AllowOverrideAndFinal + value: 'true' +CheckOptions: + - key: cppcoreguidelines-explicit-virtual-functions.AllowOverrideAndFinal + value: 'true' +WarningsAsErrors: '*' +HeaderFilterRegex: '.*' +FormatStyle: file diff --git a/test/headers/test_headers.cpp b/test/headers/test_headers.cpp new file mode 100644 index 0000000..6149f43 --- /dev/null +++ b/test/headers/test_headers.cpp @@ -0,0 +1,39 @@ +/* + Copyright 2022 David Robillard <d@drobilla.net> + + Raul is free software: you can redistribute it and/or modify it under the + terms of the GNU General Public License as published by the Free Software + Foundation, either version 3 of the License, or any later version. + + Raul is distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR + A PARTICULAR PURPOSE. See the GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Raul. If not, see <http://www.gnu.org/licenses/>. +*/ + +#include "raul/Array.hpp" // IWYU pragma: keep +#include "raul/Deletable.hpp" // IWYU pragma: keep +#include "raul/DoubleBuffer.hpp" // IWYU pragma: keep +#include "raul/Exception.hpp" // IWYU pragma: keep +#include "raul/Maid.hpp" // IWYU pragma: keep +#include "raul/Noncopyable.hpp" // IWYU pragma: keep +#include "raul/Path.hpp" // IWYU pragma: keep +#include "raul/RingBuffer.hpp" // IWYU pragma: keep +#include "raul/Semaphore.hpp" // IWYU pragma: keep +#include "raul/Symbol.hpp" // IWYU pragma: keep + +#ifndef _WIN32 +# include "raul/Process.hpp" // IWYU pragma: keep +# include "raul/Socket.hpp" // IWYU pragma: keep +#endif + +#if defined(__GNUC__) +__attribute__((const)) +#endif +int +main() +{ + return 0; +} diff --git a/test/meson.build b/test/meson.build index 2321712..8411377 100644 --- a/test/meson.build +++ b/test/meson.build @@ -13,6 +13,43 @@ if not get_option('tests').disabled() and not meson.is_subproject() endif endif +################### +# Header Warnings # +################### + +header_args = [] +if cpp.get_id() == 'clang' + header_args += [ + '-Wno-c++17-extensions', + '-Wno-padded', + '-Wno-weak-vtables', + ] +elif cpp.get_id() == 'gcc' + header_args += [ + '-Wno-abi-tag', + '-Wno-multiple-inheritance', + '-Wno-padded', + '-Wno-switch-default', + '-Wno-useless-cast', + ] +elif cpp.get_id() == 'msvc' + header_args += [ + '/wd4626', # assignment operator implicitly deleted + '/wd5027', # move assignment operator implicitly deleted + ] +endif + +# Test that headers have (almost) no warnings (ignoring usual suppressions) +test( + 'test_headers', + executable( + 'test_headers', + files('headers/test_headers.cpp'), + cpp_args: header_args, + dependencies: raul_dep, + ), +) + ############## # Unit Tests # ############## -- cgit v1.2.1