Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
161 changes: 161 additions & 0 deletions .github/workflows/test-action-pr501-r2.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,161 @@
# Temporary: end-to-end check of cpp-linter/cpp-linter-action#501
# (cpp-linter 1.14.1 -> 1.15.1, clang-tools 1.3.0 -> 2.0.0). Remove after the test.
name: test action#501 (1.15.1 + clang-tools 2.0.0)

on:
# round 2: pull_request only (the push matrix already ran on 2a0076d)
pull_request:
branches: [master]

permissions:
contents: write
pull-requests: write

jobs:
candidate:
name: "candidate ${{ matrix.os }}"
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, ubuntu-24.04-arm, macos-latest, windows-latest, windows-11-arm]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v7
with:
persist-credentials: false
- name: Generate compilation database
run: cmake -Bbuild src
- name: Run cpp-linter-action (cpp-linter 1.15.1, clang-tools 2.0.0)
uses: cpp-linter/cpp-linter-action@fc065f1b186a95c585df750b8007b0fe2f487800
id: linter
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
style: file
version: '20'
ignore: build
database: build
verbosity: debug
extra-args: -std=c++14 -Wall
files-changed-only: ${{ github.event_name == 'pull_request' }}
step-summary: true
file-annotations: true
thread-comments: ${{ matrix.os == 'ubuntu-latest' && 'update' || 'false' }}
tidy-review: ${{ matrix.os == 'ubuntu-latest' && github.event_name == 'pull_request' }}
format-review: ${{ matrix.os == 'ubuntu-latest' && github.event_name == 'pull_request' }}
- name: Outputs
shell: bash
run: |
echo "total: ${{ steps.linter.outputs.checks-failed }}"
echo "clang-format: ${{ steps.linter.outputs.clang-format-checks-failed }}"
echo "clang-tidy: ${{ steps.linter.outputs.clang-tidy-checks-failed }}"
command -v clang-tidy-20 clang-format-20 || true
ls -la ~/.local/share/clang-tools 2>/dev/null || true

baseline:
name: "main ${{ matrix.os }}"
if: github.event_name == 'push'
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, ubuntu-24.04-arm, macos-latest, windows-latest, windows-11-arm]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v7
with:
persist-credentials: false
- name: Generate compilation database
run: cmake -Bbuild src
- name: Run cpp-linter-action at main (cpp-linter 1.14.1, clang-tools 1.3.0)
uses: cpp-linter/cpp-linter-action@f16b974d2b12ac48190748a973e67d50603e9826
id: linter
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
style: file
version: '20'
ignore: build
database: build
verbosity: debug
extra-args: -std=c++14 -Wall
files-changed-only: false
step-summary: true
file-annotations: false
thread-comments: false
- name: Outputs
shell: bash
run: |
echo "total: ${{ steps.linter.outputs.checks-failed }}"
echo "clang-format: ${{ steps.linter.outputs.clang-format-checks-failed }}"
echo "clang-tidy: ${{ steps.linter.outputs.clang-tidy-checks-failed }}"

versions:
# every supported clang version on each OS: clang-tools 2.0.0 installs
# the static binaries (Windows, and wherever the system has no such version)
name: "${{ matrix.ref == 'fc065f1b186a95c585df750b8007b0fe2f487800' && 'candidate' || 'main' }} ${{ matrix.os }} clang ${{ matrix.version }}"
if: github.event_name == 'push'
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
version: ['12', '13', '14', '15', '16', '17', '18', '19', '20', '21', '22', '23']
ref:
- fc065f1b186a95c585df750b8007b0fe2f487800
- f16b974d2b12ac48190748a973e67d50603e9826
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v7
with:
persist-credentials: false
- name: Generate compilation database
run: cmake -Bbuild src
- name: Check out the action
uses: actions/checkout@v7
with:
repository: cpp-linter/cpp-linter-action
ref: ${{ matrix.ref }}
path: action-under-test
persist-credentials: false
- name: Run cpp-linter-action
uses: ./action-under-test
id: linter
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
style: file
version: ${{ matrix.version }}
ignore: build|action-under-test
database: build
extra-args: -std=c++14 -Wall
files-changed-only: false
step-summary: false
file-annotations: false
thread-comments: false
- name: Outputs
shell: bash
run: |
echo "result: total=${{ steps.linter.outputs.checks-failed }} format=${{ steps.linter.outputs.clang-format-checks-failed }} tidy=${{ steps.linter.outputs.clang-tidy-checks-failed }}"

auto-fix:
name: "candidate auto-fix"
if: always() && github.event_name == 'pull_request'
# run after the review job so the pushed fix does not change the PR diff mid-review
needs: candidate
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
with:
ref: ${{ github.head_ref }}
- name: Run cpp-linter-action with auto-fix
uses: cpp-linter/cpp-linter-action@fc065f1b186a95c585df750b8007b0fe2f487800
id: linter
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
style: file
version: '20'
tidy-checks: '-*'
files-changed-only: true
thread-comments: false
step-summary: true
auto-fix: true
17 changes: 16 additions & 1 deletion src/demo.cpp
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
/** This is a very ugly test code (doomed to fail linting) */
#include "demo.hpp"
#include <cstdio>
#include <cstddef>
#include <cstdio>

// using size_t from cstddef
size_t dummyFunc(size_t i) { return i; }

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

clang-tidy diagnostics

Suggested change
size_t dummyFunc(size_t i) { return i; }
static auto dummyFunc(size_t i) -> size_t { return i; }

Expand All @@ -15,3 +15,18 @@ int main()

return 0;
}

// added to test cpp-linter-action#501 (temporary)
int addNumbers(int a, int b)

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

clang-tidy diagnostics

Suggested change
int addNumbers(int a, int b)
static auto addNumbers(int a, int b) -> int

clang-tidy diagnostic

src/demo.cpp:20:20: warning: [readability-identifier-length]

parameter name 'a' is too short, expected at least 3 characters

   20 | int addNumbers(int a, int b)
      |                    ^

clang-tidy diagnostic

src/demo.cpp:20:27: warning: [readability-identifier-length]

parameter name 'b' is too short, expected at least 3 characters

   20 | int addNumbers(int a, int b)
      |                           ^

{
int* unused = NULL;
if (a > b)
Comment on lines +22 to +23

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

clang-tidy diagnostics

Suggested change
int* unused = NULL;
if (a > b)
int* unused = nullptr;
if (a > b) {

return a + b;
return b + a;
}

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

clang-tidy suggestion

Suggested change
}
}


// second round (temporary)
int subtract(int x, int y) { return x - y; }

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

clang-tidy diagnostics

Suggested change
int subtract(int x, int y) { return x - y; }
static auto subtract(int x, int y) -> int { return x - y; }

clang-tidy diagnostic

src/demo.cpp:29:18: warning: [readability-identifier-length]

parameter name 'x' is too short, expected at least 3 characters

   29 | int subtract(int x, int y) { return x - y; }
      |                  ^

clang-tidy diagnostic

src/demo.cpp:29:25: warning: [readability-identifier-length]

parameter name 'y' is too short, expected at least 3 characters

   29 | int subtract(int x, int y) { return x - y; }
      |                         ^


// round 2: badly formatted on purpose (temporary)
int multiply(int x, int y) { return x * y; }