vtcode 0.123.10

A Rust-based terminal coding agent with modular architecture supporting multiple LLM providers
id: prefer-nullish-coalescing
language: typescript
severity: hint
message: Use `??` instead of `||` when the intent is to coalesce null/undefined.
note: |
  `||` treats falsy values (0, "", false, null, undefined) as fallback
  triggers. `??` only falls through on null and undefined, which is
  usually the intended behavior. This rule flags `||` when the left-hand
  side is a simple identifier or member expression (to reduce false
  positives on boolean logic).
rule:
  pattern: $A || $B
  any:
    - inside:
        kind: variable_declarator
        stopBy: end
    - inside:
        kind: assignment_expression
        stopBy: end
    - inside:
        kind: return_statement
        stopBy: end
    - inside:
        kind: ternary_expression
        stopBy: end
constraints:
  A:
    any:
      - kind: identifier
      - kind: member_expression
      - kind: call_expression
      - kind: subscript_expression
metadata:
  url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Nullish_coalescing
files:
  - "**/*.ts"
  - "**/*.tsx"
  - "!node_modules/**"