feat: v0.12.1 analyzer features (#93-#98)#99
Merged
Conversation
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>
9802deb to
43954b6
Compare
- 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
43954b6 to
5bcfb3f
Compare
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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
assign_sizes(replacesmemory),ecto_queries(Ecto telemetry integration),push_events(push_event tracking)assign_diff(feat: detect large assign payloads being re-diffed over the wire #93),ecto_query_analysisreplacingn_plus_one(feat: detect N+1 query patterns per LiveView event #95),component_rerender(feat: detect unnecessary component re-render cascades #96),message_flooding(feat: detect handle_info message flooding #97),push_event_volume(feat: detect excessive push_event volume to JS hooks #98)data_growthnow suggeststemporary_assigns/Streams for growing lists (feat: suggest temporary_assigns or Streams for growing list assigns #94)Closes #93, closes #94, closes #95, closes #96, closes #97, closes #98
What changed
Enrichers
assign_sizesmemoryassign_sizes,total_memory,largest_assignecto_queriesecto_queries,ecto_query_count,ecto_total_query_mspush_eventspush_events,push_event_countAnalyzers
assign_diffecto_query_analysiscomponent_rerendermessage_floodingpush_event_volumeBreaking changes
memory_sizeenrichment field →total_memoryn_plus_oneanalyzer →ecto_query_analysis:memoryenricher name →:assign_sizesTest plan
mix credo— no issuesmix format— cleanmix excessibility.debugwith new--analyze=flags--profile=memoryand--profile=performancewith new analyzer sets🤖 Generated with Claude Code