Skip to content

Recipes

Here are some example workflows to get started quickly.

name: cpp-linter
on:
  pull_request:
    branches: [main, master, develop]
    paths: ['**.c', '**.cpp', '**.h', '**.hpp', '**.cxx', '**.hxx', '**.cc', '**.hh', '**CMakeLists.txt', 'meson.build', '**.cmake']
  push:
    branches: [main, master, develop]
    paths: ['**.c', '**.cpp', '**.h', '**.hpp', '**.cxx', '**.hxx', '**.cc', '**.hh', '**CMakeLists.txt', 'meson.build', '**.cmake']

jobs:
  cpp-linter:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      # ... optionally setup build env to create a compilation database

      - uses: cpp-linter/cpp-linter-action@v2
        id: linter
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          style: ''  # disable clang-format checks. (1)
          tidy-checks: '' # Use .clang-tidy config file. (2)

      - name: Fail fast?!
        if: steps.linter.outputs.clang-tidy-checks-failed > 0
        run: exit 1
  1. See also style
  2. See also tidy-checks
name: cpp-linter
on:
  pull_request:
    branches: [main, master, develop]
    paths: ['**.c', '**.cpp', '**.h', '**.hpp', '**.cxx', '**.hxx', '**.cc', '**.hh', '**CMakeLists.txt', 'meson.build', '**.cmake']
  push:
    branches: [main, master, develop]
    paths: ['**.c', '**.cpp', '**.h', '**.hpp', '**.cxx', '**.hxx', '**.cc', '**.hh', '**CMakeLists.txt', 'meson.build', '**.cmake']

jobs:
  cpp-linter:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      # ... optionally setup build env to create a compilation database

      - uses: cpp-linter/cpp-linter-action@v2
        id: linter
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          style: 'file'  # Use .clang-format config file. (1)
          tidy-checks: '-*' # disable clang-tidy checks. (2)

      - name: Fail fast?!
        if: steps.linter.outputs.clang-format-checks-failed > 0
        run: exit 1
  1. See also style
  2. See also tidy-checks
name: cpp-linter
on:
  pull_request:
    branches: [main, master, develop]
    paths: ['**.c', '**.cpp', '**.h', '**.hpp', '**.cxx', '**.hxx', '**.cc', '**.hh', '**CMakeLists.txt', 'meson.build', '**.cmake']
  push:
    branches: [main, master, develop]
    paths: ['**.c', '**.cpp', '**.h', '**.hpp', '**.cxx', '**.hxx', '**.cc', '**.hh', '**CMakeLists.txt', 'meson.build', '**.cmake']

jobs:
  cpp-linter:
    runs-on: ubuntu-latest
    permissions: # (1)!
      pull-requests: write
    steps:
      - uses: actions/checkout@v4

      # ... optionally setup build env to create a compilation database

      - uses: cpp-linter/cpp-linter-action@v2
        id: linter
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          style: 'file'  # Use .clang-format config file. (2)
          tidy-checks: '' # Use .clang-tidy config file. (3)
          # only 'update' a single comment in a pull request's thread. (4)
          thread-comments: ${{ github.event_name == 'pull_request' && 'update' }}

      - name: Fail fast?!
        if: steps.linter.outputs.checks-failed > 0
        run: exit 1
  1. See also our token permissions document
  2. See also style
  3. See also tidy-checks
  4. See also thread-comments