name: Code quality analysis

on:
  push:
    branches:
      - main
      - renovate/**
  schedule:
    - cron: '31 7 * * 3'
  workflow_dispatch:

concurrency:
  group: ${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: true

permissions:
  contents: read
  security-events: write

jobs:
  codeql:
    name: CodeQL
    runs-on: macos-14
    steps:
    - name: Setup build environment
      uses: msfjarvis/compose-lobsters/.github/reusable-workflows/setup-gradle@main
      with:
        fetch-depth: 0
        cache-read-only: true

    - name: Initialize CodeQL
      uses: github/codeql-action/init@c7f9125735019aa87cfc361530512d50ea439c71 # v3.25.1
      with:
        languages: java
        tools: latest
        queries: +security-extended

    - name: Build project
      shell: bash
      run: |
        ./gradlew assembleDebug assembleInternal

    - name: Perform CodeQL Analysis
      uses: github/codeql-action/analyze@c7f9125735019aa87cfc361530512d50ea439c71 # v3.25.1
      with:
        category: "/language:java"
  mobsfscan:
    name: MobSF
    runs-on: ubuntu-latest
    steps:
      - name: Checkout repository
        uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1

      - name: Setup python
        uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5
        with:
          python-version: 3.8

      - name: Run mobsfscan
        uses: MobSF/mobsfscan@35b2016602af9d6ac52f296becca11be3fe004e8
        with:
          args: . --sarif --output results.sarif || true

      - name: Upload mobsfscan report
        uses: github/codeql-action/upload-sarif@c7f9125735019aa87cfc361530512d50ea439c71 # v3.25.1
        with:
          sarif_file: results.sarif
