Skip to content

Commit cc63c04

Browse files
Merge pull request #5627 from VarunNagaraju/PS-9760-8.0-GCA
PS-9760 Adds clang-tidy checks to CircleCI
2 parents ed364eb + 2736ac1 commit cc63c04

File tree

1 file changed

+40
-9
lines changed

1 file changed

+40
-9
lines changed

.circleci/config.yml

Lines changed: 40 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,24 +2,55 @@ version: 2
22
jobs:
33
build:
44
docker:
5-
- image: circleci/buildpack-deps:bionic
5+
- image: cimg/base:24.04
66
auth:
77
username: $DOCKERHUB_USERNAME
88
password: $DOCKERHUB_PASSWORD
99
steps:
1010
- checkout
1111
- run:
12-
name: Clang-format test
12+
name: Ensure all submodules are updated recursively
13+
command: git submodule update --init --recursive
14+
- run:
15+
name: Clang-format and Clang-tidy test
1316
command: |
1417
set -o xtrace
15-
curl -sSL "http://apt.llvm.org/llvm-snapshot.gpg.key" | sudo -E apt-key add -
16-
echo "deb http://apt.llvm.org/bionic/ llvm-toolchain-bionic-15 main" | sudo tee -a /etc/apt/sources.list > /dev/null
18+
UBUNTU_CODE_NAME="noble"
19+
BASE_BRANCH="8.0"
20+
COMPILER_VERSION="19"
21+
BOOST_VERSION="1_77_0"
22+
BOOST_DIR="/home/circleci/my_boost"
23+
1724
sudo -E apt-get -yq update >> ~/apt-get-update.log 2>&1
18-
sudo -E apt-get -yq --no-install-suggests --no-install-recommends install clang-format-15
19-
git diff -U0 --no-color HEAD^1 *.c *.cc *.cpp *.h *.hpp *.i *.ic *.ih | clang-format-diff-15 -style=file -p1 >_GIT_DIFF
25+
sudo apt-get install -yq --no-install-suggests --allow-unauthenticated --no-install-recommends clang-${COMPILER_VERSION} clang-tidy-${COMPILER_VERSION} clang-format-${COMPILER_VERSION} clang-tools-${COMPILER_VERSION} libc++-${COMPILER_VERSION}-dev libc++abi-${COMPILER_VERSION}-dev libldap2-dev curl libcurl4-openssl-dev bison libudev-dev libkrb5-dev libreadline-dev zlib1g-dev liblz4-dev libedit-dev libevent-dev protobuf-compiler libprotobuf-dev libprotoc-dev libldap2-dev libsasl2-dev libsasl2-modules-gssapi-mit cmake libicu-dev libtirpc-dev
26+
27+
echo "Downloading and extracting Boost."
28+
wget --progress=dot:giga -P ${BOOST_DIR} "https://archives.boost.io/release/${BOOST_VERSION//_/.}/source/boost_${BOOST_VERSION}.tar.gz"
29+
tar -xzf "${BOOST_DIR}/boost_${BOOST_VERSION}.tar.gz" -C "${BOOST_DIR}"
30+
31+
# Prepare compile_commands.json
32+
cd ~/project
33+
cmake -B /home/circleci/debug-build -DCMAKE_BUILD_TYPE=Debug -DWITH_BOOST=${BOOST_DIR} -DWITH_SSL=system -DWITH_AUTHENTICATION_LDAP=ON -DWITH_ROCKSDB=ON -DCMAKE_C_COMPILER=clang-${COMPILER_VERSION} -DCMAKE_CXX_COMPILER=clang++-${COMPILER_VERSION} -DCMAKE_CXX_FLAGS="-stdlib=libc++" -DCMAKE_EXE_LINKER_FLAGS="-stdlib=libc++" -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DWITH_SYSTEM_LIBS=ON -DWITH_FIDO=bundled -DWITH_ZSTD=bundled -DWITH_LZ4=bundled -DWITH_PROTOBUF=bundled ~/project
34+
35+
git remote add target "https://github.com/${CIRCLE_PROJECT_USERNAME}/${CIRCLE_PROJECT_REPONAME}"
36+
git fetch --no-tags --no-recurse-submodules target $BASE_BRANCH
37+
38+
echo "Checking clang-format results"
39+
git diff -U0 "$(git merge-base HEAD target/$BASE_BRANCH)" *.c *.cc *.cpp *.h *.hpp *.i *.ic *.ih | clang-format-diff-$COMPILER_VERSION -style=file -p1 >_GIT_DIFF || true
2040
if [ ! -s _GIT_DIFF ]; then
21-
echo The last git commit is clang-formatted;
41+
echo The last git commit is clang-formatted;
42+
else
43+
cat _GIT_DIFF;
44+
false;
45+
fi
46+
47+
echo "Checking clang-tidy static code analysis results"
48+
git diff -U0 "$(git merge-base HEAD target/$BASE_BRANCH)" *.c *.cc *.cpp *.h *.hpp *.i *.ic *.ih | clang-tidy-diff-${COMPILER_VERSION}.py -clang-tidy-binary clang-tidy-${COMPILER_VERSION} -p1 -path /home/circleci/debug-build -export-fixes=fixes.yaml || true
49+
clang-apply-replacements-${COMPILER_VERSION} .
50+
git diff > _GIT_DIFF_TIDY
51+
if [ ! -s _GIT_DIFF_TIDY ]; then
52+
echo The last git commit is clang-tidy clean;
2253
else
23-
cat _GIT_DIFF;
24-
false;
54+
echo The last git commit has clang-tidy warnings;
55+
cat _GIT_DIFF_TIDY;
2556
fi

0 commit comments

Comments
 (0)