UNPKG

pi-lens

Version:

Real-time code feedback for pi — LSP, linters, formatters, type-checking, structural analysis & booboo

51 lines (40 loc) • 1.11 kB
# Ruby Open Struct # Detects OpenStruct usage (performance and debugging issues) id: ruby-open-struct name: OpenStruct Usage severity: warning category: best-practices defect_class: safety inline_tier: warning language: ruby message: "OpenStruct is slow and makes debugging hard — use a plain class or Struct" description: | OpenStruct is convenient but has poor performance and hides method definitions from static analysis. Prefer Struct or plain classes. ✅ FIX: Use Struct.new or a plain class with attr_accessor. query: | (call_expression receiver: (constant) @RECV (#eq? @RECV "OpenStruct") method: (identifier) @METHOD (#eq? @METHOD "new")) metavars: - RECV - METHOD has_fix: false tags: - ruby - performance - maintainability examples: bad: | person = OpenStruct.new(name: "Ada", age: 30) person.name # Slow, hidden method definition good: | Person = Struct.new(:name, :age) person = Person.new("Ada", 30) person.name # Fast, explicit method # Or plain class class Person attr_accessor :name, :age end