Skip to content
You're viewing an older version of this GitHub Action. Do you want to see the latest version instead?
align-left

GitHub Action

clang-format lint

v0.9 Pre-release

clang-format lint

align-left

clang-format lint

Github Action that check if code is formatted correctly using clang-format

Installation

Copy and paste the following snippet into your .yml file.

              

- name: clang-format lint

uses: DoozyX/[email protected]

Learn more about this action in DoozyX/clang-format-lint-action

Choose a version

clang-format lint action

This action checks if the source code matches the .clang-format file.

Inputs

source

Where the source files are located.
Default: '.' (current folder)
Example: './src' or 'src test examples' for multiple.

exclude

What folder should be excluded from format checking.
Default: 'none'
Example: './third_party' or 'third_party exclude' for multiple.

Multiple exclude rules can also be put in a .clang-format-ignore file, which also supports comments.
Example:

# ignore third_party code from clang-format checks
src/third_party/*
src/ignored/*

extensions

What filename extensions should be used for format checking.
Default: 'c,h,C,H,cpp,hpp,cc,hh,c++,h++,cxx,hxx'
Example: 'cpp,h'

clangFormatVersion

What clang-format version should be used.
Available version are from 5 to 11.
Default: 9
Example: 11

style

Style to use.
Results in the appropriate --style parameter.
Default: file
Example: chromium

Example usage

name: test-clang-format

on: [push]

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v2
    - uses: DoozyX/[email protected]
      with:
        source: '.'
        exclude: './third_party ./external'
        extensions: 'h,cpp'
        clangFormatVersion: 11
        style: chromium

Run locally

Install Docker and then run:

docker build -t clang-format-lint github.com/DoozyX/clang-format-lint-action

When the image is built, run the linting:

docker run -it --rm --workdir /src -v $(pwd):/src clang-format-lint \
    --clang-format-executable /clang-format/clang-format9 -r --exclude .git *.h *.c *.hpp *.cpp