Skip to content

feat: v0.12.1 analyzer features (#93-#98)#99

Merged
lessthanseventy merged 9 commits into
mainfrom
v0.12.1-analyzer-features
Mar 26, 2026
Merged

feat: v0.12.1 analyzer features (#93-#98)#99
lessthanseventy merged 9 commits into
mainfrom
v0.12.1-analyzer-features

Conversation

@lessthanseventy
Copy link
Copy Markdown
Owner

Summary

Closes #93, closes #94, closes #95, closes #96, closes #97, closes #98

What changed

Enrichers

Enricher Replaces Output fields
assign_sizes memory assign_sizes, total_memory, largest_assign
ecto_queries ecto_queries, ecto_query_count, ecto_total_query_ms
push_events push_events, push_event_count

Analyzers

Analyzer Default Issue Detection
assign_diff yes #93 Large assigns (>5KB) re-diffed in >50% of events
ecto_query_analysis yes #95 N+1 patterns, excessive queries, slow queries
component_rerender opt-in #96 Stable components re-rendering without input changes
message_flooding yes #97 >10 same handle_info events in 200ms window
push_event_volume opt-in #98 >5 push_events from single handler

Breaking changes

  • memory_size enrichment field → total_memory
  • n_plus_one analyzer → ecto_query_analysis
  • :memory enricher name → :assign_sizes

Test plan

  • 580 tests, 0 failures
  • mix credo — no issues
  • mix format — clean
  • Manual: mix excessibility.debug with new --analyze= flags
  • Manual: --profile=memory and --profile=performance with new analyzer sets

🤖 Generated with Claude Code

lessthanseventy and others added 7 commits March 25, 2026 22:00
Covers GitHub issues #93-#98: new enrichers (assign_sizes,
ecto_queries, push_events), new analyzers (assign_diff,
ecto_query_analysis, component_rerender, message_flooding,
push_event_volume), and enhancements to data_growth.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Covers all 6 GitHub issues (#93-#98): 3 new enrichers, 5 new/enhanced
analyzers, profile updates, and version bump. TDD throughout.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Tracks per-assign byte sizes instead of just total memory.
Enables the upcoming assign_diff analyzer to detect large
assigns being re-diffed frequently.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Replaces all memory_size references with total_memory to match
the new assign_sizes enricher output.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
New enrichers:
- assign_sizes: per-assign byte tracking (replaces memory enricher)
- ecto_queries: Ecto telemetry integration with Agent-based store
- push_events: push_event tracking via telemetry handler

New analyzers:
- assign_diff: detects large assigns re-diffed frequently (#93)
- ecto_query_analysis: full query analysis with N+1 detection (#95)
- component_rerender: detects unnecessary component re-renders (#96)
- message_flooding: detects high-frequency handle_info patterns (#97)
- push_event_volume: detects excessive push_event calls (#98)

Enhanced:
- data_growth: suggests temporary_assigns/Streams for growing lists (#94)

Replaced:
- memory enricher → assign_sizes (total_memory replaces memory_size)
- n_plus_one analyzer → ecto_query_analysis

Updated profiles, tests, and all stale references across codebase.
580 tests, 0 failures.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Documents new analyzers (#93-#98) and enrichers in CLAUDE.md.
Updates enrichment fields: assign_sizes/total_memory replaces
memory_size, adds ecto_queries and push_events enrichments.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@lessthanseventy lessthanseventy force-pushed the v0.12.1-analyzer-features branch from 9802deb to 43954b6 Compare March 26, 2026 05:46
- assign_diff: extract build_assign_finding to reduce nesting depth
- push_event_volume: extract build_push_finding to reduce nesting depth
- component_rerender: merge chained Enum.filter into single filter

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

fix: formatting
@lessthanseventy lessthanseventy force-pushed the v0.12.1-analyzer-features branch from 43954b6 to 5bcfb3f Compare March 26, 2026 05:46
The _build cache was keyed only on mix.lock, so deleted modules
(memory.ex, n_plus_one.ex) had stale .beam files persisting across
builds. Adding lib/**/*.ex hash ensures cache busts when source
files are added or removed.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@lessthanseventy lessthanseventy merged commit 9e7242c into main Mar 26, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

1 participant