LINQ scan
Find slow-query and footgun patterns across your EF Core project sources before they reach production.
Modes
| Mode | What it does |
|---|---|
:scan lite / efvibe scan lite | Static Roslyn heuristics on EF-related .cs files |
:scan deep / efvibe scan deep | Lite + ToQueryString() + live EXPLAIN per call site |
Headless CI
efvibe scan lite \
-p src/MyApp.Persistence/MyApp.Persistence.csproj \
-s src/MyApp.Api/MyApp.Api.csproj \
-c AppDbContext \
--json \
--fail-on warning
Severity & gates
Severities: info, warning, error, critical.
--fail-on <level>— exit1when a finding meets that level--min-severity— filter reported findings--respect-dismissals— skip dismissed findings (from REPL or JSON store)
Deep scan probes
Deep scan runs live probes per call site. In 0.6.x, aggregate terminals (Count(), CountAsync,
Any(), Sum(), …) — including inside anonymous projection objects — translate to correct SQL
instead of failing or returning misleading plans.
Editor review
VS Code and Rider open a Scan Review carousel after deep scan: Previous/Next, Dismiss, Note, and jump to source.
Same session artifacts as the REPL (myefvibe-scan-deep.json, dismissals, notes).
Review queue (REPL)
After a scan, step through findings with :next / :prev, :dismiss, :note, :repeat, :end.
Rule reference
Full rule catalog: linq-scan-rules.md on GitHub.
Example rule ids: n-plus-one, client-eval, missing-take, cartesian-include, query-site (deep).