# 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.
# lintr provides static code analysis for R.
# It checks for adherence to a given style,
# identifying syntax errors and possible semantic issues,
# then reports them to you so you can take action.
# More details at https://lintr.r-lib.org/

name: lintr

on:
  push:
    branches:
      - main
      - master
  workflow_dispatch:
  pull_request:
    # The branches below must be a subset of the branches above
    branches:
      - main
      - master
  schedule:
    - cron: '31 18 * * 2'

permissions:
  contents: read

jobs:
  lintr:
    name: Run lintr scanning
    runs-on: ubuntu-latest
    permissions:
      contents: read # for 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

    steps:
      - name: Checkout code
        uses: actions/checkout@v4

      - name: Setup R
        uses: r-lib/actions/setup-r@v2
        with:
          use-public-rspm: true

      - name: Setup lintr
        uses: r-lib/actions/setup-r-dependencies@v2
        with:
          extra-packages: |
            local::.
            any::lintr

      - name: Run lintr
        run: |
          # Lintr package
          out <- lintr::lint_package()
          # Create SARIF report
          lintr::sarif_output(out, "lintr-results.sarif")
          # Display
          out
        shell: Rscript {0}
        continue-on-error: true

      - name: Upload analysis results to GitHub
        uses: github/codeql-action/upload-sarif@v3
        with:
          sarif_file: lintr-results.sarif
          wait-for-processing: true

