[TEST] Add clang tidy premerge CI [WIP] #67
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 clang-tidy | |
uses: aminya/setup-cpp@17c11551771948abc5752bbf3183482567c7caf0 # v1.1.1 | |
with: | |
clang-tidy: 20.1.8 | |
- name: Setup Python env | |
uses: actions/setup-python@42375524e23c412d93fb67b49958b491fce71c38 # v5.4.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 | |
# TODO: create special mapping for 'codegen' targets, for now build predefined set | |
# TODO: add entrypoint in 'compute_projects.py' that only adds a project and its direct dependencies | |
- name: Configure and CodeGen | |
run: | | |
git config --global --add safe.directory '*' | |
. <(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 |