Enable clang-tidy on CI
This commit is contained in:
parent
4b26c67146
commit
c571d18411
@ -57,9 +57,11 @@ references:
|
|||||||
# They aren't set automatically unfortunately
|
# They aren't set automatically unfortunately
|
||||||
sudo ln -s /usr/bin/$CC /usr/bin/clang
|
sudo ln -s /usr/bin/$CC /usr/bin/clang
|
||||||
sudo ln -s /usr/bin/$CXX /usr/bin/clang++
|
sudo ln -s /usr/bin/$CXX /usr/bin/clang++
|
||||||
|
sudo ln -s /usr/bin/clang-tidy-7 /usr/bin/clang-tidy
|
||||||
|
sudo ln -s /usr/bin/run-clang-tidy-7.py /usr/bin/run-clang-tidy.py
|
||||||
|
|
||||||
# Need a c++14 compliant STL for clang
|
# Need a c++14 compliant STL for clang
|
||||||
sudo apt-get install g++-5
|
sudo apt-get install -y g++-5
|
||||||
sudo apt-get remove g++-4.8 gcc-4.8
|
sudo apt-get remove g++-4.8 gcc-4.8
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@ -457,6 +459,36 @@ jobs:
|
|||||||
DISABLE_BROKEN_TSAN_TESTS: true
|
DISABLE_BROKEN_TSAN_TESTS: true
|
||||||
CMAKE_FLAGS: ""
|
CMAKE_FLAGS: ""
|
||||||
RUN_TESTS: true
|
RUN_TESTS: true
|
||||||
|
clang_tidy:
|
||||||
|
<<: *container_config
|
||||||
|
steps:
|
||||||
|
- <<: *cache_init
|
||||||
|
- <<: *container_setup_pre
|
||||||
|
- <<: *container_setup
|
||||||
|
- <<: *container_setup_post
|
||||||
|
- <<: *upgrade_boost_pre
|
||||||
|
- <<: *upgrade_boost
|
||||||
|
- <<: *upgrade_boost_post
|
||||||
|
- checkout
|
||||||
|
- run:
|
||||||
|
name: clang-tidy
|
||||||
|
command: |
|
||||||
|
# realpath, jq are needed for run-clang-tidy.sh, g++ is needed for pyyaml
|
||||||
|
sudo apt-get install realpath g++ jq
|
||||||
|
pip install pyyaml
|
||||||
|
mkdir cmake
|
||||||
|
cd cmake
|
||||||
|
if ! ../run-clang-tidy.sh -fix ; then
|
||||||
|
git diff > /tmp/clang-tidy-fixes
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
- store_artifacts:
|
||||||
|
path: /tmp/clang-tidy-fixes
|
||||||
|
environment:
|
||||||
|
CC: clang-7
|
||||||
|
CXX: clang++-7
|
||||||
|
BUILD_TOOLSET: clang
|
||||||
|
APT_COMPILER_PACKAGE: "clang-7 clang-tidy-7"
|
||||||
|
|
||||||
workflows:
|
workflows:
|
||||||
version: 2
|
version: 2
|
||||||
@ -507,3 +539,5 @@ workflows:
|
|||||||
<<: *enable_for_tags
|
<<: *enable_for_tags
|
||||||
- thread_sanitizer:
|
- thread_sanitizer:
|
||||||
<<: *enable_for_tags
|
<<: *enable_for_tags
|
||||||
|
- clang_tidy:
|
||||||
|
<<: *enable_for_tags
|
||||||
|
@ -12,6 +12,9 @@ Checks: |
|
|||||||
boost-use-to-string,
|
boost-use-to-string,
|
||||||
-cert-env33-c,
|
-cert-env33-c,
|
||||||
-cert-err58-cpp,
|
-cert-err58-cpp,
|
||||||
|
-cert-err60-cpp,
|
||||||
|
-bugprone-macro-parentheses,
|
||||||
|
-bugprone-exception-escape,
|
||||||
-cppcoreguidelines-owning-memory,
|
-cppcoreguidelines-owning-memory,
|
||||||
-cppcoreguidelines-no-malloc,
|
-cppcoreguidelines-no-malloc,
|
||||||
-cppcoreguidelines-pro-type-const-cast,
|
-cppcoreguidelines-pro-type-const-cast,
|
||||||
@ -21,10 +24,11 @@ Checks: |
|
|||||||
-cppcoreguidelines-pro-type-cstyle-cast,
|
-cppcoreguidelines-pro-type-cstyle-cast,
|
||||||
-cppcoreguidelines-pro-bounds-array-to-pointer-decay,
|
-cppcoreguidelines-pro-bounds-array-to-pointer-decay,
|
||||||
-cppcoreguidelines-pro-type-vararg,
|
-cppcoreguidelines-pro-type-vararg,
|
||||||
|
-cppcoreguidelines-avoid-goto,
|
||||||
|
-clang-analyzer-optin.cplusplus.VirtualCall,
|
||||||
-misc-macro-parentheses,
|
-misc-macro-parentheses,
|
||||||
-misc-unused-raii
|
-misc-unused-raii
|
||||||
#WarningsAsErrors: '*'
|
WarningsAsErrors: '*'
|
||||||
WarningsAsErrors: ''
|
|
||||||
HeaderFilterRegex: '/src/|/test/'
|
HeaderFilterRegex: '/src/|/test/'
|
||||||
CheckOptions:
|
CheckOptions:
|
||||||
- key: google-readability-braces-around-statements.ShortStatementLines
|
- key: google-readability-braces-around-statements.ShortStatementLines
|
||||||
|
@ -8,9 +8,15 @@
|
|||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
NUMCORES=`nproc`
|
export NUMCORES=`nproc` && if [ ! -n "$NUMCORES" ]; then export NUMCORES=`sysctl -n hw.ncpu`; fi
|
||||||
|
echo Using ${NUMCORES} cores
|
||||||
|
|
||||||
# Run cmake in current working directory, but on source that is in the same directory as this script file
|
# Run cmake in current working directory, but on source that is in the same directory as this script file
|
||||||
cmake -DBUILD_TESTING=on -DCMAKE_EXPORT_COMPILE_COMMANDS=ON "${0%/*}"
|
cmake -DBUILD_TESTING=on -DCMAKE_EXPORT_COMPILE_COMMANDS=ON "${0%/*}"
|
||||||
|
|
||||||
|
# Filter all third party code from the compilation database
|
||||||
|
cat compile_commands.json|jq "map(select(.file | test(\"^$(realpath ${0%/*})/(src|test)/.*$\")))" > compile_commands2.json
|
||||||
|
rm compile_commands.json
|
||||||
|
mv compile_commands2.json compile_commands.json
|
||||||
|
|
||||||
run-clang-tidy.py -j${NUMCORES} -quiet -header-filter "$(realpath ${0%/*})/(src|test)/.*" $@
|
run-clang-tidy.py -j${NUMCORES} -quiet -header-filter "$(realpath ${0%/*})/(src|test)/.*" $@
|
||||||
|
Loading…
Reference in New Issue
Block a user