name: CodeQL

on:
  push:
    branches: [ master ]
  pull_request:
    branches: [ master ]
  schedule:
    - cron: '43 15 * * 3'

jobs:
  analyze:
    name: Analyze
    runs-on: ubuntu-latest
    permissions:
      actions: read
      contents: read
      security-events: write

    strategy:
      fail-fast: false
      matrix:
        include:
        - language: c
          build-mode: manual
        - language: java
          build-mode: manual
        - language: python
          build-mode: none

    steps:
    - name: Checkout repository
      uses: actions/checkout@v6

    - name: Setup java
      uses: actions/setup-java@v5
      with:
        distribution: 'temurin'
        java-version: '25'

    - name: Initialize CodeQL
      uses: github/codeql-action/init@v4
      with:
        languages: ${{ matrix.language }}
        build-mode: ${{ matrix.build-mode }}

    - if: matrix.language == 'c'
      name: Build c
      run: |
        sudo apt-get -y update || true
        for a in libssl-dev dpdk-dev libpcap-dev libbpf-dev libxdp-dev liburing-dev libmnl-dev ; do
          sudo apt-get -y install $a || true
          done
        clang --version
        gcc --version
        cd misc/native
        ./c.sh

    - if: matrix.language == 'java'
      name: Build java
      run: |
        javac --version
        java --version
        cd src
        ./d.sh
        ./cj.sh
        ./cp.sh

    - name: Perform CodeQL Analysis
      uses: github/codeql-action/analyze@v4
      with:
        category: "/language:${{matrix.language}}"
