diff --git a/packages/react-native-reanimated/.clang-tidy b/packages/react-native-reanimated/.clang-tidy new file mode 100644 index 00000000000..2d37c4fcc26 --- /dev/null +++ b/packages/react-native-reanimated/.clang-tidy @@ -0,0 +1,39 @@ +Checks: + # - bugprone-* + # - clang-analyzer-* + # - concurrency-* + - cppcoreguidelines-* + - -cppcoreguidelines-avoid-const-or-ref-data-members + - -cppcoreguidelines-special-member-functions + - -cppcoreguidelines-explicit-virtual-functions + - -cppcoreguidelines-use-default-member-init + - -cppcoreguidelines-non-private-member-variables-in-classes + - -cppcoreguidelines-pro-type-vararg + - -cppcoreguidelines-narrowing-conversions + - -cppcoreguidelines-pro-type-member-init + - -cppcoreguidelines-pro-type-union-access + - -cppcoreguidelines-missing-std-forward + - -cppcoreguidelines-avoid-c-arrays + - -cppcoreguidelines-noexcept-move-operations + - -cppcoreguidelines-prefer-member-initializer + - -cppcoreguidelines-virtual-class-destructor + - -cppcoreguidelines-avoid-magic-numbers + - -cppcoreguidelines-pro-bounds-pointer-arithmetic + - -cppcoreguidelines-macro-usage + - -cppcoreguidelines-no-malloc + - -cppcoreguidelines-rvalue-reference-param-not-moved + - -cppcoreguidelines-pro-type-static-cast-downcast + - -cppcoreguidelines-pro-type-reinterpret-cast + - -cppcoreguidelines-pro-bounds-constant-array-index + - -cppcoreguidelines-init-variables + - -cppcoreguidelines-pro-bounds-array-to-pointer-decay + # - google-* + # - hicpp-* + # - llvm-* + # - misc-* + # - modernize-* + # - objc-* + # - performance-* + # - portability-* + # - readability-* +WarningsAsErrors: "*" diff --git a/packages/react-native-reanimated/package.json b/packages/react-native-reanimated/package.json index 93c67385a2c..e58df06f1c2 100644 --- a/packages/react-native-reanimated/package.json +++ b/packages/react-native-reanimated/package.json @@ -9,6 +9,7 @@ "lint:plugin": "cd plugin && yarn lint", "lint:android": "./scripts/validate-android.sh && ./android/gradlew -p android spotlessCheck -q && ./scripts/cpplint.sh android/src && yarn format:android:cpp --dry-run -Werror && yarn lint:cmake", "lint:common": "./scripts/validate-common.sh && ./scripts/cpplint.sh Common && yarn format:common --dry-run -Werror", + "lint:clang-tidy": "find Common -iname \"*.h\" -o -iname \"*.cpp\" | xargs ./scripts/clang-tidy-lint.sh", "lint:apple": "./scripts/validate-apple.sh && yarn format:apple --dry-run -Werror", "lint:cmake": "find ./android -type d \\( -name build -o -name .cxx \\) -prune -o -type f -name 'CMakeLists.txt' -print | xargs ./scripts/lint-cmake.sh", "format": "yarn format:js && yarn format:plugin && yarn format:apple && yarn format:android:java && yarn format:android:cpp && yarn format:android:cmake && yarn format:common", diff --git a/packages/react-native-reanimated/scripts/clang-tidy-lint.sh b/packages/react-native-reanimated/scripts/clang-tidy-lint.sh new file mode 100755 index 00000000000..de37686f7ae --- /dev/null +++ b/packages/react-native-reanimated/scripts/clang-tidy-lint.sh @@ -0,0 +1,18 @@ +#!/bin/bash + +if ! which clang-tidy >/dev/null; then + echo "error: clang-tidy not installed, download \ + from https://clang.llvm.org/extra/clang-tidy/" 1>&2 + exit 1 +fi + +if [ ! -f "../../compile_commands.json" ]; then + echo "info: missing compile_commands.json, generating one" + ( + cd ../../apps/fabric-example || exit 1 + yarn + cd android && ./gradlew assembleDebug --build-cache -PreactNativeArchitectures=arm64-v8a + ) +fi + +clang-tidy --quiet "$@"