[TEST] Add clang tidy premerge CI [WIP] #50
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: "Check code formatting" | |
permissions: | |
contents: read | |
on: | |
pull_request: | |
branches: | |
- main | |
- 'users/**' | |
paths: | |
- 'clang-tools-extra/clang-tidy/**' | |
jobs: | |
code_linter: | |
if: github.repository_owner == 'llvm' | |
runs-on: ubuntu-24.04 | |
defaults: | |
run: | |
shell: bash | |
container: | |
image: 'ghcr.io/llvm/ci-ubuntu-24.04:latest' | |
timeout-minutes: 60 | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
steps: | |
- name: Fetch LLVM sources | |
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 | |
with: | |
fetch-depth: 2 | |
- name: Get changed files | |
id: changed-files | |
uses: step-security/changed-files@3dbe17c78367e7d60f00d78ae6781a35be47b4a1 # v45.0.1 | |
with: | |
separator: "," | |
skip_initial_fetch: true | |
base_sha: 'HEAD~1' | |
sha: 'HEAD' | |
- name: Listed files | |
env: | |
CHANGED_FILES: ${{ steps.changed-files.outputs.all_changed_files }} | |
run: | | |
echo "Changed files:" | |
echo "$CHANGED_FILES" | |
- name: Fetch code linting utils | |
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | |
with: | |
repository: ${{ github.event.pull_request.head.repo.full_name }} | |
ref: ${{ github.event.pull_request.head.ref }} | |
sparse-checkout: | | |
llvm/utils/git/code-lint-helper.py | |
llvm/utils/git/requirements_linting.txt | |
clang-tools-extra/clang-tidy/tool/clang-tidy-diff.py | |
sparse-checkout-cone-mode: false | |
path: code-lint-tools | |
- name: Install python | |
uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0 | |
with: | |
python-version: '3.12' | |
- name: Install python dependencies | |
run: python3 -m pip install -r code-lint-tools/llvm/utils/git/requirements_linting.txt | |
- name: Install clang-tidy | |
uses: aminya/setup-cpp@17c11551771948abc5752bbf3183482567c7caf0 # v1.1.1 | |
with: | |
clang-tidy: 20.1.8 | |
# FIXME: create special mapping for 'gen' targets, for now build predefined set | |
- name: Configure and CodeGen | |
run: | | |
git config --global --add safe.directory '*' | |
source <(git diff --name-only HEAD~1...HEAD | python3 .ci/compute_projects.py) | |
if [[ "${projects_to_build}" == "" ]]; then | |
echo "No projects to analyze" | |
exit 0 | |
fi | |
cmake -G Ninja \ | |
-B build \ | |
-S llvm \ | |
-DLLVM_ENABLE_ASSERTIONS=OFF \ | |
-DLLVM_ENABLE_PROJECTS="${projects_to_build}" \ | |
-DCMAKE_CXX_COMPILER=clang++ \ | |
-DCMAKE_C_COMPILER=clang \ | |
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON \ | |
-DLLVM_INCLUDE_TESTS=OFF \ | |
-DCLANG_INCLUDE_TESTS=OFF \ | |
-DCMAKE_BUILD_TYPE=Release | |
ninja -C build \ | |
clang-tablegen-targets \ | |
genconfusable # for "ConfusableIdentifierCheck.h" | |
- name: Run code linter | |
env: | |
GITHUB_PR_NUMBER: ${{ github.event.pull_request.number }} | |
CHANGED_FILES: ${{ steps.changed-files.outputs.all_changed_files }} | |
run: | | |
echo "[]" > comments && | |
python3 ./code-lint-tools/llvm/utils/git/code-lint-helper.py \ | |
--token ${{ secrets.GITHUB_TOKEN }} \ | |
--issue-number $GITHUB_PR_NUMBER \ | |
--start-rev HEAD~1 \ | |
--end-rev HEAD \ | |
--verbose \ | |
--changed-files "$CHANGED_FILES" | |
- name: Upload results | |
uses: actions/upload-artifact@26f96dfa697d77e81fd5907df203aa23a56210a8 #v4.3.0 | |
if: always() | |
with: | |
name: workflow-args | |
path: | | |
comments |