Skip to content

Add static analysis using fortitude, clang, and ruff #13

Add static analysis using fortitude, clang, and ruff

Add static analysis using fortitude, clang, and ruff #13

Workflow file for this run

# 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
ls ${BUILD_DIR}
less ${BUILD_DIR}/compile_commands.json
deactivate
- uses: cpp-linter/cpp-linter-action@v2
id: linter
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
style: 'file' # Use .clang-format config file
repo-root: ${{ github.workspace }}
database: ${{ github.workspace }}/src/build # Use the compile_commands.json from CMake to locate headers
tidy-checks: '' # Use .clang-tidy config file
# 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