From 2fe6fa399160ef9b3be395a0d8858c0e416b5e58 Mon Sep 17 00:00:00 2001 From: jatkinson1000 Date: Mon, 11 Nov 2024 08:37:59 +0000 Subject: [PATCH] Add a C and C++ linting workflow using clang. --- .github/workflows/cpp-linter.yml | 65 ++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 .github/workflows/cpp-linter.yml diff --git a/.github/workflows/cpp-linter.yml b/.github/workflows/cpp-linter.yml new file mode 100644 index 0000000..7f36ee9 --- /dev/null +++ b/.github/workflows/cpp-linter.yml @@ -0,0 +1,65 @@ +# workflow to run static-analysis and linting checks on C/C++ files + +name: ClangLint + +# Controls when the workflow will run +on: + # Triggers the workflow on pushes to the "main" branch and any pull request events + push: + branches: [ "main"] + pull_request: + + # Allows you to run this workflow manually from the Actions tab + workflow_dispatch: + +# Workflow run - one or more jobs that can run sequentially or in parallel +jobs: + # This workflow contains a single job called "test-suite" + C-Cpp-lint: + # The type of runner that the job will run on + runs-on: ubuntu-latest + strategy: + fail-fast: false + + # Steps represent a sequence of tasks that will be executed as part of the job + steps: + - uses: actions/checkout@v4 + + - name: Install Python + uses: actions/setup-python@v5 + with: + python-version: '3.x' + + - name: Install Dependencies + run: | + python -m pip install --upgrade pip + python -m venv ftorch + . ftorch/bin/activate + pip install torch torchvision --index-url https://download.pytorch.org/whl/cpu + pip install fortitude-lint + + - name: FTorch CMake + run: | + . ftorch/bin/activate + export FT_DIR=$(pwd) + VN=$(python -c "import sys; print('.'.join(sys.version.split('.')[:2]))") + export Torch_DIR=${VIRTUAL_ENV}/lib/python${VN}/site-packages + export BUILD_DIR=$(pwd)/src/build + mkdir ${BUILD_DIR} + cd ${BUILD_DIR} + cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=${BUILD_DIR} -DCMAKE_Fortran_FLAGS="-std=f2008" -DCMAKE_EXPORT_COMPILE_COMMANDS=ON + + - uses: cpp-linter/cpp-linter-action@v2 + id: linter + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + style: 'file' # Use .clang-format config file + tidy-checks: '' # Use .clang-tidy config file + database: $BUILD_DIR + # only 'update' a single comment in a pull request thread. + thread-comments: ${{ github.event_name == 'pull_request' && 'update' }} + + - name: Fail fast?! + if: steps.linter.outputs.checks-failed > 0 + run: exit 1