Skip to main content

Overview

The CodeQL package provides fully autonomous security analysis using GitHub’s CodeQL engine. It automatically detects languages, builds systems, creates cached databases, and executes security queries with zero configuration required.

Purpose

Automate CodeQL security analysis with:
  • Auto-detection: Languages, build systems, and configurations
  • Database caching: SHA256-based reuse for unchanged repos
  • Parallel execution: Multi-language analysis runs concurrently
  • 10 languages supported: Java, Python, JavaScript, Go, C/C++, C#, Ruby, Swift, Kotlin
  • SARIF output: Standardized vulnerability format

Architecture

Quick Start

Fully Autonomous

What happens automatically:
  1. ✓ Detects languages (Java, Python, JavaScript, etc.)
  2. ✓ Detects build systems (Maven, npm, go modules, etc.)
  3. ✓ Generates build commands
  4. ✓ Creates CodeQL databases (cached)
  5. ✓ Runs security-and-quality suites
  6. ✓ Generates SARIF output

Specify Languages

Custom Build Command

Python API

CodeQL Agent

Language Detection

Build System Detection

Database Manager

Query Runner

Core Classes

CodeQLAgent

Main orchestrator for autonomous CodeQL workflow.

LanguageDetector

Confidence-based language detection.

BuildDetector

Auto-detect build systems and generate commands.

DatabaseManager

Manage database lifecycle with caching.

QueryRunner

Execute CodeQL queries and generate SARIF.

Supported Languages

Configuration

Environment Variables

RaptorConfig Settings

In core/config.py:

Output Structure

Workflow Report

Performance

Database Creation

  • Small repo (<1K files): 2-5 minutes
  • Medium repo (1K-10K files): 5-15 minutes
  • Large repo (10K+ files): 15-30 minutes

Query Execution

  • Security suite: 2-10 minutes per language
  • Extended suite: 5-20 minutes per language

Caching Benefits

  • Repeat analysis: <1 second (database reuse)
  • Cache hit rate: ~80% for active development

Best Practices

  1. Let auto-detection work - specify languages only if needed
  2. Use database caching - massive speedup for repeat analysis
  3. Parallel databases - analyze multi-language repos faster
  4. Custom build commands - for complex build systems
  5. Extended suites - use for comprehensive security audits