LINQ scan

Find slow-query and footgun patterns across your EF Core project sources before they reach production.

Modes

ModeWhat it does
:scan lite / efvibe scan liteStatic Roslyn heuristics on EF-related .cs files
:scan deep / efvibe scan deepLite + 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.

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.

Deep scan review
Deep scan — translated SQL and query plan per finding

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).