diff --git a/.github/workflows/lint.yml b/.github/workflows/clang-format.yml similarity index 74% rename from .github/workflows/lint.yml rename to .github/workflows/clang-format.yml index 5504dc32..46e338ef 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/clang-format.yml @@ -1,4 +1,4 @@ -name: Linter +name: clang-format on: [push, pull_request] @@ -8,7 +8,8 @@ jobs: steps: - uses: actions/checkout@v3 - uses: DoozyX/clang-format-lint-action@v0.16.2 + name: clang-format with: source: '.' extensions: 'hpp,h,cpp,c' - clangFormatVersion: 16 + clangFormatVersion: 16 diff --git a/.github/workflows/clang-tidy.yml b/.github/workflows/clang-tidy.yml new file mode 100644 index 00000000..5993adb0 --- /dev/null +++ b/.github/workflows/clang-tidy.yml @@ -0,0 +1,31 @@ +name: clang-tidy + +on: [push, pull_request] + +jobs: + build: + runs-on: ubuntu-latest + container: + image: alexays/waybar:debian + steps: + - uses: actions/checkout@v3 + - name: configure + run: | + meson -Dcpp_std=c++20 build # necessary to generate compile_commands.json + ninja -C build # necessary to find certain .h files (xdg, wayland, etc.) + - uses: zjeffer/cpp-linter-action@test/process-compilation-database + name: clang-tidy + id: clang-tidy-check + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + PIP_NO_CACHE_DIR: false + with: + style: "" # empty string => don't do clang-format checks here, we do them in clang-format.yml + files-changed-only: true # only check files that have changed + lines-changed-only: true # only check lines that have changed + tidy-checks: "" # empty string => use the .clang-tidy file + version: "17" # clang-tools version + database: "build" # path to the compile_commands.json file + - name: Check if clang-tidy failed on any files + if: steps.clang-tidy-check.outputs.checks-failed > 0 + run: echo "Some files failed the linting checks!" && exit 1