| name: "Code lint" |
| |
| permissions: |
| contents: read |
| |
| on: |
| pull_request: |
| branches: |
| - main |
| - 'users/**' |
| paths: |
| - 'clang-tools-extra/clang-tidy/**' |
| - 'clang-tools-extra/docs/clang-tidy/**' |
| - '.github/workflows/pr-code-lint.yml' |
| |
| 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-lint' |
| timeout-minutes: 60 |
| concurrency: |
| group: ${{ github.workflow }}-${{ github.ref }} |
| cancel-in-progress: true |
| steps: |
| - name: Fetch LLVM sources |
| uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 |
| with: |
| fetch-depth: 2 |
| |
| - name: Get changed files |
| id: changed-files |
| uses: tj-actions/changed-files@e0021407031f5be11a464abee9a0776171c79891 # v47.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" |
| |
| # 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 linters |
| env: |
| GITHUB_PR_NUMBER: ${{ github.event.pull_request.number }} |
| CHANGED_FILES: ${{ steps.changed-files.outputs.all_changed_files }} |
| run: | |
| echo "[]" > comments && |
| python3 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@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 |
| if: always() |
| with: |
| name: workflow-args |
| path: | |
| comments |