From 30560e6cf87c7564407784b436bd78a5e83b21c0 Mon Sep 17 00:00:00 2001 From: SChernykh Date: Thu, 15 Jun 2023 10:32:05 +0200 Subject: [PATCH] CI: use compile command database for clang-tidy --- .github/workflows/clang-tidy.yml | 16 ++++++++++++---- CMakeLists.txt | 5 +++++ src/common.h | 4 ++-- 3 files changed, 19 insertions(+), 6 deletions(-) diff --git a/.github/workflows/clang-tidy.yml b/.github/workflows/clang-tidy.yml index 9b38ab7..08f2007 100644 --- a/.github/workflows/clang-tidy.yml +++ b/.github/workflows/clang-tidy.yml @@ -8,15 +8,17 @@ jobs: runs-on: ubuntu-22.04 steps: + - name: Install dependencies + run: | + sudo apt update + sudo apt install -y libuv1-dev libzmq3-dev libcurl4-openssl-dev + - name: Install clang run: | wget https://apt.llvm.org/llvm.sh chmod +x llvm.sh sudo ./llvm.sh 16 sudo apt-get install -y clang-tidy-16 - - - name: Verify clang-tidy configuration - run: | clang-tidy-16 --verify-config - name: Checkout repository @@ -24,7 +26,13 @@ jobs: with: submodules: true + - name: cmake p2pool + run: | + mkdir build + cd build + cmake .. -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DCMAKE_C_COMPILER=clang-16 -DCMAKE_CXX_COMPILER=clang++-16 -DDEV_CLANG_TIDY=ON + - name: Run clang-tidy run: | cd src - clang-tidy-16 *.cpp -checks=-clang-diagnostic-undefined-internal -warnings-as-errors=* -header-filter=^[^\.] -- -I../external/src/robin-hood-hashing/src/include -I../external/src/rapidjson/include -I../external/src/cryptonote -I../external/src/RandomX/src -I../external/src/cppzmq -I../external/src/libuv/include -I../external/src/libzmq/include -I../external/src/curl/include -I../external/src/miniupnp/miniupnpc/include -I../external/src -DCLANG_TIDY -DSIZE_MAX=UINT64_MAX -DRAPIDJSON_ENDIAN=RAPIDJSON_LITTLEENDIAN -DMINIUPNP_STATICLIB -DRAPIDJSON_PARSE_DEFAULT_FLAGS=kParseTrailingCommasFlag -DWITH_RANDOMX -DWITH_UPNP -DZMQ_STATIC + clang-tidy-16 *.cpp -p ../build -checks=-clang-diagnostic-undefined-internal -warnings-as-errors=* -header-filter=^[^\.] diff --git a/CMakeLists.txt b/CMakeLists.txt index 5126e6f..d4e99ac 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -12,6 +12,7 @@ option(DEV_WITH_TSAN "[Developer only] Compile with thread sanitizer" OFF) option(DEV_WITH_MSAN "[Developer only] Compile with memory sanitizer" OFF) option(DEV_WITH_UBSAN "[Developer only] Compile with undefined behavior sanitizer" OFF) option(DEV_WITH_ASAN "[Developer only] Compile with address sanitizer" OFF) +option(DEV_CLANG_TIDY "[Developer only] Compile for clang-tidy" OFF) set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake") @@ -51,6 +52,10 @@ if (DEV_WITH_ASAN) add_definitions(-DDEV_WITH_ASAN) endif() +if (DEV_CLANG_TIDY) + add_definitions(-DDEV_CLANG_TIDY) +endif() + include(cmake/flags.cmake) set(HEADERS diff --git a/src/common.h b/src/common.h index b5a2dfd..a6e673c 100644 --- a/src/common.h +++ b/src/common.h @@ -204,7 +204,7 @@ struct { #ifdef _MSC_VER _addcarry_u64(_addcarry_u64(0, lo, b.lo, &lo), hi, b.hi, &hi); -#elif defined(__GNUC__) && !defined(CLANG_TIDY) +#elif defined(__GNUC__) && !defined(DEV_CLANG_TIDY) *reinterpret_cast(this) += *reinterpret_cast(&b); #else const uint64_t t = lo; @@ -221,7 +221,7 @@ struct { #ifdef _MSC_VER _subborrow_u64(_subborrow_u64(0, lo, b.lo, &lo), hi, b.hi, &hi); -#elif defined(__GNUC__) && !defined(CLANG_TIDY) +#elif defined(__GNUC__) && !defined(DEV_CLANG_TIDY) *reinterpret_cast(this) -= *reinterpret_cast(&b); #else const uint64_t t = b.lo;