diff --git a/migration/run_clang_tidy_common.sh b/migration/run_clang_tidy_common.sh new file mode 100755 index 000000000..be07e974a --- /dev/null +++ b/migration/run_clang_tidy_common.sh @@ -0,0 +1,36 @@ +#!/usr/bin/env bash +set -euo pipefail + +echo "Ensuring clang-tidy and clang-format are installed" +apt-get update +apt-get install -y clang-tidy clang-format || true + +BUILD_DIR=/repo/build_migrate_Lts_Common +if [ ! -f "$BUILD_DIR/compile_commands.json" ]; then + echo "Regenerating compile_commands.json" + cmake -S /repo -B $BUILD_DIR -G Ninja -DCMAKE_PREFIX_PATH=/opt/Qt/6.8.3/gcc_64 -DCMAKE_CXX_STANDARD=20 -DMIGRATE_MODULE=Lts/Common -DBUILD_TESTING=ON -DCMAKE_EXPORT_COMPILE_COMMANDS=ON +fi + +echo "Running clang-tidy (safe modernize checks)" +CHECKS="modernize-*,-modernize-use-trailing-return-type,-modernize-raw-string-literal" + +# Process each C/C++ source/header under Lts/Common +git ls-files Lts/Common | grep -E '\.(cpp|cc|cxx|h|hpp)$' | while read -r f; do + echo "clang-tidy $f" + clang-tidy "$f" -p "$BUILD_DIR" -checks="$CHECKS" --format-style=file -fix -quiet || true +done + +# Format any modified files +git ls-files -m | grep '^Lts/Common' | while read -r f; do + echo "clang-format $f" + clang-format -i "$f" || true +done + +# Commit changes if any +if [ -n "$(git status --porcelain)" ]; then + git add Lts/Common || true + git commit -m "migrate(Lts/Common): apply clang-tidy modernization fixes\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>" || true +fi + +echo "Done. Modified files:" +git status --porcelain