2020-09-05 18:29:19 +02:00
|
|
|
# Syntax reference https://help.github.com/en/actions/reference/workflow-syntax-for-github-actions
|
|
|
|
# Environment reference https://help.github.com/en/actions/reference/virtual-environments-for-github-hosted-runners
|
|
|
|
name: undefined behaviour sanitizers
|
|
|
|
|
2023-09-01 18:52:20 +02:00
|
|
|
on:
|
|
|
|
push:
|
|
|
|
branches:
|
|
|
|
- 'main'
|
|
|
|
- 'releases/**'
|
|
|
|
tags:
|
|
|
|
- '2.*'
|
|
|
|
pull_request:
|
2020-09-05 18:29:19 +02:00
|
|
|
|
2022-08-26 23:25:07 +02:00
|
|
|
permissions:
|
|
|
|
contents: read
|
|
|
|
|
2020-09-05 18:29:19 +02:00
|
|
|
jobs:
|
|
|
|
build:
|
|
|
|
|
2022-05-31 19:55:57 +02:00
|
|
|
runs-on: ubuntu-22.04
|
2020-09-05 18:29:19 +02:00
|
|
|
|
2021-03-05 21:55:57 +01:00
|
|
|
env:
|
2023-03-04 09:02:35 +01:00
|
|
|
QT_VERSION: 5.15.2
|
2022-12-07 09:20:09 +01:00
|
|
|
UBSAN_OPTIONS: print_stacktrace=1:halt_on_error=1:report_error_type=1
|
2023-04-01 09:40:10 +02:00
|
|
|
# TODO: figure out why there are cache misses with PCH enabled
|
|
|
|
CCACHE_SLOPPINESS: pch_defines,time_macros
|
2021-03-05 21:55:57 +01:00
|
|
|
|
2020-09-05 18:29:19 +02:00
|
|
|
steps:
|
2022-10-11 19:50:59 +02:00
|
|
|
- uses: actions/checkout@v3
|
2020-09-05 18:29:19 +02:00
|
|
|
|
2023-04-01 09:40:10 +02:00
|
|
|
- name: ccache
|
|
|
|
uses: hendrikmuhs/ccache-action@v1.2
|
|
|
|
with:
|
|
|
|
key: ${{ github.workflow }}-${{ github.job }}-${{ matrix.os }}
|
|
|
|
|
2023-10-04 10:09:49 +02:00
|
|
|
- name: Set up Python 3.12
|
2022-10-11 19:50:59 +02:00
|
|
|
uses: actions/setup-python@v4
|
2022-01-29 20:44:26 +01:00
|
|
|
with:
|
2023-10-04 10:09:49 +02:00
|
|
|
python-version: '3.12'
|
2022-10-25 21:53:02 +02:00
|
|
|
check-latest: true
|
2022-01-29 20:44:26 +01:00
|
|
|
|
2020-09-05 18:29:19 +02:00
|
|
|
- name: Install missing software on ubuntu
|
|
|
|
run: |
|
2022-08-23 21:40:31 +02:00
|
|
|
sudo apt-get update
|
2022-09-27 18:49:18 +02:00
|
|
|
sudo apt-get install -y cmake make libpcre3-dev libboost-container-dev
|
2022-08-23 21:40:31 +02:00
|
|
|
|
|
|
|
- name: Install clang
|
|
|
|
run: |
|
2023-08-01 14:28:13 +02:00
|
|
|
sudo apt-get purge --auto-remove llvm python3-lldb-14 llvm-14
|
2022-08-23 21:40:31 +02:00
|
|
|
wget https://apt.llvm.org/llvm.sh
|
|
|
|
chmod +x llvm.sh
|
2023-08-09 12:45:15 +02:00
|
|
|
sudo ./llvm.sh 17
|
2020-09-05 18:29:19 +02:00
|
|
|
|
2023-03-04 09:02:35 +01:00
|
|
|
- name: Install Qt ${{ env.QT_VERSION }}
|
|
|
|
uses: jurplel/install-qt-action@v3
|
|
|
|
with:
|
|
|
|
version: ${{ env.QT_VERSION }}
|
|
|
|
modules: 'qtcharts'
|
|
|
|
cache: true
|
|
|
|
|
2023-10-09 12:25:56 +02:00
|
|
|
# TODO: disable warnings
|
2022-06-03 21:33:56 +02:00
|
|
|
- name: CMake
|
|
|
|
run: |
|
2023-04-01 09:40:10 +02:00
|
|
|
cmake -S . -B cmake.output -DCMAKE_BUILD_TYPE=RelWithDebInfo -DHAVE_RULES=On -DBUILD_TESTS=On -DBUILD_GUI=ON -DWITH_QCHART=ON -DUSE_MATCHCOMPILER=Verify -DANALYZE_UNDEFINED=On -DENABLE_CHECK_INTERNAL=On -DUSE_BOOST=On -DCPPCHK_GLIBCXX_DEBUG=Off -DCMAKE_DISABLE_PRECOMPILE_HEADERS=On -DCMAKE_GLOBAL_AUTOGEN_TARGET=On -DDISABLE_DMAKE=On -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache
|
2021-03-05 21:55:57 +01:00
|
|
|
env:
|
2023-08-09 12:45:15 +02:00
|
|
|
CC: clang-17
|
|
|
|
CXX: clang++-17
|
2022-06-03 21:33:56 +02:00
|
|
|
|
|
|
|
- name: Build cppcheck
|
|
|
|
run: |
|
|
|
|
cmake --build cmake.output --target cppcheck -- -j $(nproc)
|
|
|
|
|
|
|
|
- name: Build test
|
|
|
|
run: |
|
2023-04-01 09:40:10 +02:00
|
|
|
cmake --build cmake.output --target testrunner -- -j $(nproc)
|
2020-09-05 18:29:19 +02:00
|
|
|
|
|
|
|
- name: Run tests
|
2022-06-03 21:33:56 +02:00
|
|
|
run: ./cmake.output/bin/testrunner
|
2020-09-05 18:29:19 +02:00
|
|
|
|
2023-03-04 09:02:35 +01:00
|
|
|
- name: Generate dependencies
|
|
|
|
run: |
|
|
|
|
# make sure auto-generated GUI files exist
|
|
|
|
make -C cmake.output autogen
|
|
|
|
make -C cmake.output gui-build-deps triage-build-ui-deps
|
|
|
|
|
2023-05-04 10:54:19 +02:00
|
|
|
# TODO: only fail the step on sanitizer issues - since we use processes it will only fail the underlying process which will result in an cppcheckError
|
2021-02-20 13:34:57 +01:00
|
|
|
- name: Self check
|
|
|
|
run: |
|
2023-10-26 10:52:44 +02:00
|
|
|
selfcheck_options="-q -j$(nproc) --std=c++11 --template=selfcheck --showtime=top5_summary -D__GNUC__ --error-exitcode=1 --inline-suppr --suppressions-list=.selfcheck_suppressions --library=gnu --inconclusive --enable=style,performance,portability,warning,missingInclude,internal --exception-handling --debug-warnings --check-level=exhaustive"
|
|
|
|
cppcheck_options="-D__CPPCHECK__ -DCHECK_INTERNAL -DHAVE_RULES --library=cppcheck-lib -Ilib -Iexternals/simplecpp/ -Iexternals/tinyxml2"
|
2022-05-13 06:52:20 +02:00
|
|
|
ec=0
|
2023-10-26 10:52:44 +02:00
|
|
|
./cmake.output/bin/cppcheck $selfcheck_options externals/simplecpp || ec=1
|
|
|
|
./cmake.output/bin/cppcheck $selfcheck_options $cppcheck_options --addon=naming.json cli lib || ec=1
|
|
|
|
./cmake.output/bin/cppcheck $selfcheck_options $cppcheck_options -DQT_VERSION=0x050000 -DQ_MOC_OUTPUT_REVISION=67 -DQT_CHARTS_LIB --library=qt --addon=naming.json -Icmake.output/gui -Igui gui/*.cpp cmake.output/gui/*.cpp || ec=1
|
|
|
|
./cmake.output/bin/cppcheck $selfcheck_options $cppcheck_options -Icli test/*.cpp tools/*.cpp || ec=1
|
|
|
|
./cmake.output/bin/cppcheck $selfcheck_options $cppcheck_options -DQ_MOC_OUTPUT_REVISION=67 -DQT_CHARTS_LIB --library=qt -Icmake.output/tools/triage -Igui tools/triage/*.cpp cmake.output/tools/triage/*.cpp || ec=1
|
2022-05-13 06:52:20 +02:00
|
|
|
exit $ec
|