mirror of
https://github.com/silverqx/TinyORM.git
synced 2026-02-08 19:39:11 -06:00
138 lines
4.7 KiB
YAML
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$'
|
|
|