Modül 4 · Code Security (CodeQL) · ⏱ 12 dakika

Default setup vs advanced setup

Default setup vs advanced setup

Bu derste neler öğreneceksin

  • Default setup ile advanced setup arasındaki temel farkları bilmek
  • Her kurulum modunun hangi senaryoya uygun olduğunu kavramak
  • Default setup'ın otomatik yapılandırdığı unsurları anlamak
  • Advanced setup için workflow.yml gereksinimlerini öğrenmek

Default setup nedir?

Default setup, GitHub’ın CodeQL’i otomatik yapılandırdığı moddur. Hiçbir YAML dosyası yazman gerekmez; GitHub dil tespiti, sorgu suite seçimi ve tarama zamanlamasını kendi yönetir.

Repo → Security → Code scanning → Set up → Default

GitHub otomatik:
  ✓ Dil tespiti (repo içeriğine göre)
  ✓ Query suite seçimi (security varsayılan)
  ✓ Tarama tetikleyicisi (push + PR + haftalık)
  ✓ Sorgu sürümü güncellemesi (otomatik)

Advanced setup nedir?

Advanced setup, CodeQL workflow’unu kendi YAML dosyan ile kontrol ettiğin moddur. .github/workflows/codeql.yml dosyasına yazılır.

name: CodeQL
on:
  push:
    branches: [main]
  pull_request:
    branches: [main]
  schedule:
    - cron: '0 6 * * 1'

jobs:
  analyze:
    runs-on: ubuntu-latest
    permissions:
      security-events: write
      contents: read
    strategy:
      matrix:
        language: [javascript, python]
    steps:
      - uses: actions/checkout@v4
      - uses: github/codeql-action/init@v3
        with:
          languages: ${{ matrix.language }}
          queries: security-extended
      - uses: github/codeql-action/autobuild@v3
      - uses: github/codeql-action/analyze@v3

Karşılaştırma tablosu

ÖzellikDefault setupAdvanced setup
YAML yazma gerekli
Dil tespiti otomatikManuel belirtilir
Custom query desteği
Build süreci kontrolü
Query suite seçimiSınırlıTam
Self-hosted runner
Kurulum süresiDakikalarDaha uzun
Sorgu güncellemesiOtomatikManuel yönetilir

Hangi durumda hangisini kullan?

Default setup tercih et:

  • Hızlı başlangıç, minimum yapılandırma
  • Standart sorgular yeterli
  • Küçük-orta takım, özel ihtiyaç yok
  • Derlenmeyen diller (JavaScript, Python, Ruby)

Advanced setup tercih et:

  • Custom queries veya custom query suite
  • Derleme gerektiren diller (C/C++, Java) ve karmaşık build süreci
  • Self-hosted runner kullanımı
  • Organizasyona özgü tarama zamanlaması
  • Sorgu sürümünü kendin kontrol etmek istiyorsun

Geçiş: default → advanced

Default setup aktifken advanced’e geçiş:

Repo → Security → Code scanning → CodeQL → Switch to advanced

Bu işlem mevcut .github/workflows/codeql.yml dosyasını oluşturur (varsa üzerine yazar).

Sınavda tuzak

“Organizasyonumuzda tüm repolara CodeQL kurmak istiyoruz, minimum iş yüküyle.”

Cevap: Default setup + organization genelinde etkinleştirme.

“Security-extended sorgu suite kullanmak ve custom query eklemek istiyoruz.”

Cevap: Advanced setup gerekir.

Sırada ne var?

Advanced setup’ta workflow özelleştirme — tarama tetikleyicileri, dil matrisi ve build adımları.