UI Linter

Halo Studios · Halo: Campaign Evolved · Internal Unreal plugin · 2025

UI Linter Message Log output showing dozens of rule findings across widget tree and event graph rules, with clickable Fix suggestions.

A three-pillar static analyzer for Unreal Widget Blueprints, 22 deterministic rules mined from real Jira patterns, surfacing findings inline in the Editor and via CLI.

Technical deep-dive. How the tool was built, why the three pillars (Knowledge Base, Checklist Generator, Deterministic Linter), and what changed in team practice after adoption: UI Linter, Widget Blueprint Static Analysis →

Role
Designer, engineer, owner (solo build, AI-assisted)
Team
Halo Studios · UI
Technical Stack
Unreal Engine · C++ plugin · Python · pytest · Copilot CLI
Released
2025 · Internal Halo Studios tool
What it does
  • Runs a deterministic pass over any Widget Blueprint, 14 widget-tree rules (L001–L014) and 8 event-graph rules (L020–L027).
  • Surfaces findings inline in the Editor's Message Log with clickable navigation to the offending widget or Blueprint node.
  • Offers one-click Fix actions for common issues (uncategorized variables, unused declarations, dead handlers).
  • Ships an identical CLI for pre-merge validation and Copilot-driven review.
  • "Add New Rule" launches Copilot CLI with the active widget as context to draft a new rule from a real example.
Impact
  • ~34 layout bugs prevented in the first two months post-adoption.
  • Adopted team-wide as the pre-merge validation gate; pull requests started including linter output as an evidence artifact.
  • Rules are grounded in a Jira mining pass over 100+ real bugs, distilled into 17 pattern DNAs across 6 categories.
  • Continuously extended over months, contribution barrier kept low because rules ship as JSON, not builds.