2.4 KiB
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 theGODOT_BINenvironment 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.