# This workflow uses actions that are not certified by GitHub.
# They are provided by a third-party and are governed by
# separate terms of service, privacy policy, and support
# documentation.
#
# Find more information at:
# https://github.com/microsoft/msvc-code-analysis-action

name: Development Microsoft C++ Code Analysis

on:
  push:
    branches: [ 'dev_checks' ]
  #  branches: [ 'master', 'main', 'develop', 'dev_checks' ]
  #  tags: [ 'v*' ]
  #pull_request:
  #  branches: [ 'master', 'main', 'develop' ]
  schedule:
    - cron: '15 8 * * 0,4' # Run twice a week
  workflow_dispatch:

permissions:
  contents: read

env:
  # Path to the CMake build directory.
  build: '${{ github.workspace }}/build'
  config: 'Release'

jobs:
  analyze:
    permissions:
      contents: read # for actions/checkout to fetch code
      security-events: write # for github/codeql-action/upload-sarif to upload SARIF results
      actions: read # only required for a private repository by github/codeql-action/upload-sarif to get the Action run status
    name: Analyze
    runs-on: windows-latest

    steps:
      - name: Checkout repository
        uses: actions/checkout@v3
        with:
          submodules: recursive

      - name: Configure CMake
        run: cmake 
               -DCOOLPROP_MY_MAIN=dev/ci/main.cpp
               -B ${{github.workspace}}/build 
               -S . 

      # Build is not required unless generated source files are used
      # For CoolProp: Needed to build dynamic fluids JSON header
      - name: Build CMake
        run: cmake 
               --build ${{github.workspace}}/build 
               --config Release

      - name: Initialize MSVC Code Analysis
        uses: microsoft/msvc-code-analysis-action@v0.0.1
        # Provide a unique ID to access the sarif output path
        id: run-analysis
        with:
          cmakeBuildDirectory: ${{github.workspace}}/build
          # Ruleset file that will determine what checks will be run
          ruleset: NativeRecommendedRules.ruleset


      # Upload SARIF file to GitHub Code Scanning Alerts
      # NOTE: Too many runs (47 cpp files) to upload to Github (LIMIT = 20)
      #       Commenting and uploading as an artifact below for download
      #       and viewing off-line.
      # - name: Upload SARIF to GitHub
      #   uses: github/codeql-action/upload-sarif@v3
      #   with:
      #     sarif_file: ${{ steps.run-analysis.outputs.sarif }}

      # Upload SARIF file as an Artifact to download and view
      - name: Upload SARIF as an Artifact
        uses: actions/upload-artifact@v4
        with:
          name: sarif-file
          path: ${{ steps.run-analysis.outputs.sarif }}
