diff --git a/.clang-tidy b/.clang-tidy index d630063315..e70de76c7f 100644 --- a/.clang-tidy +++ b/.clang-tidy @@ -1,18 +1,11 @@ Checks: > -*, - boost-*, portability-*, clang-analyzer-*, - -clang-analyzer-optin*, + -clang-analyzer-optin.*, -clang-analyzer-cplusplus.NewDeleteLeaks, + -clang-analyzer-cplusplus.NewDelete, -clang-analyzer-core.CallAndMessage, - -modernize-avoid-bind -WarningsAsErrors: > - -*, - boost-*, - portability-*, - clang-analyzer-*, - -clang-analyzer-optin*, - -clang-analyzer-cplusplus.NewDeleteLeaks, - -clang-analyzer-core.CallAndMessage -HeaderFilterRegex: '^(apps|components)' + modernize-avoid-bind +WarningsAsErrors: '*' +HeaderFilterRegex: '(apps|components)/' diff --git a/CI/before_script.linux.sh b/CI/before_script.linux.sh index 2589c2807e..c6fd306e25 100755 --- a/CI/before_script.linux.sh +++ b/CI/before_script.linux.sh @@ -38,7 +38,7 @@ fi if [[ $CI_CLANG_TIDY ]]; then CMAKE_CONF_OPTS+=( - -DCMAKE_CXX_CLANG_TIDY="clang-tidy;--warnings-as-errors=*" + -DCMAKE_CXX_CLANG_TIDY=clang-tidy -DBUILD_COMPONENTS_TESTS=ON -DBUILD_OPENMW_TESTS=ON -DBUILD_OPENCS_TESTS=ON diff --git a/apps/benchmarks/detournavigator/navmeshtilescache.cpp b/apps/benchmarks/detournavigator/navmeshtilescache.cpp index 26873d9a03..eabd757796 100644 --- a/apps/benchmarks/detournavigator/navmeshtilescache.cpp +++ b/apps/benchmarks/detournavigator/navmeshtilescache.cpp @@ -179,7 +179,7 @@ namespace generateKeys(std::back_inserter(keys), keys.size() * (100 - hitPercentage) / 100, random); std::size_t n = 0; - for (auto _ : state) + for ([[maybe_unused]] auto _ : state) { const auto& key = keys[n++ % keys.size()]; auto result = cache.get(key.mAgentBounds, key.mTilePosition, key.mRecastMesh); diff --git a/apps/benchmarks/esm/benchrefid.cpp b/apps/benchmarks/esm/benchrefid.cpp index b12f494ab9..3f38177ca7 100644 --- a/apps/benchmarks/esm/benchrefid.cpp +++ b/apps/benchmarks/esm/benchrefid.cpp @@ -104,7 +104,7 @@ namespace std::minstd_rand random; std::vector refIds = generateStringRefIds(state.range(0), random); std::size_t i = 0; - for (auto _ : state) + for ([[maybe_unused]] auto _ : state) { benchmark::DoNotOptimize(refIds[i].serialize()); if (++i >= refIds.size()) @@ -118,7 +118,7 @@ namespace std::vector serializedRefIds = generateSerializedStringRefIds(state.range(0), random, [](ESM::RefId v) { return v.serialize(); }); std::size_t i = 0; - for (auto _ : state) + for ([[maybe_unused]] auto _ : state) { benchmark::DoNotOptimize(ESM::RefId::deserialize(serializedRefIds[i])); if (++i >= serializedRefIds.size()) @@ -131,7 +131,7 @@ namespace std::minstd_rand random; std::vector refIds = generateStringRefIds(state.range(0), random); std::size_t i = 0; - for (auto _ : state) + for ([[maybe_unused]] auto _ : state) { benchmark::DoNotOptimize(refIds[i].serializeText()); if (++i >= refIds.size()) @@ -145,7 +145,7 @@ namespace std::vector serializedRefIds = generateSerializedStringRefIds(state.range(0), random, [](ESM::RefId v) { return v.serializeText(); }); std::size_t i = 0; - for (auto _ : state) + for ([[maybe_unused]] auto _ : state) { benchmark::DoNotOptimize(ESM::RefId::deserializeText(serializedRefIds[i])); if (++i >= serializedRefIds.size()) @@ -158,7 +158,7 @@ namespace std::minstd_rand random; std::vector refIds = generateGeneratedRefIds(random); std::size_t i = 0; - for (auto _ : state) + for ([[maybe_unused]] auto _ : state) { benchmark::DoNotOptimize(refIds[i].serializeText()); if (++i >= refIds.size()) @@ -172,7 +172,7 @@ namespace std::vector serializedRefIds = generateSerializedGeneratedRefIds(random, [](ESM::RefId v) { return v.serializeText(); }); std::size_t i = 0; - for (auto _ : state) + for ([[maybe_unused]] auto _ : state) { benchmark::DoNotOptimize(ESM::RefId::deserializeText(serializedRefIds[i])); if (++i >= serializedRefIds.size()) @@ -185,7 +185,7 @@ namespace std::minstd_rand random; std::vector refIds = generateIndexRefIds(random); std::size_t i = 0; - for (auto _ : state) + for ([[maybe_unused]] auto _ : state) { benchmark::DoNotOptimize(refIds[i].serializeText()); if (++i >= refIds.size()) @@ -199,7 +199,7 @@ namespace std::vector serializedRefIds = generateSerializedIndexRefIds(random, [](ESM::RefId v) { return v.serializeText(); }); std::size_t i = 0; - for (auto _ : state) + for ([[maybe_unused]] auto _ : state) { benchmark::DoNotOptimize(ESM::RefId::deserializeText(serializedRefIds[i])); if (++i >= serializedRefIds.size()) @@ -212,7 +212,7 @@ namespace std::minstd_rand random; std::vector refIds = generateESM3ExteriorCellRefIds(random); std::size_t i = 0; - for (auto _ : state) + for ([[maybe_unused]] auto _ : state) { benchmark::DoNotOptimize(refIds[i].serializeText()); if (++i >= refIds.size()) @@ -226,7 +226,7 @@ namespace std::vector serializedRefIds = generateSerializedESM3ExteriorCellRefIds(random, [](ESM::RefId v) { return v.serializeText(); }); std::size_t i = 0; - for (auto _ : state) + for ([[maybe_unused]] auto _ : state) { benchmark::DoNotOptimize(ESM::RefId::deserializeText(serializedRefIds[i])); if (++i >= serializedRefIds.size()) diff --git a/apps/benchmarks/settings/access.cpp b/apps/benchmarks/settings/access.cpp index 7660d0d55e..9e6999dd1f 100644 --- a/apps/benchmarks/settings/access.cpp +++ b/apps/benchmarks/settings/access.cpp @@ -9,7 +9,7 @@ namespace { void settingsManager(benchmark::State& state) { - for (auto _ : state) + for ([[maybe_unused]] auto _ : state) { benchmark::DoNotOptimize(Settings::Manager::getFloat("sky blending start", "Fog")); } @@ -17,7 +17,7 @@ namespace void settingsManager2(benchmark::State& state) { - for (auto _ : state) + for ([[maybe_unused]] auto _ : state) { benchmark::DoNotOptimize(Settings::Manager::getFloat("near clip", "Camera")); benchmark::DoNotOptimize(Settings::Manager::getBool("transparent postpass", "Post Processing")); @@ -26,7 +26,7 @@ namespace void settingsManager3(benchmark::State& state) { - for (auto _ : state) + for ([[maybe_unused]] auto _ : state) { benchmark::DoNotOptimize(Settings::Manager::getFloat("near clip", "Camera")); benchmark::DoNotOptimize(Settings::Manager::getBool("transparent postpass", "Post Processing")); @@ -36,7 +36,7 @@ namespace void localStatic(benchmark::State& state) { - for (auto _ : state) + for ([[maybe_unused]] auto _ : state) { static float v = Settings::Manager::getFloat("sky blending start", "Fog"); benchmark::DoNotOptimize(v); @@ -45,7 +45,7 @@ namespace void localStatic2(benchmark::State& state) { - for (auto _ : state) + for ([[maybe_unused]] auto _ : state) { static float v1 = Settings::Manager::getFloat("near clip", "Camera"); static bool v2 = Settings::Manager::getBool("transparent postpass", "Post Processing"); @@ -56,7 +56,7 @@ namespace void localStatic3(benchmark::State& state) { - for (auto _ : state) + for ([[maybe_unused]] auto _ : state) { static float v1 = Settings::Manager::getFloat("near clip", "Camera"); static bool v2 = Settings::Manager::getBool("transparent postpass", "Post Processing"); @@ -69,7 +69,7 @@ namespace void settingsStorage(benchmark::State& state) { - for (auto _ : state) + for ([[maybe_unused]] auto _ : state) { float v = Settings::fog().mSkyBlendingStart.get(); benchmark::DoNotOptimize(v); @@ -78,7 +78,7 @@ namespace void settingsStorage2(benchmark::State& state) { - for (auto _ : state) + for ([[maybe_unused]] auto _ : state) { bool v1 = Settings::postProcessing().mTransparentPostpass.get(); float v2 = Settings::camera().mNearClip.get(); @@ -89,7 +89,7 @@ namespace void settingsStorage3(benchmark::State& state) { - for (auto _ : state) + for ([[maybe_unused]] auto _ : state) { bool v1 = Settings::postProcessing().mTransparentPostpass.get(); float v2 = Settings::camera().mNearClip.get(); @@ -102,7 +102,7 @@ namespace void settingsStorageGet(benchmark::State& state) { - for (auto _ : state) + for ([[maybe_unused]] auto _ : state) { benchmark::DoNotOptimize(Settings::get("Fog", "sky blending start")); } @@ -110,7 +110,7 @@ namespace void settingsStorageGet2(benchmark::State& state) { - for (auto _ : state) + for ([[maybe_unused]] auto _ : state) { benchmark::DoNotOptimize(Settings::get("Post Processing", "transparent postpass")); benchmark::DoNotOptimize(Settings::get("Camera", "near clip")); @@ -119,7 +119,7 @@ namespace void settingsStorageGet3(benchmark::State& state) { - for (auto _ : state) + for ([[maybe_unused]] auto _ : state) { benchmark::DoNotOptimize(Settings::get("Post Processing", "transparent postpass")); benchmark::DoNotOptimize(Settings::get("Camera", "near clip")); diff --git a/extern/.clang-tidy b/extern/.clang-tidy new file mode 100644 index 0000000000..bc766e0a9e --- /dev/null +++ b/extern/.clang-tidy @@ -0,0 +1,3 @@ +Checks: >- + -clang-analyzer-core.NullDereference, + -clang-analyzer-cplusplus.NewDelete