Files

2.4 KiB

Local Quality Gate

A single command to detect broken GDScript, formatting issues, lint problems, parser errors, and LLM-generated garbage before committing.

Requirements

  • Python 3 with gdtoolkit (gdscript-toolkit):
    pip install gdtoolkit
    
  • Godot 4 binary on PATH, or set the GODOT_BIN environment variable

Usage

Full project check

# Linux / macOS / Git Bash
./tools/quality.sh

# Windows PowerShell
& ./tools/quality.ps1

Fast changed-files mode

Only runs gdformat / gdlint on .gd files modified since the last commit. The Godot dependency check and all project scenarios still run.

./tools/quality.sh --changed
& ./tools/quality.ps1 -Changed

Auto-format (not part of the gate)

./tools/fix_format.sh

What it checks

Check Tool What it detects
gdformat Game-owned GDScript roots Formatting without rewriting addons or demos
gdlint Game-owned GDScript roots Lint violations such as unused arguments and naming
godot-check Headless definitions scenario Parser errors and missing dependencies
scenarios Every tests/*_test.gd script Simulation, persistence, navigation, and presentation regressions
gut godot -s gut_cmdln.gd Failing GUT unit tests (only if addon exists)

Output

If everything passes:

QUALITY RESULT: PASS

  gdformat     PASS
  gdlint       PASS
  godot-check  PASS
  scenarios    PASS
  gut          SKIPPED

Full logs:
  logs/quality/latest/

On failure, only relevant errors and fix suggestions are shown:

QUALITY RESULT: FAIL

  gdformat     FAIL
  gdlint       FAIL
  godot-check  PASS
  scenarios    PASS
  gut          SKIPPED

    res://simulation/SimNPC.gd:42 Unused argument 'delta'
    res://simulation/task_manager.gd:88 Line too long (120 > 100)

  NEXT FIX:
    1. Fix unused-argument in SimNPC.gd
    2. Run gdformat to auto-format files

Full logs:
  logs/quality/latest/

Full logs are always written to logs/quality/latest/ and never dumped to the terminal.

Environment variables

Variable Description
GODOT_BIN Path to the Godot executable (auto-detected from PATH if unset)

CI setup

To add this to CI, install the dependencies and run:

pip install gdtoolkit
./tools/quality.sh

The script exits non-zero on any failure, so it will fail the CI step.