PropertyDamage.Suggestions.Patterns (PropertyDamage v0.2.0)

View Source

Pattern detection for property and invariant suggestions.

Identifies common patterns in events and commands that typically require specific invariant checks.

Summary

Functions

Detects patterns in event struct fields.

Detects patterns across multiple event modules.

Returns the pattern type for a field.

Identifies fields that appear across multiple events (cross-event fields).

Analyzes a field and returns suggested check types.

Types

pattern()

@type pattern() :: %{
  type: atom(),
  field: atom(),
  event: module() | nil,
  command: module() | nil,
  value_type: atom(),
  confidence: float()
}

Functions

detect_patterns(event_module)

@spec detect_patterns(module()) :: [pattern()]

Detects patterns in event struct fields.

Returns a list of detected patterns with their types and confidence levels.

detect_patterns_multi(event_modules)

@spec detect_patterns_multi([module()]) :: [pattern()]

Detects patterns across multiple event modules.

field_pattern_type(field)

@spec field_pattern_type(atom()) :: atom() | nil

Returns the pattern type for a field.

find_cross_event_fields(event_modules)

@spec find_cross_event_fields([module()]) :: [{atom(), [module()]}]

Identifies fields that appear across multiple events (cross-event fields).

These are prime candidates for consistency checks.

suggest_checks_for_field(field, opts \\ [])

@spec suggest_checks_for_field(
  atom(),
  keyword()
) :: [atom()]

Analyzes a field and returns suggested check types.