diff --git a/.github/workflows/guidelines.yaml b/.github/workflows/guidelines.yaml new file mode 100644 index 0000000..d6f0bf4 --- /dev/null +++ b/.github/workflows/guidelines.yaml @@ -0,0 +1,53 @@ +name: Code Check + +on: + push: + branches: ['main'] + pull_request: + branches: ['main', 'format_tooling'] + +jobs: + validate-format: + runs-on: ubuntu-22.04 + + steps: + - uses: actions/checkout@v3 + + - name: Run clang-format style check + uses: jidicula/clang-format-action@v4.11.0 + with: + clang-format-version: '16' + check-path: '.' + + static-analysis: + runs-on: ubuntu-22.04 + + # might be enabled in the future: + # https://github.com/marketplace/actions/clang-tidy-review + + steps: + - uses: actions/checkout@v3 + + - name: Fetch & install RISC-V GNU Compiler Toolchain + run: | + curl -Lo riscv32-elf-ubuntu-22.04-nightly.tar.gz 'https://github.com/riscv-collab/riscv-gnu-toolchain/releases/download/2023.06.09/riscv32-elf-ubuntu-22.04-nightly-2023.06.09-nightly.tar.gz' + tar -xf riscv32-elf-ubuntu-22.04-nightly.tar.gz + echo "${PWD}/riscv/bin" >> $GITHUB_PATH + + - name: Configure CMake + run: cmake -B "${{github.workspace}}/build" -DCMAKE_BUILD_TYPE=Debug + + - name: Run clang-tidy + id: linter + uses: cpp-linter/cpp-linter-action@v2 + with: + style: 'file' + version: '16' + thread-comments: false # do not post review summary + file-annotations: false # disable review comments + lines-changed-only: false # scan everything + database: '${{github.workspace}}/build' + + - name: Analysis failed + if: steps.linter.outputs.checks-failed > 0 + run: exit 1