DEV Community

Xianpeng Shen
Xianpeng Shen

Posted on • Edited on

C/C++ Lint Action | clang-format & clang-tidy

My Workflow

A Github Action for linting C/C++ code integrating clang-tidy and clang-format to collect feedback provided in the form of thread comments and/or annotations.

Submission Category:

Maintainer Must-Haves

Yaml File or Link to Code

GitHub logo cpp-linter / cpp-linter-action

A Github Action for linting C/C++ code integrating clang-tidy and clang-format to collect feedback provided in the form of file-annotations, thread-comments, workflow step-summary, and Pull Request reviews.

C/C++ Linter Action | clang-format & clang-tidy

GitHub release (latest SemVer) Used by GitHub marketplace cpp-linter MkDocs Deploy GitHub

A Github Action for linting C/C++ code integrating clang-tidy and clang-format to collect feedback provided in the form of file-annotations, thread-comments workflow step-summary, and Pull Request reviews (with tidy-review or format-review).

Warning

We only support Linux runners using a Debian-based Linux OS (like Ubuntu and many others).

MacOS and Windows runners are supported as well.

Usage

Note

Python 3.10 needs to be installed in the docker image if your workflow is running jobs in a container (see discussion in #185). Our intention is to synchronize with the default Python version included with Ubuntu's latest LTS releases.

Create a new GitHub Actions workflow in your project, e.g. at .github/workflows/cpp-linter.yml

The content of the file should be in the following format.

    steps
      - uses: actions/checkout@v4
      - uses: cpp-linter/cpp-linter-action@v2
        id: linter
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN
Enter fullscreen mode Exit fullscreen mode

cpp-linter.yml

name: cpp-linter

on:
  pull_request:
    types: [opened, reopened]  # let PR-synchronize events be handled by push events
  push:

jobs:
  cpp-linter:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: cpp-linter/cpp-linter-action@v2
        id: linter
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          style: file

      - name: Fail fast?!
        if: steps.linter.outputs.checks-failed > 0
        run: |
          echo "Some files failed the linting checks!"
        # for actual deployment
        # run: exit 1
Enter fullscreen mode Exit fullscreen mode

Additional Resources / Info

https://cpp-linter.github.io/cpp-linter-action/

Example

Annotations

annotations-clang-format

annotations-clang-tidy

Thread Comment

Thread Comment

Top comments (0)