Files
TinyORM/.github/workflows/analyzers.yml
2022-05-12 16:05:56 +02:00

138 lines
4.7 KiB
YAML

name: Clang Tidy/Clazy
on:
pull_request:
push:
branches:
- main
- gh-actions
jobs:
clang-analyzers:
name: clang-tidy and clazy
runs-on: ubuntu-20.04
env:
TINY_CLANG_TIDY_EXECUTED: false
steps:
- uses: actions/checkout@v2
- name: add-apt-repository gcc 11 and Qt 5.15.2
run: |
sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test
sudo add-apt-repository -y ppa:beineri/opt-qt-5.15.2-focal
- name: add-apt-repository Clang 14
run: |
wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add -
sudo add-apt-repository -y "deb http://apt.llvm.org/focal/ llvm-toolchain-focal-14 main"
- name: apt update
run: |
sudo apt update
- name: apt install clang-14, lld, g++-11, clang-tidy-14, Qt 5.15.2 base, and ccache
run: |
sudo apt install -y clang-14 lld g++-11 clang-tidy-14 qt515base ccache
- name: ninja install latest version
uses: seanmiddleditch/gha-setup-ninja@master
with:
destination: ${{ runner.workspace }}/../ninja-build
- name: TinyORM create build folder (clang14-cmake-debug)
run: |
mkdir -p ../TinyORM-builds-cmake/build-clang14-cmake-debug
- name: ccache setup 🕺
uses: Chocobo1/setup-ccache-action@v1
with:
install_ccache: false
update_packager_index: false
ccache_options: |
compression = false
max_size = 3G
- name: vcpkg set-up environment
run: |
echo "VCPKG_ROOT=$VCPKG_INSTALLATION_ROOT" >> $GITHUB_ENV
echo 'VCPKG_OVERLAY_TRIPLETS=${{ github.workspace }}/.github/resources/vcpkg-custom-triplets' \
>> $GITHUB_ENV
echo 'VCPKG_DEFAULT_TRIPLET=x64-linux-dynamic' >> $GITHUB_ENV
echo 'VCPKG_MAX_CONCURRENCY=2' >> $GITHUB_ENV
- name: TinyORM cmake configure (clang14-cmake-debug)
run: >-
source .github/resources/qt5env.sh
cmake
-S .
-B ../TinyORM-builds-cmake/build-clang14-cmake-debug
-G Ninja
-D CMAKE_CXX_COMPILER_LAUNCHER=/usr/bin/ccache
-D CMAKE_CXX_COMPILER:FILEPATH=/usr/bin/clang++-14
-D CMAKE_TOOLCHAIN_FILE:FILEPATH="$VCPKG_INSTALLATION_ROOT/scripts/buildsystems/vcpkg.cmake"
-D CMAKE_DISABLE_PRECOMPILE_HEADERS:BOOL=ON
-D CMAKE_EXPORT_COMPILE_COMMANDS:BOOL=ON
-D CMAKE_BUILD_TYPE:BOOL=Debug
-D VERBOSE_CONFIGURE:BOOL=ON
-D MATCH_EQUAL_EXPORTED_BUILDTREE:BOOL=OFF
-D MYSQL_PING:BOOL=ON
-D BUILD_TESTS:BOOL=ON
-D ORM:BOOL=ON
-D TOM:BOOL=ON
-D TOM_EXAMPLE:BOOL=ON
- name: TinyORM cmake build ✨ (clang14-cmake-debug)
run: |
source .github/resources/qt5env.sh
cmake --build ../TinyORM-builds-cmake/build-clang14-cmake-debug --target all --parallel 2
- name: clazy-standalone install
run: >-
wget $URL_CLAZY_STANDALONE_LINUX_X64
-O ${{ runner.temp }}/clazy-standalone.tar.bz2 --no-verbose
sudo tar xjvf ${{ runner.temp }}/clazy-standalone.tar.bz2 --directory /usr/local
env:
URL_CLAZY_STANDALONE_LINUX_X64: ${{ secrets.URL_CLAZY_STANDALONE_LINUX_X64 }}
- name: TinyORM execute clang-tidy 🔥
run: |
echo 'TINY_CLANG_TIDY_EXECUTED=true' >> $GITHUB_ENV
ln -s ../TinyORM-builds-cmake/build-clang14-cmake-debug/compile_commands.json \
compile_commands.json
run-clang-tidy-14 '(?:src\/|tests\/).+\/(?!mocs_)[\w_\-\+]+\.cpp$'
- name: TinyORM execute clazy-standalone 🚀
if: env.TINY_CLANG_TIDY_EXECUTED == 'true' && (success() || failure())
run: |
checks=\
'level0,level1,level2,'\
`# Manual checks`\
'assert-with-side-effects,container-inside-loop,detaching-member,'\
'heap-allocated-small-trivial-type,ifndef-define-typo,isempty-vs-count,jni-signatures,'\
'qhash-with-char-pointer-key,qproperty-type-mismatch,qrequiredresult-candidates,'\
'qstring-varargs,qt6-deprecated-api-fixes,qt6-fwd-fixes,qt6-header-fixes,'\
'qt6-qhash-signature,raw-environment-function,reserve-candidates,'\
'signal-with-return-value,thread-with-slots,tr-non-literal,'\
`# New in Clazy 1.11`\
'unexpected-flag-enumerator-value,'\
'unneeded-cast,'\
`# New in Clazy 1.11`\
'use-arrow-operator-instead-of-data,'\
'use-chrono-in-qtimer,'\
`# Checks Excluded from level2`\
'no-copyable-polymorphic,no-ctor-missing-parent-argument,no-function-args-by-ref,'\
'no-qstring-allocations,no-rule-of-three'
tools/run-clazy-standalone -checks="$checks" \
-header-filter='(orm|tom|migrations)/.+\.(h|hpp)$' \
'(?:src\/|tests\/).+\/(?!mocs_)[\w_\-\+]+\.cpp$'