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.
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 }}
with:
style: 'file' # Use .clang-format config file
tidy-checks: '' # Use .clang-tidy config file
# only 'update' a single comment in a pull request thread.
thread-comments: ${{ github.event_name == 'pull_request' && 'update' }}
- name: Fail fast?!
if: steps.linter.outputs.checks-failed > 0
run: exit 1
For all explanations of our available input parameters and output variables, see our Inputs and Outputs document.
See also our example recipes.
Using file-annotations
:
Using thread-comments
:
Using step-summary
:
Using tidy-review
:
Using format-review
:
You can show C/C++ Linter Action status with a badge in your repository README
Example
[![cpp-linter](https://github.com/cpp-linter/cpp-linter-action/actions/workflows/cpp-linter.yml/badge.svg)](https://github.com/cpp-linter/cpp-linter-action/actions/workflows/cpp-linter.yml)
To provide feedback (requesting a feature or reporting a bug) please post to issues.
The scripts and documentation in this project are released under the MIT License