mirror of
https://github.com/coturn/coturn.git
synced 2026-05-12 09:40:35 +00:00
e59f0ffeaa
Resolves all sanitizer warnings caused by 1. simultaneous access to logger time 2. barrier during threads initialization at startup
104 lines
3.2 KiB
YAML
104 lines
3.2 KiB
YAML
name: Clang
|
|
|
|
on:
|
|
push:
|
|
branches: ["master"]
|
|
tags: ["4.*"]
|
|
pull_request:
|
|
branches: ["master"]
|
|
|
|
concurrency:
|
|
group: ${{ github.workflow }}-${{ github.ref }}
|
|
cancel-in-progress: true
|
|
|
|
jobs:
|
|
format:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
|
|
- name: Install dependencies
|
|
uses: ./.github/workflows/actions/ubuntu-build-deps
|
|
with:
|
|
SUDO: true
|
|
|
|
- name: Install `clang-format-15`
|
|
run: sudo apt install -y clang-format-15
|
|
- name: Prepare `clang-format`
|
|
run: |
|
|
set -e
|
|
if which clang-format-15 2>&1 >/dev/null
|
|
then
|
|
sudo cp $(which clang-format-15) $(which clang-format)
|
|
fi
|
|
clang-format --version
|
|
|
|
- run: ./configure
|
|
|
|
- run: make lint
|
|
|
|
sanitize:
|
|
runs-on: ubuntu-latest
|
|
strategy:
|
|
matrix:
|
|
sanitizer:
|
|
- address,pointer-compare,pointer-subtract
|
|
- thread
|
|
env:
|
|
CFLAGS: -fno-omit-frame-pointer -fstack-protector-all -fsanitize=${{ matrix.sanitizer }},bounds,enum -fsanitize-address-use-after-scope -fsanitize-address-use-after-return=always -fsanitize-recover=address -fsanitize-memory-track-origins=2
|
|
CC: clang
|
|
ASAN_OPTIONS: strict_string_checks=1:detect_stack_use_after_return=1:check_initialization_order=1:detect_leaks=0:detect_invalid_pointer_pairs=1:halt_on_error=0
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
|
|
- name: Install dependencies
|
|
uses: ./.github/workflows/actions/ubuntu-build-deps
|
|
with:
|
|
SUDO: true
|
|
|
|
- run: ./configure
|
|
- run: make -j $(nproc)
|
|
|
|
- run: make check
|
|
|
|
- run: ./run_tests.sh
|
|
working-directory: examples/
|
|
- run: ./run_tests_conf.sh
|
|
working-directory: examples/
|
|
|
|
tidy:
|
|
runs-on: ubuntu-latest
|
|
strategy:
|
|
matrix:
|
|
config: ["Release"]
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
|
|
- name: Install dependencies
|
|
uses: ./.github/workflows/actions/ubuntu-build-deps
|
|
with:
|
|
SUDO: true
|
|
|
|
- name: Configure
|
|
run: cmake -G Ninja -B build -DCMAKE_BUILD_TYPE=${{ matrix.config }}
|
|
-DCMAKE_EXPORT_COMPILE_COMMANDS=true
|
|
- name: Compile
|
|
run: cmake --build build --parallel --config ${{ matrix.config }}
|
|
|
|
# Implicitly requires `build/compile_commands.json` to exist
|
|
- name: Run `clang-tidy`
|
|
run: |
|
|
set -e
|
|
wget https://raw.githubusercontent.com/llvm/llvm-project/llvmorg-14.0.6/clang-tools-extra/clang-tidy/tool/run-clang-tidy.py
|
|
chmod +x run-clang-tidy.py
|
|
./run-clang-tidy.py -j $(nproc) -p build
|
|
|
|
# Implicitly requires `build/compile_commands.json` to exist
|
|
- name: Run IWYU
|
|
run: |
|
|
set -e
|
|
wget https://raw.githubusercontent.com/include-what-you-use/include-what-you-use/clang_14/iwyu_tool.py
|
|
chmod +x iwyu_tool.py
|
|
# iwyu_tool.py returns non-zero if any executions returned nonzero. Which... happens to be useless unless the project is already IWYU clean.
|
|
./iwyu_tool.py -j $(nproc) -p build -- -Xiwyu --mapping_file=${GITHUB_WORKSPACE}/iwyu-ubuntu.imp | grep -v "has correct" | uniq || exit 0
|