Restore workflows
This commit is contained in:
parent
6b7538fb09
commit
c0cddbff33
|
@ -0,0 +1,41 @@
|
||||||
|
# Some convenient links:
|
||||||
|
# - https://github.com/actions/virtual-environments/blob/master/images/win/Windows2019-Readme.md
|
||||||
|
#
|
||||||
|
|
||||||
|
name: CI-mingw
|
||||||
|
|
||||||
|
on: [push,pull_request]
|
||||||
|
|
||||||
|
defaults:
|
||||||
|
run:
|
||||||
|
shell: cmd
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build_mingw:
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: [windows-2019]
|
||||||
|
arch: [x64] # TODO: fix x86 build?
|
||||||
|
fail-fast: false
|
||||||
|
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
|
||||||
|
- name: Set up MinGW
|
||||||
|
uses: egor-tensin/setup-mingw@v2
|
||||||
|
with:
|
||||||
|
platform: ${{ matrix.arch }}
|
||||||
|
|
||||||
|
- name: Build cppcheck
|
||||||
|
run: |
|
||||||
|
mingw32-make -j2
|
||||||
|
|
||||||
|
- name: Build test
|
||||||
|
run: |
|
||||||
|
mingw32-make -j2 testrunner
|
||||||
|
|
||||||
|
- name: Run test
|
||||||
|
run: |
|
||||||
|
mingw32-make -j2 check
|
|
@ -0,0 +1,79 @@
|
||||||
|
# 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: CI-unixish-docker
|
||||||
|
|
||||||
|
on: [push, pull_request]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
image: ["centos:7", "ubuntu:14.04", "ubuntu:16.04"]
|
||||||
|
fail-fast: false # Prefer quick result
|
||||||
|
|
||||||
|
runs-on: ubuntu-22.04
|
||||||
|
|
||||||
|
container:
|
||||||
|
image: ${{ matrix.image }}
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
|
||||||
|
- name: Install missing software on CentOS 7
|
||||||
|
if: matrix.image == 'centos:7'
|
||||||
|
run: |
|
||||||
|
yum install -y cmake gcc-c++ make which python3
|
||||||
|
yum install -y pcre-devel
|
||||||
|
|
||||||
|
- name: Install missing software on ubuntu
|
||||||
|
if: matrix.image != 'centos:7'
|
||||||
|
run: |
|
||||||
|
apt-get update
|
||||||
|
apt-get install -y cmake g++ make python3 libxml2-utils
|
||||||
|
apt-get install -y libpcre3-dev
|
||||||
|
|
||||||
|
# tests require CMake 3.4
|
||||||
|
- name: Test CMake build (no tests)
|
||||||
|
if: matrix.image != 'ubuntu:22.10'
|
||||||
|
run: |
|
||||||
|
mkdir cmake.output
|
||||||
|
cd cmake.output
|
||||||
|
cmake -G "Unix Makefiles" -DHAVE_RULES=On ..
|
||||||
|
cmake --build . -- -j$(nproc)
|
||||||
|
cd ..
|
||||||
|
|
||||||
|
- name: Test CMake build
|
||||||
|
if: matrix.image == 'ubuntu:22.10'
|
||||||
|
run: |
|
||||||
|
mkdir cmake.output
|
||||||
|
cd cmake.output
|
||||||
|
cmake -G "Unix Makefiles" -DHAVE_RULES=On -DBUILD_TESTS=On ..
|
||||||
|
cmake --build . --target check -- -j$(nproc)
|
||||||
|
cd ..
|
||||||
|
|
||||||
|
- name: Build cppcheck
|
||||||
|
run: |
|
||||||
|
make clean
|
||||||
|
make -j$(nproc) HAVE_RULES=yes
|
||||||
|
|
||||||
|
- name: Build test
|
||||||
|
run: |
|
||||||
|
make -j$(nproc) testrunner HAVE_RULES=yes
|
||||||
|
|
||||||
|
- name: Run test
|
||||||
|
run: |
|
||||||
|
make -j$(nproc) check HAVE_RULES=yes
|
||||||
|
|
||||||
|
- name: Run extra tests
|
||||||
|
run: |
|
||||||
|
tools/generate_and_run_more_tests.sh
|
||||||
|
|
||||||
|
- name: Validate
|
||||||
|
run: |
|
||||||
|
make -j$(nproc) checkCWEEntries validateXML
|
||||||
|
|
||||||
|
- name: Test addons
|
||||||
|
run: |
|
||||||
|
./cppcheck --addon=threadsafety addons/test/threadsafety
|
||||||
|
./cppcheck --addon=threadsafety --std=c++03 addons/test/threadsafety
|
|
@ -0,0 +1,287 @@
|
||||||
|
# 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: CI-unixish
|
||||||
|
|
||||||
|
on: [push, pull_request]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: [ubuntu-18.04, ubuntu-20.04, ubuntu-22.04, macos-10.15, macos-11, macos-12]
|
||||||
|
fail-fast: false # Prefer quick result
|
||||||
|
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
|
||||||
|
- name: Install missing software on ubuntu
|
||||||
|
if: contains(matrix.os, 'ubuntu')
|
||||||
|
run: |
|
||||||
|
sudo apt-get update
|
||||||
|
sudo apt-get install libxml2-utils
|
||||||
|
sudo apt-get install libtinyxml2-dev
|
||||||
|
sudo apt-get install qtbase5-dev qttools5-dev libqt5charts5-dev qtchooser
|
||||||
|
|
||||||
|
# required so a default Qt installation is configured
|
||||||
|
- name: Install missing software on ubuntu 18.04
|
||||||
|
if: matrix.os == 'ubuntu-18.04'
|
||||||
|
run: |
|
||||||
|
sudo apt-get install qt5-default
|
||||||
|
|
||||||
|
# packages for strict cfg checks
|
||||||
|
- name: Install missing software on ubuntu 22.04
|
||||||
|
if: matrix.os == 'ubuntu-22.04'
|
||||||
|
run: |
|
||||||
|
sudo apt-get install libcairo2-dev libcurl4-openssl-dev liblua5.3-dev libssl-dev libsqlite3-dev libcppunit-dev libsigc++-2.0-dev libgtk-3-dev libboost-all-dev libwxgtk3.0-gtk3-dev xmlstarlet
|
||||||
|
|
||||||
|
- name: Install missing software on macos
|
||||||
|
if: contains(matrix.os, 'macos')
|
||||||
|
run: |
|
||||||
|
brew install coreutils python3 qt@5
|
||||||
|
|
||||||
|
- name: Install missing Python packages
|
||||||
|
run: |
|
||||||
|
python3 -m pip install pip --upgrade
|
||||||
|
python3 -m pip install pytest
|
||||||
|
|
||||||
|
- name: CMake build on ubuntu (with GUI / system tinyxml2)
|
||||||
|
if: contains(matrix.os, 'ubuntu')
|
||||||
|
run: |
|
||||||
|
mkdir cmake.output.tinyxml2
|
||||||
|
cd cmake.output.tinyxml2
|
||||||
|
cmake -G "Unix Makefiles" -DHAVE_RULES=On -DBUILD_TESTS=On -DBUILD_GUI=On -DWITH_QCHART=On -DUSE_BUNDLED_TINYXML2=Off ..
|
||||||
|
cmake --build . -- -j$(nproc)
|
||||||
|
cd ..
|
||||||
|
|
||||||
|
- name: Run CMake test (system tinyxml2)
|
||||||
|
if: contains(matrix.os, 'ubuntu')
|
||||||
|
run: |
|
||||||
|
cmake --build cmake.output.tinyxml2 --target check -- -j$(nproc)
|
||||||
|
|
||||||
|
- name: CMake build on ubuntu (with GUI)
|
||||||
|
if: contains(matrix.os, 'ubuntu')
|
||||||
|
run: |
|
||||||
|
mkdir cmake.output
|
||||||
|
pushd cmake.output
|
||||||
|
cmake -G "Unix Makefiles" -DHAVE_RULES=On -DBUILD_TESTS=On -DBUILD_GUI=On -DWITH_QCHART=On ..
|
||||||
|
cmake --build . -- -j$(nproc)
|
||||||
|
|
||||||
|
- name: CMake build on macos (with GUI)
|
||||||
|
if: contains(matrix.os, 'macos')
|
||||||
|
run: |
|
||||||
|
mkdir cmake.output
|
||||||
|
pushd cmake.output
|
||||||
|
cmake -G "Unix Makefiles" -DHAVE_RULES=On -DBUILD_TESTS=On -DBUILD_GUI=On -DWITH_QCHART=On -DQt5_DIR=$(brew --prefix qt@5)/lib/cmake/Qt5 ..
|
||||||
|
cmake --build . -- -j$(nproc)
|
||||||
|
|
||||||
|
- name: Run CMake test
|
||||||
|
run: |
|
||||||
|
cmake --build cmake.output --target check -- -j$(nproc)
|
||||||
|
|
||||||
|
- name: Run CTest
|
||||||
|
run: |
|
||||||
|
pushd cmake.output
|
||||||
|
ctest -j$(nproc)
|
||||||
|
|
||||||
|
- name: Build with Unsigned char
|
||||||
|
run: |
|
||||||
|
make clean
|
||||||
|
make -j$(nproc) CXXFLAGS=-funsigned-char testrunner
|
||||||
|
|
||||||
|
- name: Test with Unsigned char
|
||||||
|
run: |
|
||||||
|
./testrunner TestSymbolDatabase
|
||||||
|
|
||||||
|
- name: Build with TEST_MATHLIB_VALUE
|
||||||
|
run: |
|
||||||
|
make clean
|
||||||
|
touch lib/mathlib.cpp test/testmathlib.cpp
|
||||||
|
make -j$(nproc) CPPFLAGS=-DTEST_MATHLIB_VALUE all
|
||||||
|
|
||||||
|
- name: Test with TEST_MATHLIB_VALUE
|
||||||
|
run: |
|
||||||
|
make -j$(nproc) CPPFLAGS=-DTEST_MATHLIB_VALUE check
|
||||||
|
|
||||||
|
- name: Check syntax with NONNEG
|
||||||
|
run: |
|
||||||
|
ls lib/*.cpp | xargs -n 1 -P $(nproc) g++ -fsyntax-only -std=c++0x -Ilib -Iexternals -Iexternals/picojson -Iexternals/simplecpp -Iexternals/tinyxml2 -DNONNEG
|
||||||
|
|
||||||
|
- name: Build cppcheck
|
||||||
|
run: |
|
||||||
|
make clean
|
||||||
|
make -j$(nproc) HAVE_RULES=yes
|
||||||
|
|
||||||
|
- name: Build test
|
||||||
|
run: |
|
||||||
|
make -j$(nproc) testrunner HAVE_RULES=yes
|
||||||
|
|
||||||
|
- name: Run test
|
||||||
|
run: |
|
||||||
|
make -j$(nproc) check HAVE_RULES=yes
|
||||||
|
|
||||||
|
# the script uses sed parameters not supported by MacOS
|
||||||
|
- name: Run extra tests
|
||||||
|
if: contains(matrix.os, 'ubuntu')
|
||||||
|
run: |
|
||||||
|
tools/generate_and_run_more_tests.sh
|
||||||
|
|
||||||
|
# do not use pushd in this step since we go below the working directory
|
||||||
|
- name: Run test/cli
|
||||||
|
run: |
|
||||||
|
cd test/cli
|
||||||
|
python3 -m pytest test-*.py
|
||||||
|
cd ../../..
|
||||||
|
ln -s cppcheck 'cpp check'
|
||||||
|
cd 'cpp check/test/cli'
|
||||||
|
python3 -m pytest test-*.py
|
||||||
|
|
||||||
|
# fails on macos since some includes (e.g. sys/epoll.h) are not available
|
||||||
|
- name: Run cfg tests
|
||||||
|
if: contains(matrix.os, 'ubuntu') && matrix.os != 'ubuntu-22.04'
|
||||||
|
run: |
|
||||||
|
make -j$(nproc) checkcfg
|
||||||
|
|
||||||
|
- name: Run cfg tests (strict)
|
||||||
|
if: matrix.os == 'ubuntu-22.04'
|
||||||
|
run: |
|
||||||
|
make -j$(nproc) checkcfg
|
||||||
|
env:
|
||||||
|
STRICT: 1
|
||||||
|
|
||||||
|
# it seems macos has no "wc" command
|
||||||
|
- name: Run showtimetop5 tests
|
||||||
|
if: contains(matrix.os, 'ubuntu')
|
||||||
|
run: |
|
||||||
|
./tools/test_showtimetop5.sh
|
||||||
|
|
||||||
|
- name: Run --dump test
|
||||||
|
run: |
|
||||||
|
./cppcheck test/testpreprocessor.cpp --dump
|
||||||
|
xmllint --noout test/testpreprocessor.cpp.dump
|
||||||
|
|
||||||
|
- name: Validate
|
||||||
|
run: |
|
||||||
|
make -j$(nproc) checkCWEEntries validateXML
|
||||||
|
|
||||||
|
# TODO: move to scriptcheck.yml so these are tested with all Python versions?
|
||||||
|
- name: Test addons
|
||||||
|
run: |
|
||||||
|
./cppcheck --addon=threadsafety addons/test/threadsafety
|
||||||
|
./cppcheck --addon=threadsafety --std=c++03 addons/test/threadsafety
|
||||||
|
./cppcheck --addon=misra --inline-suppr --enable=information --error-exitcode=1 addons/test/misra/misra-ctu-*-test.c
|
||||||
|
pushd addons/test
|
||||||
|
# We'll force C89 standard to enable an additional verification for
|
||||||
|
# rules 5.4 and 5.5 which have standard-dependent options.
|
||||||
|
../../cppcheck --dump -DDUMMY --suppress=uninitvar --inline-suppr misra/misra-test.c --std=c89 --platform=unix64
|
||||||
|
python3 ../misra.py -verify misra/misra-test.c.dump
|
||||||
|
# TODO: do we need to verify something here?
|
||||||
|
../../cppcheck --dump -DDUMMY --suppress=uninitvar --suppress=uninitStructMember --std=c89 misra/misra-test.h
|
||||||
|
../../cppcheck --dump misra/misra-test.cpp
|
||||||
|
python3 ../misra.py -verify misra/misra-test.cpp.dump
|
||||||
|
python3 ../misra.py --rule-texts=misra/misra2012_rules_dummy_ascii.txt -verify misra/misra-test.cpp.dump
|
||||||
|
python3 ../misra.py --rule-texts=misra/misra2012_rules_dummy_utf8.txt -verify misra/misra-test.cpp.dump
|
||||||
|
python3 ../misra.py --rule-texts=misra/misra2012_rules_dummy_windows1250.txt -verify misra/misra-test.cpp.dump
|
||||||
|
../../cppcheck --addon=misra --platform=avr8 --error-exitcode=1 misra/misra-test-avr8.c
|
||||||
|
../../cppcheck --dump misc-test.cpp
|
||||||
|
python3 ../misc.py -verify misc-test.cpp.dump
|
||||||
|
../../cppcheck --dump naming_test.c
|
||||||
|
python3 ../naming.py --var='[a-z].*' --function='[a-z].*' naming_test.c.dump
|
||||||
|
../../cppcheck --dump naming_test.cpp
|
||||||
|
python3 ../naming.py --var='[a-z].*' --function='[a-z].*' naming_test.cpp.dump
|
||||||
|
../../cppcheck --dump namingng_test.c
|
||||||
|
python3 ../namingng.py --configfile ../naming.json --verify namingng_test.c.dump
|
||||||
|
|
||||||
|
- name: Ensure misra addon does not crash
|
||||||
|
if: contains(matrix.os, 'ubuntu')
|
||||||
|
run: |
|
||||||
|
./cppcheck --addon=misra addons/test/misra/crash1.c | ( ! grep 'Bailing out from checking' )
|
||||||
|
|
||||||
|
- name: Build GUI on ubuntu
|
||||||
|
if: contains(matrix.os, 'ubuntu')
|
||||||
|
run: |
|
||||||
|
pushd gui
|
||||||
|
qmake CONFIG+=debug HAVE_QCHART=yes
|
||||||
|
make -j$(nproc)
|
||||||
|
|
||||||
|
- name: Run GUI tests on ubuntu
|
||||||
|
if: contains(matrix.os, 'ubuntu')
|
||||||
|
run: |
|
||||||
|
pushd gui/test/cppchecklibrarydata
|
||||||
|
qmake CONFIG+=debug
|
||||||
|
make -j$(nproc)
|
||||||
|
./test-cppchecklibrarydata
|
||||||
|
popd
|
||||||
|
pushd gui/test/filelist
|
||||||
|
qmake CONFIG+=debug
|
||||||
|
make -j$(nproc)
|
||||||
|
# TODO: requires X session
|
||||||
|
#./test-filelist
|
||||||
|
popd
|
||||||
|
pushd gui/test/projectfile
|
||||||
|
qmake CONFIG+=debug
|
||||||
|
make -j$(nproc)
|
||||||
|
./test-projectfile
|
||||||
|
popd
|
||||||
|
pushd gui/test/translationhandler
|
||||||
|
qmake CONFIG+=debug
|
||||||
|
make -j$(nproc)
|
||||||
|
# TODO: requires X session
|
||||||
|
#./test-translationhandler
|
||||||
|
popd
|
||||||
|
pushd gui/test/xmlreportv2
|
||||||
|
qmake CONFIG+=debug
|
||||||
|
make -j$(nproc)
|
||||||
|
# TODO: requires X session
|
||||||
|
#./test-xmlreportv2
|
||||||
|
|
||||||
|
- name: Generate Qt help file on ubuntu 18.04
|
||||||
|
if: matrix.os == 'ubuntu-18.04'
|
||||||
|
run: |
|
||||||
|
pushd gui/help
|
||||||
|
qcollectiongenerator online-help.qhcp -o online-help.qhc
|
||||||
|
|
||||||
|
- name: Generate Qt help file on ubuntu 20.04
|
||||||
|
if: matrix.os == 'ubuntu-22.04'
|
||||||
|
run: |
|
||||||
|
pushd gui/help
|
||||||
|
qhelpgenerator online-help.qhcp -o online-help.qhc
|
||||||
|
|
||||||
|
- name: Build triage on ubuntu
|
||||||
|
if: matrix.os == 'ubuntu-22.04'
|
||||||
|
run: |
|
||||||
|
pushd tools/triage
|
||||||
|
qmake CONFIG+=debug
|
||||||
|
make -j$(nproc)
|
||||||
|
|
||||||
|
- name: Build Fuzzer
|
||||||
|
if: matrix.os == 'ubuntu-22.04'
|
||||||
|
run: |
|
||||||
|
pushd oss-fuzz
|
||||||
|
make -j$(nproc) CXX=clang++ CXXFLAGS="-fsanitize=address" fuzz-client translate
|
||||||
|
|
||||||
|
- name: Self check (build)
|
||||||
|
if: matrix.os == 'ubuntu-22.04'
|
||||||
|
run: |
|
||||||
|
# compile with verification and ast matchers
|
||||||
|
make clean
|
||||||
|
make -j$(nproc) -s CPPFLAGS="-DCHECK_INTERNAL" CXXFLAGS="-g -O2" MATCHCOMPILER=yes VERIFY=1
|
||||||
|
|
||||||
|
# Run self check after "Build GUI" to include generated headers in analysis
|
||||||
|
- name: Self check
|
||||||
|
if: matrix.os == 'ubuntu-22.04'
|
||||||
|
run: |
|
||||||
|
ec=0
|
||||||
|
# self check lib/cli
|
||||||
|
mkdir b1
|
||||||
|
./cppcheck -q -j$(nproc) --std=c++11 --template=selfcheck --cppcheck-build-dir=b1 -D__CPPCHECK__ --error-exitcode=1 --inline-suppr --suppressions-list=.travis_suppressions --library=cppcheck-lib --addon=naming.json -Ilib -Iexternals/simplecpp/ -Iexternals/tinyxml2/ -Icli --inconclusive --enable=style,performance,portability,warning,missingInclude,internal --exception-handling --debug-warnings cli lib || ec=1
|
||||||
|
# check gui with qt settings
|
||||||
|
mkdir b2
|
||||||
|
./cppcheck -q -j$(nproc) --std=c++11 --template=selfcheck --cppcheck-build-dir=b2 -D__CPPCHECK__ -DQT_VERSION=0x050000 -DQ_MOC_OUTPUT_REVISION=67 --error-exitcode=1 --inline-suppr --suppressions-list=.travis_suppressions --library=cppcheck-lib --library=qt --addon=naming.json -Ilib -Iexternals/simplecpp/ -Iexternals/tinyxml2/ --enable=style,performance,portability,warning,missingInclude,internal --exception-handling --debug-warnings gui/*.cpp gui/temp/*.cpp || ec=1
|
||||||
|
# self check test and tools
|
||||||
|
./cppcheck -q -j$(nproc) --std=c++11 --template=selfcheck -D__CPPCHECK__ -DQ_MOC_OUTPUT_REVISION=67 --error-exitcode=1 --inline-suppr --suppressions-list=.travis_suppressions --library=cppcheck-lib -Ilib -Iexternals/simplecpp/ -Iexternals/tinyxml2/ -Icli -Igui --inconclusive --enable=style,performance,portability,warning,missingInclude,internal --exception-handling --debug-warnings test/*.cpp tools/*.cpp || ec=1
|
||||||
|
# triage
|
||||||
|
./cppcheck -q -j$(nproc) --std=c++11 --template=selfcheck -D__CPPCHECK__ -DQ_MOC_OUTPUT_REVISION=67 --error-exitcode=1 --inline-suppr --suppressions-list=.travis_suppressions --library=cppcheck-lib --library=qt -Ilib -Iexternals/simplecpp/ -Iexternals/tinyxml2/ -Igui --inconclusive --enable=style,performance,portability,warning,missingInclude,internal --exception-handling --debug-warnings tools/triage || ec=1
|
||||||
|
exit $ec
|
|
@ -0,0 +1,206 @@
|
||||||
|
# Some convenient links:
|
||||||
|
# - https://github.com/actions/virtual-environments/blob/master/images/win/Windows2019-Readme.md
|
||||||
|
#
|
||||||
|
|
||||||
|
name: CI-windows
|
||||||
|
|
||||||
|
on: [push,pull_request]
|
||||||
|
|
||||||
|
defaults:
|
||||||
|
run:
|
||||||
|
shell: cmd
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
|
||||||
|
build:
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: [windows-2019, windows-2022]
|
||||||
|
arch: [x64, x86]
|
||||||
|
qt_ver: ['', 5.15.2, 6.2.4, 6.3.0]
|
||||||
|
fail-fast: false
|
||||||
|
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
|
||||||
|
env:
|
||||||
|
# see https://www.pcre.org/original/changelog.txt
|
||||||
|
PCRE_VERSION: 8.45
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
if: matrix.arch == 'x64' || matrix.qt_ver == ''
|
||||||
|
|
||||||
|
- name: Set up Python 3.10
|
||||||
|
if: matrix.qt_ver == ''
|
||||||
|
uses: actions/setup-python@v2
|
||||||
|
with:
|
||||||
|
python-version: '3.10'
|
||||||
|
|
||||||
|
- name: Set up Visual Studio environment
|
||||||
|
uses: ilammy/msvc-dev-cmd@v1
|
||||||
|
with:
|
||||||
|
arch: ${{ matrix.arch }}
|
||||||
|
|
||||||
|
- name: Cache PCRE
|
||||||
|
id: cache-pcre
|
||||||
|
uses: actions/cache@v2
|
||||||
|
if: matrix.arch == 'x64' || matrix.qt_ver == ''
|
||||||
|
with:
|
||||||
|
path: pcre-${{ env.PCRE_VERSION }}.zip
|
||||||
|
key: pcre-${{ env.PCRE_VERSION }}
|
||||||
|
|
||||||
|
- name: Download PCRE
|
||||||
|
if: (matrix.arch == 'x64' || matrix.qt_ver == '') && steps.cache-pcre.outputs.cache-hit != 'true'
|
||||||
|
run: |
|
||||||
|
curl -fsSL https://github.com/pfultz2/pcre/archive/refs/tags/%PCRE_VERSION%.zip -o pcre-%PCRE_VERSION%.zip || exit /b !errorlevel!
|
||||||
|
|
||||||
|
- name: Install PCRE
|
||||||
|
if: matrix.arch == 'x64' || matrix.qt_ver == ''
|
||||||
|
run: |
|
||||||
|
7z x pcre-%PCRE_VERSION%.zip || exit /b !errorlevel!
|
||||||
|
cd pcre-%PCRE_VERSION% || exit /b !errorlevel!
|
||||||
|
cmake . -G "NMake Makefiles" -DCMAKE_BUILD_TYPE=Release -DPCRE_BUILD_PCRECPP=Off -DPCRE_BUILD_TESTS=Off -DPCRE_BUILD_PCREGREP=Off || exit /b !errorlevel!
|
||||||
|
nmake || exit /b !errorlevel!
|
||||||
|
copy pcre.h ..\externals || exit /b !errorlevel!
|
||||||
|
if "${{ matrix.arch }}" == "x86" (
|
||||||
|
copy pcre.lib ..\externals\pcre.lib || exit /b !errorlevel!
|
||||||
|
) else (
|
||||||
|
copy pcre.lib ..\externals\pcre64.lib || exit /b !errorlevel!
|
||||||
|
)
|
||||||
|
env:
|
||||||
|
CL: /MP
|
||||||
|
|
||||||
|
- name: Cache Qt ${{ matrix.qt_ver }}
|
||||||
|
if: matrix.qt_ver != '' && matrix.arch == 'x64'
|
||||||
|
id: cache-qt
|
||||||
|
uses: actions/cache@v1 # not v2!
|
||||||
|
with:
|
||||||
|
path: ../Qt
|
||||||
|
key: Windows-QtCache-${{ matrix.qt_ver }}-qtcharts
|
||||||
|
|
||||||
|
# no 32-bit Qt available
|
||||||
|
- name: Install Qt ${{ matrix.qt_ver }}
|
||||||
|
if: matrix.qt_ver != '' && matrix.arch == 'x64'
|
||||||
|
uses: jurplel/install-qt-action@v3
|
||||||
|
with:
|
||||||
|
aqtversion: '==2.0.6'
|
||||||
|
version: ${{ matrix.qt_ver }}
|
||||||
|
modules: 'qtcharts'
|
||||||
|
cached: ${{ steps.cache-qt.outputs.cache-hit }}
|
||||||
|
|
||||||
|
- name: Install missing Python packages
|
||||||
|
if: matrix.qt_ver == ''
|
||||||
|
run: |
|
||||||
|
python -m pip install pip --upgrade || exit /b !errorlevel!
|
||||||
|
python -m pip install pytest || exit /b !errorlevel!
|
||||||
|
python -m pip install pytest-custom_exit_code || exit /b !errorlevel!
|
||||||
|
|
||||||
|
- name: Build GUI release (qmake)
|
||||||
|
if: startsWith(matrix.qt_ver, '5') && matrix.arch == 'x64'
|
||||||
|
run: |
|
||||||
|
cd gui || exit /b !errorlevel!
|
||||||
|
qmake HAVE_QCHART=yes || exit /b !errorlevel!
|
||||||
|
nmake release || exit /b !errorlevel!
|
||||||
|
env:
|
||||||
|
CL: /MP
|
||||||
|
|
||||||
|
- name: Deploy GUI
|
||||||
|
if: startsWith(matrix.qt_ver, '5') && matrix.arch == 'x64'
|
||||||
|
run: |
|
||||||
|
windeployqt Build\gui || exit /b !errorlevel!
|
||||||
|
del Build\gui\cppcheck-gui.ilk || exit /b !errorlevel!
|
||||||
|
del Build\gui\cppcheck-gui.pdb || exit /b !errorlevel!
|
||||||
|
|
||||||
|
- name: Build GUI release (CMake)
|
||||||
|
if: startsWith(matrix.qt_ver, '6') && matrix.arch == 'x64'
|
||||||
|
run: |
|
||||||
|
md build || exit /b !errorlevel!
|
||||||
|
cd build || exit /b !errorlevel!
|
||||||
|
cmake -DBUILD_GUI=On -DWITH_QCHART=On -DUSE_QT6=On .. || exit /b !errorlevel!
|
||||||
|
cmake --build . --target cppcheck-gui || exit /b !errorlevel!
|
||||||
|
|
||||||
|
# TODO: deploy with Qt6
|
||||||
|
|
||||||
|
- name: Run CMake
|
||||||
|
if: false && matrix.qt_ver == ''
|
||||||
|
run: |
|
||||||
|
set ARCH=${{ matrix.arch }}
|
||||||
|
if "${{ matrix.arch }}" == "x86" (
|
||||||
|
set ARCH=Win32
|
||||||
|
)
|
||||||
|
md build || exit /b !errorlevel!
|
||||||
|
cd build || exit /b !errorlevel!
|
||||||
|
cmake -DBUILD_TESTS=On .. || exit /b !errorlevel!
|
||||||
|
|
||||||
|
- name: Build CLI debug configuration using MSBuild
|
||||||
|
if: matrix.qt_ver == ''
|
||||||
|
run: |
|
||||||
|
set ARCH=${{ matrix.arch }}
|
||||||
|
if "${{ matrix.arch }}" == "x86" (
|
||||||
|
set ARCH=Win32
|
||||||
|
)
|
||||||
|
:: cmake --build build --target check --config Debug || exit /b !errorlevel!
|
||||||
|
msbuild -m cppcheck.sln /p:Configuration=Debug-PCRE;Platform=%ARCH% -maxcpucount || exit /b !errorlevel!
|
||||||
|
|
||||||
|
- name: Run Debug test
|
||||||
|
if: matrix.qt_ver == ''
|
||||||
|
run: .\bin\debug\testrunner.exe || exit /b !errorlevel!
|
||||||
|
|
||||||
|
- name: Build CLI release configuration using MSBuild
|
||||||
|
if: matrix.qt_ver == ''
|
||||||
|
run: |
|
||||||
|
set ARCH=${{ matrix.arch }}
|
||||||
|
if "${{ matrix.arch }}" == "x86" (
|
||||||
|
set ARCH=Win32
|
||||||
|
)
|
||||||
|
:: cmake --build build --target check --config Release || exit /b !errorlevel!
|
||||||
|
msbuild -m cppcheck.sln /p:Configuration=Release-PCRE;Platform=%ARCH% -maxcpucount || exit /b !errorlevel!
|
||||||
|
|
||||||
|
- name: Run Release test
|
||||||
|
if: matrix.qt_ver == ''
|
||||||
|
run: .\bin\testrunner.exe || exit /b !errorlevel!
|
||||||
|
|
||||||
|
- name: Run test/cli
|
||||||
|
if: matrix.qt_ver == ''
|
||||||
|
run: |
|
||||||
|
:: since FILESDIR is not set copy the binary to the root so the addons are found
|
||||||
|
:: copy .\build\bin\Release\cppcheck.exe .\cppcheck.exe || exit /b !errorlevel!
|
||||||
|
copy .\bin\cppcheck.exe .\cppcheck.exe || exit /b !errorlevel!
|
||||||
|
copy .\bin\cppcheck-core.dll .\cppcheck-core.dll || exit /b !errorlevel!
|
||||||
|
cd test/cli || exit /b !errorlevel!
|
||||||
|
:: python -m pytest --suppress-no-test-exit-code test-clang-import.py || exit /b !errorlevel!
|
||||||
|
python -m pytest test-helloworld.py || exit /b !errorlevel!
|
||||||
|
python -m pytest test-inline-suppress.py || exit /b !errorlevel!
|
||||||
|
python -m pytest test-more-projects.py || exit /b !errorlevel!
|
||||||
|
python -m pytest test-proj2.py || exit /b !errorlevel!
|
||||||
|
python -m pytest test-suppress-syntaxError.py || exit /b !errorlevel!
|
||||||
|
|
||||||
|
- name: Test addons
|
||||||
|
if: matrix.qt_ver == ''
|
||||||
|
run: |
|
||||||
|
.\cppcheck --addon=threadsafety addons\test\threadsafety || exit /b !errorlevel!
|
||||||
|
.\cppcheck --addon=threadsafety --std=c++03 addons\test\threadsafety || exit /b !errorlevel!
|
||||||
|
.\cppcheck --addon=misra --inline-suppr --enable=information --error-exitcode=1 addons\test\misra\misra-ctu-*-test.c || exit /b !errorlevel!
|
||||||
|
cd addons\test
|
||||||
|
rem We'll force C89 standard to enable an additional verification for
|
||||||
|
rem rules 5.4 and 5.5 which have standard-dependent options.
|
||||||
|
..\..\cppcheck --dump -DDUMMY --suppress=uninitvar --inline-suppr misra\misra-test.c --std=c89 --platform=unix64 || exit /b !errorlevel!
|
||||||
|
python3 ..\misra.py -verify misra\misra-test.c.dump || exit /b !errorlevel!
|
||||||
|
rem TODO: do we need to verify something here?
|
||||||
|
..\..\cppcheck --dump -DDUMMY --suppress=uninitvar --suppress=uninitStructMember --std=c89 misra\misra-test.h || exit /b !errorlevel!
|
||||||
|
..\..\cppcheck --dump misra\misra-test.cpp || exit /b !errorlevel!
|
||||||
|
python3 ..\misra.py -verify misra\misra-test.cpp.dump || exit /b !errorlevel!
|
||||||
|
python3 ..\misra.py --rule-texts=misra\misra2012_rules_dummy_ascii.txt -verify misra\misra-test.cpp.dump || exit /b !errorlevel!
|
||||||
|
python3 ..\misra.py --rule-texts=misra\misra2012_rules_dummy_utf8.txt -verify misra\misra-test.cpp.dump || exit /b !errorlevel!
|
||||||
|
python3 ..\misra.py --rule-texts=misra\misra2012_rules_dummy_windows1250.txt -verify misra\misra-test.cpp.dump || exit /b !errorlevel!
|
||||||
|
..\..\cppcheck --addon=misra --platform=avr8 --error-exitcode=1 misra\misra-test-avr8.c || exit /b !errorlevel!
|
||||||
|
..\..\cppcheck --dump misc-test.cpp || exit /b !errorlevel!
|
||||||
|
python3 ..\misc.py -verify misc-test.cpp.dump || exit /b !errorlevel!
|
||||||
|
..\..\cppcheck --dump naming_test.c || exit /b !errorlevel!
|
||||||
|
rem TODO: fix this - does not fail on Linux
|
||||||
|
rem python3 ..\naming.py --var='[a-z].*' --function='[a-z].*' naming_test.c.dump || exit /b !errorlevel!
|
||||||
|
..\..\cppcheck --dump naming_test.cpp || exit /b !errorlevel!
|
||||||
|
python3 ..\naming.py --var='[a-z].*' --function='[a-z].*' naming_test.cpp.dump || exit /b !errorlevel!
|
||||||
|
..\..\cppcheck --dump namingng_test.c || exit /b !errorlevel!
|
||||||
|
python3 ..\namingng.py --configfile ..\naming.json --verify namingng_test.c.dump || exit /b !errorlevel!
|
||||||
|
|
|
@ -0,0 +1,60 @@
|
||||||
|
# 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: address sanitizer
|
||||||
|
|
||||||
|
on: [push, pull_request]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
|
||||||
|
runs-on: ubuntu-22.04
|
||||||
|
|
||||||
|
container:
|
||||||
|
image: "ubuntu:22.04"
|
||||||
|
|
||||||
|
env:
|
||||||
|
ASAN_OPTIONS: detect_stack_use_after_return=1
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
|
||||||
|
- name: Set up Python 3.10
|
||||||
|
uses: actions/setup-python@v2
|
||||||
|
with:
|
||||||
|
python-version: '3.10'
|
||||||
|
|
||||||
|
- name: Install missing software on ubuntu
|
||||||
|
run: |
|
||||||
|
apt-get update
|
||||||
|
apt-get install -y cmake make libpcre3-dev
|
||||||
|
apt-get install -y clang-14
|
||||||
|
|
||||||
|
- name: CMake
|
||||||
|
run: |
|
||||||
|
cmake -S . -B cmake.output -DCMAKE_BUILD_TYPE=RelWithDebInfo -DHAVE_RULES=On -DBUILD_TESTS=On -DUSE_MATCHCOMPILER=Verify -DANALYZE_ADDRESS=On -DENABLE_CHECK_INTERNAL=On -DCPPCHK_GLIBCXX_DEBUG=Off -DCMAKE_DISABLE_PRECOMPILE_HEADERS=On
|
||||||
|
env:
|
||||||
|
CC: clang-14
|
||||||
|
CXX: clang++-14
|
||||||
|
|
||||||
|
- name: Build cppcheck
|
||||||
|
run: |
|
||||||
|
cmake --build cmake.output --target cppcheck -- -j $(nproc)
|
||||||
|
|
||||||
|
- name: Build test
|
||||||
|
run: |
|
||||||
|
cmake --build cmake.output --target testrunner -- -j $(nproc)
|
||||||
|
|
||||||
|
- name: Run tests
|
||||||
|
run: ./cmake.output/bin/testrunner
|
||||||
|
|
||||||
|
# TODO: re-enable - was being killed because of incresaed memory usage
|
||||||
|
# TODO: no gui/temp/*.cpp files available
|
||||||
|
- name: Self check
|
||||||
|
if: false
|
||||||
|
run: |
|
||||||
|
ec=0
|
||||||
|
./cmake.output/bin/cppcheck -q -j$(nproc) --std=c++11 --template=selfcheck -D__CPPCHECK__ --error-exitcode=1 --inline-suppr --suppressions-list=.travis_suppressions --library=cppcheck-lib --addon=naming.json -Ilib -Iexternals/simplecpp/ -Iexternals/tinyxml2/ -Icli --inconclusive --enable=style,performance,portability,warning,internal --exception-handling --debug-warnings cli lib || ec=1
|
||||||
|
./cmake.output/bin/cppcheck -q -j$(nproc) --std=c++11 --template=selfcheck -D__CPPCHECK__ -DQT_VERSION=0x050000 -DQ_MOC_OUTPUT_REVISION=67 --error-exitcode=1 --inline-suppr --suppressions-list=.travis_suppressions --library=qt --addon=naming.json -Ilib -Iexternals/simplecpp/ -Iexternals/tinyxml2/ --enable=style,performance,portability,warning,internal --exception-handling --debug-warnings gui/*.cpp gui/temp/*.cpp || ec=1
|
||||||
|
./cmake.output/bin/cppcheck -q -j$(nproc) --std=c++11 --template=selfcheck -D__CPPCHECK__ -DQ_MOC_OUTPUT_REVISION=67 --error-exitcode=1 --inline-suppr --suppressions-list=.travis_suppressions --library=cppcheck-lib -Ilib -Iexternals/simplecpp/ -Iexternals/tinyxml2/ -Icli -Igui --inconclusive --enable=style,performance,portability,warning,internal --exception-handling --debug-warnings test/*.cpp tools/*.cpp || ec=1
|
||||||
|
./cmake.output/bin/cppcheck -q -j$(nproc) --std=c++11 --template=selfcheck -D__CPPCHECK__ -DQ_MOC_OUTPUT_REVISION=67 --error-exitcode=1 --inline-suppr --suppressions-list=.travis_suppressions --library=cppcheck-lib --library=qt -Ilib -Iexternals/simplecpp/ -Iexternals/tinyxml2/ -Igui --inconclusive --enable=style,performance,portability,warning,missingInclude,internal --exception-handling --debug-warnings tools/triage || ec=1
|
||||||
|
exit $ec
|
|
@ -0,0 +1,25 @@
|
||||||
|
name: Build manual
|
||||||
|
|
||||||
|
on: [push, pull_request]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
convert_via_pandoc:
|
||||||
|
runs-on: ubuntu-22.04
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
|
||||||
|
- run: |
|
||||||
|
mkdir output
|
||||||
|
|
||||||
|
- uses: docker://pandoc/latex:2.9
|
||||||
|
with:
|
||||||
|
args: --output=output/manual.html man/manual.md
|
||||||
|
|
||||||
|
- uses: docker://pandoc/latex:2.9
|
||||||
|
with:
|
||||||
|
args: --output=output/manual.pdf man/manual.md
|
||||||
|
|
||||||
|
- uses: actions/upload-artifact@v2
|
||||||
|
with:
|
||||||
|
name: output
|
||||||
|
path: output
|
|
@ -0,0 +1,61 @@
|
||||||
|
# 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: clang-tidy
|
||||||
|
|
||||||
|
on: [push, pull_request]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
|
||||||
|
runs-on: ubuntu-22.04
|
||||||
|
|
||||||
|
container:
|
||||||
|
image: "ubuntu:22.04"
|
||||||
|
|
||||||
|
env:
|
||||||
|
QT_VERSION: 5.15.2
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
|
||||||
|
- name: Install missing software
|
||||||
|
run: |
|
||||||
|
apt-get update
|
||||||
|
apt-get install -y cmake clang-14 make
|
||||||
|
apt-get install -y libpcre3-dev
|
||||||
|
apt-get install -y libffi7 # work around missing dependency for Qt install step
|
||||||
|
apt-get install -y clang-tidy-14
|
||||||
|
|
||||||
|
- name: Cache Qt ${{ env.QT_VERSION }}
|
||||||
|
id: cache-qt
|
||||||
|
uses: actions/cache@v1 # not v2!
|
||||||
|
with:
|
||||||
|
path: ../Qt
|
||||||
|
key: Linux-QtCache-${{ env.QT_VERSION }}-qtcharts
|
||||||
|
|
||||||
|
- name: Install Qt ${{ env.QT_VERSION }}
|
||||||
|
uses: jurplel/install-qt-action@v2
|
||||||
|
with:
|
||||||
|
install-deps: 'nosudo'
|
||||||
|
version: ${{ env.QT_VERSION }}
|
||||||
|
modules: 'qtcharts'
|
||||||
|
cached: ${{ steps.cache-qt.outputs.cache-hit }}
|
||||||
|
|
||||||
|
- name: Prepare CMake
|
||||||
|
run: |
|
||||||
|
cmake -S . -B cmake.output -G "Unix Makefiles" -DHAVE_RULES=On -DBUILD_TESTS=On -DBUILD_GUI=On -DWITH_QCHART=On -DCMAKE_GLOBAL_AUTOGEN_TARGET=On -DCPPCHK_GLIBCXX_DEBUG=Off
|
||||||
|
env:
|
||||||
|
CC: clang-14
|
||||||
|
CXX: clang++-14
|
||||||
|
|
||||||
|
- name: Prepare CMake dependencies
|
||||||
|
run: |
|
||||||
|
# make sure the precompiled headers exist
|
||||||
|
make -C cmake.output/lib cmake_pch.hxx.pch
|
||||||
|
make -C cmake.output/test cmake_pch.hxx.pch
|
||||||
|
# make sure the auto-generated GUI sources exist
|
||||||
|
make -C cmake.output autogen
|
||||||
|
|
||||||
|
- name: Clang-Tidy
|
||||||
|
run: |
|
||||||
|
cmake --build cmake.output --target run-clang-tidy 2> /dev/null
|
|
@ -0,0 +1,43 @@
|
||||||
|
name: "CodeQL"
|
||||||
|
|
||||||
|
on: [push, pull_request]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
analyze:
|
||||||
|
name: Analyze
|
||||||
|
runs-on: ubuntu-22.04
|
||||||
|
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
matrix:
|
||||||
|
# Override automatic language detection by changing the below list
|
||||||
|
# Supported options are ['csharp', 'cpp', 'go', 'java', 'javascript', 'python']
|
||||||
|
language: ['cpp', 'python']
|
||||||
|
# Learn more...
|
||||||
|
# https://docs.github.com/en/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#overriding-automatic-language-detection
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout repository
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
|
||||||
|
- name: Install missing software on ubuntu
|
||||||
|
run: |
|
||||||
|
sudo apt-get update
|
||||||
|
sudo apt-get install libxml2-utils
|
||||||
|
|
||||||
|
# Initializes the CodeQL tools for scanning.
|
||||||
|
- name: Initialize CodeQL
|
||||||
|
uses: github/codeql-action/init@v1
|
||||||
|
with:
|
||||||
|
languages: ${{ matrix.language }}
|
||||||
|
# If you wish to specify custom queries, you can do so here or in a config file.
|
||||||
|
# By default, queries listed here will override any specified in a config file.
|
||||||
|
# Prefix the list here with "+" to use these queries and those in the config file.
|
||||||
|
# queries: ./path/to/local/query, your-org/your-repo/queries@main
|
||||||
|
setup-python-dependencies: false
|
||||||
|
|
||||||
|
- run: |
|
||||||
|
make -j$(nproc) HAVE_RULES=yes cppcheck
|
||||||
|
|
||||||
|
- name: Perform CodeQL Analysis
|
||||||
|
uses: github/codeql-action/analyze@v1
|
|
@ -0,0 +1,49 @@
|
||||||
|
# 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: Coverage
|
||||||
|
|
||||||
|
on: [push, pull_request]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
|
||||||
|
runs-on: ubuntu-22.04
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
|
||||||
|
- name: Install missing software on ubuntu
|
||||||
|
run: |
|
||||||
|
sudo apt-get update
|
||||||
|
sudo apt-get install libxml2-utils
|
||||||
|
sudo apt-get install lcov
|
||||||
|
sudo apt-get install libcppunit-dev
|
||||||
|
python -m pip install pip --upgrade
|
||||||
|
python -m pip install lcov_cobertura
|
||||||
|
|
||||||
|
- name: Compile instrumented
|
||||||
|
run: |
|
||||||
|
make -j$(nproc) test CXXFLAGS="-g -fprofile-arcs -ftest-coverage" HAVE_RULES=yes
|
||||||
|
|
||||||
|
- name: Generate coverage report
|
||||||
|
run: |
|
||||||
|
rm -rf coverage_report
|
||||||
|
./testrunner
|
||||||
|
test/cfg/runtests.sh
|
||||||
|
gcov lib/*.cpp -o lib/
|
||||||
|
lcov --directory ./ --capture --output-file lcov_tmp.info -b ./
|
||||||
|
lcov --extract lcov_tmp.info "$(pwd)/*" --output-file lcov.info
|
||||||
|
genhtml lcov.info -o coverage_report --frame --legend --demangle-cpp
|
||||||
|
|
||||||
|
- uses: actions/upload-artifact@v2
|
||||||
|
with:
|
||||||
|
name: Coverage results
|
||||||
|
path: coverage_report
|
||||||
|
|
||||||
|
- uses: codecov/codecov-action@v1.2.1
|
||||||
|
with:
|
||||||
|
# token: ${{ secrets.CODECOV_TOKEN }} # not required for public repos
|
||||||
|
# file: ./coverage.xml # optional
|
||||||
|
flags: unittests # optional
|
||||||
|
name: ${{ github.repository }} # optional
|
||||||
|
fail_ci_if_error: true # optional (default = false):
|
|
@ -0,0 +1,39 @@
|
||||||
|
# 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: format
|
||||||
|
|
||||||
|
on: [push, pull_request]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
|
||||||
|
runs-on: ubuntu-22.04
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
|
||||||
|
- name: Cache uncrustify
|
||||||
|
uses: actions/cache@v2
|
||||||
|
id: cache-uncrustify
|
||||||
|
with:
|
||||||
|
path: |
|
||||||
|
~/uncrustify
|
||||||
|
key: ${{ runner.os }}-uncrustify
|
||||||
|
|
||||||
|
- name: build uncrustify
|
||||||
|
if: steps.cache-uncrustify.outputs.cache-hit != 'true'
|
||||||
|
run: |
|
||||||
|
wget https://github.com/uncrustify/uncrustify/archive/refs/tags/uncrustify-0.72.0.tar.gz
|
||||||
|
tar xzvf uncrustify-0.72.0.tar.gz && cd uncrustify-uncrustify-0.72.0
|
||||||
|
mkdir build
|
||||||
|
cd build
|
||||||
|
cmake -DCMAKE_BUILD_TYPE=Release ..
|
||||||
|
cmake --build . -- -j$(nproc) -s
|
||||||
|
mkdir ~/uncrustify
|
||||||
|
cp uncrustify ~/uncrustify/
|
||||||
|
|
||||||
|
- name: Uncrustify check
|
||||||
|
run: |
|
||||||
|
~/uncrustify/uncrustify -c .uncrustify.cfg -l CPP --no-backup --replace */*.cpp */*.h
|
||||||
|
git diff
|
||||||
|
git diff | diff - /dev/null &> /dev/null
|
|
@ -0,0 +1,60 @@
|
||||||
|
# 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: include-what-you-use
|
||||||
|
|
||||||
|
on: workflow_dispatch
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
|
||||||
|
runs-on: ubuntu-22.04
|
||||||
|
|
||||||
|
container:
|
||||||
|
image: "kalilinux/kali-rolling"
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
|
||||||
|
# TODO: the necessary packages are excessive - mostly because of Qt - use a pre-built image
|
||||||
|
- name: Install missing software
|
||||||
|
run: |
|
||||||
|
apt-get update
|
||||||
|
apt-get install -y cmake g++ make libpcre3-dev
|
||||||
|
apt-get install -y qtbase5-dev qttools5-dev libqt5charts5-dev
|
||||||
|
apt-get install -y wget iwyu
|
||||||
|
|
||||||
|
- name: Prepare CMake
|
||||||
|
run: |
|
||||||
|
cmake -S . -B cmake.output -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release -DHAVE_RULES=On -DBUILD_TESTS=On -DBUILD_GUI=On -DBUILD_TESTS=On -DBUILD_GUI=On -DWITH_QCHART=On -DCMAKE_GLOBAL_AUTOGEN_TARGET=On -DCMAKE_DISABLE_PRECOMPILE_HEADERS=On -DCPPCHK_GLIBCXX_DEBUG=Off -DUSE_MATCHCOMPILER=Off
|
||||||
|
|
||||||
|
- name: Prepare CMake dependencies
|
||||||
|
run: |
|
||||||
|
# make sure the precompiled headers exist
|
||||||
|
#make -C cmake.output lib/CMakeFiles/lib_objs.dir/cmake_pch.hxx.cxx
|
||||||
|
#make -C cmake.output test/CMakeFiles/testrunner.dir/cmake_pch.hxx.cxx
|
||||||
|
# make sure the auto-generated GUI sources exist
|
||||||
|
make -C cmake.output autogen
|
||||||
|
# make sure the auto-generated GUI dependencies exist
|
||||||
|
make -C cmake.output gui-build-deps
|
||||||
|
|
||||||
|
- name: Build Qt mappings
|
||||||
|
run: |
|
||||||
|
wget https://raw.githubusercontent.com/include-what-you-use/include-what-you-use/master/mapgen/iwyu-mapgen-qt.py
|
||||||
|
python3 iwyu-mapgen-qt.py /usr/include/x86_64-linux-gnu/qt5/ > qt5.imp
|
||||||
|
|
||||||
|
# TODO: the mapping file causes a massive slowdown so we cannot use it at the moment.
|
||||||
|
# add "-Xiwyu --mapping_file=qt5.imp" at the end of the whole command if we can use them.
|
||||||
|
- name: iwyu_tool
|
||||||
|
run: |
|
||||||
|
# do not fail for now so the output is being saved
|
||||||
|
iwyu_tool -p cmake.output -j $(nproc) -- -w > iwyu.log || true
|
||||||
|
|
||||||
|
- uses: actions/upload-artifact@v2
|
||||||
|
with:
|
||||||
|
name: Qt Mappings
|
||||||
|
path: ./qt5.imp
|
||||||
|
|
||||||
|
- uses: actions/upload-artifact@v2
|
||||||
|
with:
|
||||||
|
name: Logs
|
||||||
|
path: ./*.log
|
|
@ -0,0 +1,132 @@
|
||||||
|
# Some convenient links:
|
||||||
|
# - https://github.com/actions/virtual-environments/blob/master/images/win/Windows2019-Readme.md
|
||||||
|
#
|
||||||
|
|
||||||
|
name: release-windows
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
tags:
|
||||||
|
- '2.*'
|
||||||
|
schedule:
|
||||||
|
- cron: '0 0 * * *'
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
defaults:
|
||||||
|
run:
|
||||||
|
shell: cmd
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
|
||||||
|
build:
|
||||||
|
|
||||||
|
runs-on: windows-2022
|
||||||
|
|
||||||
|
env:
|
||||||
|
# see https://www.pcre.org/original/changelog.txt
|
||||||
|
PCRE_VERSION: 8.45
|
||||||
|
QT_VERSION: 5.15.2
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
|
||||||
|
- name: Set up Visual Studio environment
|
||||||
|
uses: ilammy/msvc-dev-cmd@v1
|
||||||
|
|
||||||
|
- name: Cache PCRE
|
||||||
|
id: cache-pcre
|
||||||
|
uses: actions/cache@v2
|
||||||
|
with:
|
||||||
|
path: pcre-${{ env.PCRE_VERSION }}.zip
|
||||||
|
key: pcre-${{ env.PCRE_VERSION }}
|
||||||
|
|
||||||
|
- name: Download PCRE
|
||||||
|
if: steps.cache-pcre.outputs.cache-hit != 'true'
|
||||||
|
run: |
|
||||||
|
curl -fsSL https://github.com/pfultz2/pcre/archive/refs/tags/%PCRE_VERSION%.zip -o pcre-%PCRE_VERSION%.zip || exit /b !errorlevel!
|
||||||
|
|
||||||
|
- name: Install PCRE
|
||||||
|
run: |
|
||||||
|
7z x pcre-%PCRE_VERSION%.zip || exit /b !errorlevel!
|
||||||
|
cd pcre-%PCRE_VERSION% || exit /b !errorlevel!
|
||||||
|
cmake . -G "Visual Studio 17 2022" -A x64 -DPCRE_BUILD_PCRECPP=OFF -DPCRE_BUILD_PCREGREP=OFF -DPCRE_BUILD_TESTS=OFF || exit /b !errorlevel!
|
||||||
|
msbuild -m PCRE.sln -p:Configuration=Release -p:Platform=x64 || exit /b !errorlevel!
|
||||||
|
copy pcre.h ..\externals || exit /b !errorlevel!
|
||||||
|
copy Release\pcre.lib ..\externals\pcre64.lib || exit /b !errorlevel!
|
||||||
|
|
||||||
|
- name: Cache Qt ${{ env.QT_VERSION }}
|
||||||
|
id: cache-qt
|
||||||
|
uses: actions/cache@v1 # not v2!
|
||||||
|
with:
|
||||||
|
path: ../Qt
|
||||||
|
key: Windows-QtCache-${{ env.QT_VERSION }}-qtcharts-qthelp
|
||||||
|
|
||||||
|
- name: Install Qt ${{ env.QT_VERSION }}
|
||||||
|
uses: jurplel/install-qt-action@v2
|
||||||
|
with:
|
||||||
|
version: ${{ env.QT_VERSION }}
|
||||||
|
modules: 'qtcharts qthelp'
|
||||||
|
cached: ${{ steps.cache-qt.outputs.cache-hit }}
|
||||||
|
|
||||||
|
- name: Create .qm
|
||||||
|
run: |
|
||||||
|
cd gui || exit /b !errorlevel!
|
||||||
|
lupdate gui.pro -no-obsolete || exit /b !errorlevel!
|
||||||
|
lrelease gui.pro -removeidentical || exit /b !errorlevel!
|
||||||
|
|
||||||
|
- name: Matchcompiler
|
||||||
|
run: python tools\matchcompiler.py --write-dir lib || exit /b !errorlevel!
|
||||||
|
|
||||||
|
- name: Build x64 release GUI
|
||||||
|
run: |
|
||||||
|
cd gui || exit /b !errorlevel!
|
||||||
|
qmake HAVE_QCHART=yes || exit /b !errorlevel!
|
||||||
|
nmake release || exit /b !errorlevel!
|
||||||
|
env:
|
||||||
|
CL: /MP
|
||||||
|
|
||||||
|
- name: Deploy app
|
||||||
|
run: |
|
||||||
|
windeployqt Build\gui || exit /b !errorlevel!
|
||||||
|
del Build\gui\cppcheck-gui.ilk || exit /b !errorlevel!
|
||||||
|
del Build\gui\cppcheck-gui.pdb || exit /b !errorlevel!
|
||||||
|
|
||||||
|
- name: Build CLI x64 release configuration using MSBuild
|
||||||
|
run: msbuild -m cppcheck.sln -t:cli -p:Configuration=Release-PCRE -p:Platform=x64 || exit /b !errorlevel!
|
||||||
|
|
||||||
|
- name: Collect files
|
||||||
|
run: |
|
||||||
|
move Build\gui win_installer\files || exit /b !errorlevel!
|
||||||
|
mkdir win_installer\files\addons || exit /b !errorlevel!
|
||||||
|
copy addons\*.* win_installer\files\addons || exit /b !errorlevel!
|
||||||
|
mkdir win_installer\files\cfg || exit /b !errorlevel!
|
||||||
|
copy cfg\*.cfg win_installer\files\cfg || exit /b !errorlevel!
|
||||||
|
:: "platforms" is a folder used by Qt as well so it already exists
|
||||||
|
:: mkdir win_installer\files\platforms || exit /b !errorlevel!
|
||||||
|
copy platforms\*.xml win_installer\files\platforms || exit /b !errorlevel!
|
||||||
|
copy bin\cppcheck.exe win_installer\files || exit /b !errorlevel!
|
||||||
|
copy bin\cppcheck-core.dll win_installer\files || exit /b !errorlevel!
|
||||||
|
mkdir win_installer\files\help || exit /b !errorlevel!
|
||||||
|
xcopy /s gui\help win_installer\files\help || exit /b !errorlevel!
|
||||||
|
del win_installer\files\translations\*.qm || exit /b !errorlevel!
|
||||||
|
move gui\*.qm win_installer\files\translations || exit /b !errorlevel!
|
||||||
|
|
||||||
|
- name: Build Installer
|
||||||
|
run: |
|
||||||
|
cd win_installer || exit /b !errorlevel!
|
||||||
|
REM Read ProductVersion
|
||||||
|
for /f "tokens=4 delims= " %%a in ('find "ProductVersion" productInfo.wxi') do set PRODUCTVER=%%a
|
||||||
|
REM Remove double quotes
|
||||||
|
set PRODUCTVER=%PRODUCTVER:"=%
|
||||||
|
echo ProductVersion="%PRODUCTVER%" || exit /b !errorlevel!
|
||||||
|
msbuild -m cppcheck.wixproj -p:Platform=x64,ProductVersion=%PRODUCTVER%.${{ github.run_number }} || exit /b !errorlevel!
|
||||||
|
|
||||||
|
- uses: actions/upload-artifact@v2
|
||||||
|
with:
|
||||||
|
name: installer
|
||||||
|
path: win_installer/Build/
|
||||||
|
|
||||||
|
- uses: actions/upload-artifact@v2
|
||||||
|
with:
|
||||||
|
name: deploy
|
||||||
|
path: win_installer\files
|
|
@ -0,0 +1,139 @@
|
||||||
|
# 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: scriptcheck
|
||||||
|
|
||||||
|
on: [push, pull_request]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
|
||||||
|
# 'ubuntu-22.04' removes Python 2.7, 3.6 and 3.6 so keep the previous LTS version
|
||||||
|
runs-on: ubuntu-20.04
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
|
||||||
|
- name: Cache Cppcheck
|
||||||
|
uses: actions/cache@v2
|
||||||
|
with:
|
||||||
|
path: cppcheck
|
||||||
|
key: ${{ runner.os }}-scriptcheck-cppcheck-${{ github.sha }}
|
||||||
|
|
||||||
|
- name: build cppcheck
|
||||||
|
run: |
|
||||||
|
make -j$(nproc) -s
|
||||||
|
strip -s ./cppcheck
|
||||||
|
|
||||||
|
scriptcheck:
|
||||||
|
|
||||||
|
needs: build
|
||||||
|
# 'ubuntu-22.04' removes Python 2.7, 3.5 and 3.6 so keep the previous LTS version
|
||||||
|
runs-on: ubuntu-20.04
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
python-version: [2.7, 3.5, 3.6, 3.7, 3.8, 3.9, '3.10']
|
||||||
|
fail-fast: false
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
|
||||||
|
- name: Restore Cppcheck
|
||||||
|
uses: actions/cache@v2
|
||||||
|
with:
|
||||||
|
path: cppcheck
|
||||||
|
key: ${{ runner.os }}-scriptcheck-cppcheck-${{ github.sha }}
|
||||||
|
|
||||||
|
- name: Set up Python ${{ matrix.python-version }}
|
||||||
|
uses: actions/setup-python@v2
|
||||||
|
with:
|
||||||
|
python-version: ${{ matrix.python-version }}
|
||||||
|
|
||||||
|
- name: Install missing software on ubuntu
|
||||||
|
run: |
|
||||||
|
sudo apt-get update
|
||||||
|
sudo apt-get install tidy libxml2-utils
|
||||||
|
|
||||||
|
- name: Install missing software on ubuntu (Python 2)
|
||||||
|
if: matrix.python-version == '2.7'
|
||||||
|
run: |
|
||||||
|
python -m pip install pip --upgrade
|
||||||
|
python -m pip install pathlib
|
||||||
|
python -m pip install pytest
|
||||||
|
python -m pip install pygments
|
||||||
|
|
||||||
|
- name: Install missing software on ubuntu (Python 3)
|
||||||
|
if: matrix.python-version != '2.7'
|
||||||
|
run: |
|
||||||
|
sudo apt-get install shellcheck
|
||||||
|
python -m pip install pip --upgrade
|
||||||
|
python -m pip install natsort
|
||||||
|
python -m pip install pexpect
|
||||||
|
python -m pip install pylint
|
||||||
|
python -m pip install unittest2
|
||||||
|
python -m pip install pytest
|
||||||
|
python -m pip install pygments
|
||||||
|
python -m pip install requests
|
||||||
|
python -m pip install psutil
|
||||||
|
|
||||||
|
- name: run Shellcheck
|
||||||
|
if: matrix.python-version == '3.10'
|
||||||
|
run: |
|
||||||
|
find . -name "*.sh" | xargs shellcheck --exclude SC2002,SC2013,SC2034,SC2035,SC2043,SC2046,SC2086,SC2089,SC2090,SC2129,SC2211,SC2231
|
||||||
|
|
||||||
|
- name: run pylint
|
||||||
|
if: matrix.python-version == '3.10'
|
||||||
|
run: |
|
||||||
|
echo "FIXME pylint is disabled for now because it fails to import files:"
|
||||||
|
echo "FIXME addons/runaddon.py:1:0: E0401: Unable to import 'cppcheckdata' (import-error)"
|
||||||
|
echo "FIXME addons/runaddon.py:1:0: E0401: Unable to import 'cppcheck' (import-error)"
|
||||||
|
# pylint --rcfile=pylintrc_travis --jobs $(nproc) addons/*.py htmlreport/cppcheck-htmlreport htmlreport/*.py tools/*.py
|
||||||
|
|
||||||
|
- name: check .json files
|
||||||
|
if: matrix.python-version == '3.10'
|
||||||
|
run: |
|
||||||
|
find . -name '*.json' | xargs -n 1 python -m json.tool > /dev/null
|
||||||
|
|
||||||
|
- name: Validate
|
||||||
|
if: matrix.python-version == '3.10'
|
||||||
|
run: |
|
||||||
|
make -j$(nproc) validateCFG validatePlatforms validateRules
|
||||||
|
|
||||||
|
- name: check python syntax
|
||||||
|
if: matrix.python-version != '2.7'
|
||||||
|
run: |
|
||||||
|
python -m py_compile addons/*.py
|
||||||
|
python -m py_compile htmlreport/cppcheck-htmlreport
|
||||||
|
python -m py_compile htmlreport/*.py
|
||||||
|
python -m py_compile tools/*.py
|
||||||
|
|
||||||
|
- name: compile addons
|
||||||
|
run: |
|
||||||
|
python -m compileall ./addons
|
||||||
|
|
||||||
|
- name: test matchcompiler
|
||||||
|
run: |
|
||||||
|
python tools/test_matchcompiler.py
|
||||||
|
|
||||||
|
- name: test addons
|
||||||
|
run: |
|
||||||
|
python -m pytest addons/test/test-*.py
|
||||||
|
env:
|
||||||
|
PYTHONPATH: ./addons
|
||||||
|
|
||||||
|
- name: test htmlreport
|
||||||
|
run: |
|
||||||
|
htmlreport/test_htmlreport.py
|
||||||
|
cd htmlreport
|
||||||
|
./check.sh
|
||||||
|
|
||||||
|
- name: test reduce
|
||||||
|
run: |
|
||||||
|
python -m pytest tools/test_reduce.py
|
||||||
|
env:
|
||||||
|
PYTHONPATH: ./tools
|
||||||
|
|
||||||
|
- name: dmake
|
||||||
|
if: matrix.python-version == '3.10'
|
||||||
|
run: |
|
||||||
|
make -j$(nproc) run-dmake
|
||||||
|
git diff --exit-code
|
|
@ -0,0 +1,81 @@
|
||||||
|
# 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: selfcheck
|
||||||
|
|
||||||
|
on: [push, pull_request]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
|
||||||
|
runs-on: ubuntu-22.04
|
||||||
|
|
||||||
|
env:
|
||||||
|
QT_VERSION: 5.15.2
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
|
||||||
|
- name: Cache Qt ${{ env.QT_VERSION }}
|
||||||
|
id: cache-qt
|
||||||
|
uses: actions/cache@v1 # not v2!
|
||||||
|
with:
|
||||||
|
path: ../Qt
|
||||||
|
key: Linux-QtCache-${{ env.QT_VERSION }}-qtcharts
|
||||||
|
|
||||||
|
- name: Install Qt ${{ env.QT_VERSION }}
|
||||||
|
uses: jurplel/install-qt-action@v2
|
||||||
|
with:
|
||||||
|
version: ${{ env.QT_VERSION }}
|
||||||
|
modules: 'qtcharts'
|
||||||
|
cached: ${{ steps.cache-qt.outputs.cache-hit }}
|
||||||
|
|
||||||
|
# TODO: cache this - perform same build as for the other self check
|
||||||
|
- name: Self check (build)
|
||||||
|
run: |
|
||||||
|
make clean
|
||||||
|
make -j$(nproc) -s CXXFLAGS="-O2 -w" MATCHCOMPILER=yes
|
||||||
|
|
||||||
|
- name: CMake
|
||||||
|
run: |
|
||||||
|
mkdir cmake.output
|
||||||
|
pushd cmake.output
|
||||||
|
cmake -G "Unix Makefiles" -DHAVE_RULES=On -DBUILD_TESTS=On -DBUILD_GUI=ON -DWITH_QCHART=ON -DCMAKE_GLOBAL_AUTOGEN_TARGET=On ..
|
||||||
|
|
||||||
|
- name: Generate dependencies
|
||||||
|
run: |
|
||||||
|
# make sure the precompiled headers exist
|
||||||
|
make -C cmake.output lib/CMakeFiles/lib_objs.dir/cmake_pch.hxx.cxx
|
||||||
|
make -C cmake.output test/CMakeFiles/testrunner.dir/cmake_pch.hxx.cxx
|
||||||
|
# make sure auto-generated GUI files exist
|
||||||
|
make -C cmake.output autogen
|
||||||
|
make -C cmake.output gui-build-deps
|
||||||
|
|
||||||
|
# TODO: find a way to report unmatched suppressions without need to add information checks
|
||||||
|
- name: Self check (unusedFunction)
|
||||||
|
if: false # TODO: fails with preprocessorErrorDirective - see #10667
|
||||||
|
run: |
|
||||||
|
./cppcheck -q --template=selfcheck --error-exitcode=1 --library=cppcheck-lib --library=qt -D__CPPCHECK__ -D__GNUC__ -DQT_VERSION=0x050000 -DQ_MOC_OUTPUT_REVISION=67 --inconclusive --enable=unusedFunction --exception-handling -rp=. --project=cmake.output/compile_commands.json --suppressions-list=.selfcheck_unused_suppressions --inline-suppr
|
||||||
|
env:
|
||||||
|
DISABLE_VALUEFLOW: 1
|
||||||
|
|
||||||
|
# the following steps are duplicated from above since setting up the build node in a parallel step takes longer than the actual steps
|
||||||
|
- name: CMake (no test)
|
||||||
|
run: |
|
||||||
|
mkdir cmake.output.notest
|
||||||
|
pushd cmake.output.notest
|
||||||
|
cmake -G "Unix Makefiles" -DHAVE_RULES=On -DBUILD_TESTS=0 -DBUILD_GUI=ON -DWITH_QCHART=ON -DCMAKE_GLOBAL_AUTOGEN_TARGET=On ..
|
||||||
|
|
||||||
|
- name: Generate dependencies (no test)
|
||||||
|
run: |
|
||||||
|
# make sure the precompiled headers exist
|
||||||
|
make -C cmake.output.notest lib/CMakeFiles/lib_objs.dir/cmake_pch.hxx.cxx
|
||||||
|
# make sure auto-generated GUI files exist
|
||||||
|
make -C cmake.output.notest autogen
|
||||||
|
make -C cmake.output.notest gui-build-deps
|
||||||
|
|
||||||
|
# TODO: find a way to report unmatched suppressions without need to add information checks
|
||||||
|
- name: Self check (unusedFunction / no test)
|
||||||
|
run: |
|
||||||
|
./cppcheck -q --template=selfcheck --error-exitcode=1 --library=cppcheck-lib --library=qt -D__CPPCHECK__ -D__GNUC__ -DQT_VERSION=0x050000 -DQ_MOC_OUTPUT_REVISION=67 --inconclusive --enable=unusedFunction --exception-handling -rp=. --project=cmake.output.notest/compile_commands.json --suppressions-list=.selfcheck_unused_suppressions --inline-suppr
|
||||||
|
env:
|
||||||
|
DISABLE_VALUEFLOW: 1
|
|
@ -0,0 +1,58 @@
|
||||||
|
# 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
|
||||||
|
|
||||||
|
on: [push, pull_request]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
|
||||||
|
runs-on: ubuntu-22.04
|
||||||
|
|
||||||
|
container:
|
||||||
|
image: "ubuntu:22.04"
|
||||||
|
|
||||||
|
env:
|
||||||
|
UBSAN_OPTIONS: print_stacktrace=1:halt_on_error=1
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
|
||||||
|
- name: Set up Python 3.10
|
||||||
|
uses: actions/setup-python@v2
|
||||||
|
with:
|
||||||
|
python-version: '3.10'
|
||||||
|
|
||||||
|
- name: Install missing software on ubuntu
|
||||||
|
run: |
|
||||||
|
apt-get update
|
||||||
|
apt-get install -y cmake make libpcre3-dev
|
||||||
|
apt-get install -y clang-14
|
||||||
|
|
||||||
|
- name: CMake
|
||||||
|
run: |
|
||||||
|
cmake -S . -B cmake.output -DCMAKE_BUILD_TYPE=RelWithDebInfo -DHAVE_RULES=On -DBUILD_TESTS=On -DUSE_MATCHCOMPILER=Verify -DANALYZE_UNDEFINED=On -DENABLE_CHECK_INTERNAL=On -DCPPCHK_GLIBCXX_DEBUG=Off -DCMAKE_DISABLE_PRECOMPILE_HEADERS=On
|
||||||
|
env:
|
||||||
|
CC: clang-14
|
||||||
|
CXX: clang++-14
|
||||||
|
|
||||||
|
- name: Build cppcheck
|
||||||
|
run: |
|
||||||
|
cmake --build cmake.output --target cppcheck -- -j $(nproc)
|
||||||
|
|
||||||
|
- name: Build test
|
||||||
|
run: |
|
||||||
|
cmake --build cmake.output --target testrunner -- -j $(nproc)
|
||||||
|
|
||||||
|
- name: Run tests
|
||||||
|
run: ./cmake.output/bin/testrunner
|
||||||
|
|
||||||
|
# TODO: no gui/temp/*.cpp files available
|
||||||
|
- name: Self check
|
||||||
|
run: |
|
||||||
|
ec=0
|
||||||
|
./cmake.output/bin/cppcheck -q -j$(nproc) --std=c++11 --template=selfcheck -D__CPPCHECK__ --error-exitcode=1 --inline-suppr --suppressions-list=.travis_suppressions --library=cppcheck-lib --addon=naming.json -Ilib -Iexternals/simplecpp/ -Iexternals/tinyxml2/ -Icli --inconclusive --enable=style,performance,portability,warning,internal --exception-handling --debug-warnings cli lib || ec=1
|
||||||
|
./cmake.output/bin/cppcheck -q -j$(nproc) --std=c++11 --template=selfcheck -D__CPPCHECK__ -DQT_VERSION=0x050000 -DQ_MOC_OUTPUT_REVISION=67 --error-exitcode=1 --inline-suppr --suppressions-list=.travis_suppressions --library=qt --addon=naming.json -Ilib -Iexternals/simplecpp/ -Iexternals/tinyxml2/ --enable=style,performance,portability,warning,internal --exception-handling --debug-warnings gui/*.cpp gui/temp/*.cpp || ec=1
|
||||||
|
./cmake.output/bin/cppcheck -q -j$(nproc) --std=c++11 --template=selfcheck -D__CPPCHECK__ -DQ_MOC_OUTPUT_REVISION=67 --error-exitcode=1 --inline-suppr --suppressions-list=.travis_suppressions --library=cppcheck-lib -Ilib -Iexternals/simplecpp/ -Iexternals/tinyxml2/ -Icli -Igui --inconclusive --enable=style,performance,portability,warning,internal --exception-handling --debug-warnings test/*.cpp tools/*.cpp || ec=1
|
||||||
|
./cmake.output/bin/cppcheck -q -j$(nproc) --std=c++11 --template=selfcheck -D__CPPCHECK__ -DQ_MOC_OUTPUT_REVISION=67 --error-exitcode=1 --inline-suppr --suppressions-list=.travis_suppressions --library=cppcheck-lib --library=qt -Ilib -Iexternals/simplecpp/ -Iexternals/tinyxml2/ -Igui --inconclusive --enable=style,performance,portability,warning,missingInclude,internal --exception-handling --debug-warnings tools/triage || ec=1
|
||||||
|
exit $ec
|
|
@ -0,0 +1,52 @@
|
||||||
|
# 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: valgrind
|
||||||
|
|
||||||
|
# on: [push, pull_request]
|
||||||
|
on: workflow_dispatch
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
|
||||||
|
runs-on: ubuntu-22.04
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
|
||||||
|
- name: Prepare
|
||||||
|
run: |
|
||||||
|
sudo apt-get update
|
||||||
|
sudo apt-get install debian-goodies ubuntu-dbgsym-keyring
|
||||||
|
# the key expired and the ubuntu-dbgsym-keyring package does not yet include the latest one - see https://bugs.launchpad.net/ubuntu/+source/ubuntu-keyring/+bug/1920640
|
||||||
|
wget -O - http://ddebs.ubuntu.com/dbgsym-release-key.asc | sudo apt-key add -
|
||||||
|
|
||||||
|
- name: Add debug repos on ubuntu
|
||||||
|
run: |
|
||||||
|
echo "deb http://ddebs.ubuntu.com $(lsb_release -cs) main restricted universe multiverse" | sudo tee -a /etc/apt/sources.list.d/ddebs.list
|
||||||
|
echo "deb http://ddebs.ubuntu.com $(lsb_release -cs)-updates main restricted universe multiverse" | sudo tee -a /etc/apt/sources.list.d/ddebs.list
|
||||||
|
echo "deb http://ddebs.ubuntu.com $(lsb_release -cs)-proposed main restricted universe multiverse" | sudo tee -a /etc/apt/sources.list.d/ddebs.list
|
||||||
|
|
||||||
|
- name: Install missing software
|
||||||
|
run: |
|
||||||
|
sudo apt-get update
|
||||||
|
sudo apt-get install libxml2-utils
|
||||||
|
sudo apt-get install valgrind
|
||||||
|
sudo apt-get install libc6-dbg-amd64-cross
|
||||||
|
|
||||||
|
- name: Build cppcheck
|
||||||
|
run: |
|
||||||
|
CXXFLAGS="-O1 -g" make -j$(nproc) HAVE_RULES=yes MATCHCOMPILER=yes
|
||||||
|
|
||||||
|
- name: Build test
|
||||||
|
run: |
|
||||||
|
CXXFLAGS="-O1 -g" make -j$(nproc) testrunner HAVE_RULES=yes MATCHCOMPILER=yes
|
||||||
|
|
||||||
|
- name: Run valgrind
|
||||||
|
run: |
|
||||||
|
valgrind --error-limit=yes --leak-check=full --num-callers=50 --show-reachable=yes --track-origins=yes --suppressions=valgrind/testrunner.supp --gen-suppressions=all --log-fd=9 --error-exitcode=42 ./testrunner TestGarbage TestOther TestSimplifyTemplate 9>memcheck.log
|
||||||
|
cat memcheck.log
|
||||||
|
|
||||||
|
- uses: actions/upload-artifact@v2
|
||||||
|
with:
|
||||||
|
name: Logs
|
||||||
|
path: ./*.log
|
Loading…
Reference in New Issue