Case-sensitive email match
Direct equality on Email fails for mixed-case logins. Normalization belongs before query or in DB collation policy.
Before
u.Email == inputSuggested direction
u.Email.ToLower() == input.Trim().ToLowerInvariant()C# teams ship through ASP.NET Core pipelines, EF Core mappings, and async methods that return before work finishes. CodeCritic reviews real diffs with attention to IDisposable patterns, nullable reference types, and middleware ordering that compiles cleanly yet fails under production load.
Review focus
Roslyn analyzers catch many nullability warnings; they rarely explain why a `Task` fire-and-forget loses exceptions or why a scoped service leaked into a singleton. The model targets those runtime gaps.
AI review does not replace threat modeling, Azure policy review, or regulated-data sign-off. Use it as a fast second pass; service owners still approve merge.
Stacks
JWT validation gaps, CORS misconfiguration, rate limiting absent on expensive endpoints, and problem details leaking internal IDs.
Hosted services without graceful shutdown, channel backpressure ignored, and retry policies that amplify poison messages.
UI thread marshaling, event subscription leaks, and serialization of types that change between build targets.
Workflow
Sign up, open a new review, and paste a handler, repository, or background job. For ongoing work, connect GitHub and target the PR with your .NET changes.
CodeCritic reads framework usings and attributes so findings reference Minimal APIs, MVC, or Blazor patterns you actually deploy.
Issues arrive grouped with short explanations. Fix auth, data integrity, and async correctness before debating naming.
Enable GitHub integration so the same engine comments on pull requests your team already reviews in Azure DevOps or GitHub.
How to use it
Paste a vertical slice: an endpoint, its service, and the EF query it triggers - not a lone interface file with no call sites.
Keep StyleCop and analyzer gates in CI. CodeCritic focuses on behavior: "this `DbContext` is shared across requests" beats brace placement.
When nullable reference types are enabled, mention that in the PR description so reviewers interpret warnings in the right compiler context.
GitHub integration keeps feedback on the diff your team already discusses in PR threads.
Paid tiers add API automation when you want the same scan on every push to `main`, not only on manual paste.
Validate high-severity async and disposal findings with a quick integration test - AI can misread custom middleware that swallows exceptions.
Details: Integrations, Limitations, Pricing.
Code patterns
Small slices from real PRs. Paste similar units in the browser or run on the GitHub diff that contains them.
var users = db.Users.Where(u => u.Email == input).ToList();Sample findings
Direct equality on Email fails for mixed-case logins. Normalization belongs before query or in DB collation policy.
Before
u.Email == inputSuggested direction
u.Email.ToLower() == input.Trim().ToLowerInvariant()Illustrative patterns from real review categories. Your output depends on diff size, language, and context.
FAQ
Start free in the browser, then connect GitHub when the team wants reviews on every pull request.