class

Analyzer::CSharp::Carter

Inherits Analyzer::CSharp::MinimalApiSupport < Analyzer::CSharp::Common < Analyzer < FileHelper < Reference < Object

Extracts endpoints from Carter (https://github.com/CarterCommunity/Carter) modules. A Carter module is a class that either implements ICarterModule or derives from the CarterModule base class, and registers minimal-API routes inside AddRoutes(IEndpointRouteBuilder).

CarterModule additionally takes a base path through its constructor (public DirectorsModule() : base("/directors")), which every route in that module hangs off. Modules using that base were previously invisible to this analyzer (it required the literal string ICarterModule), so they fell through to cs_aspnet_core_minimal_api, which emitted their routes without the base path — GET / and GET /qs instead of GET /directors and GET /directors/qs.

Route parsing itself is the same job the minimal-API analyzer does, so it runs on the shared MinimalApiSupport helpers with the module base path passed in as a prefix. That also brings delegate parameter binding, MapGroup composition, method-group handlers and generic MapPut<T>("/x", …) registrations to Carter, none of which the previous hand-rolled copy supported.

Extraction is scoped to each module's AddRoutes body so MapGroup prefixes and base paths don't leak between modules declared in one file.

Constants

MODULE_BASE_RE = /\bI?CarterModule\b/

A base-list entry naming ICarterModule / CarterModule.

Class methods

tech_name
Source

Instance methods

analyze
Source
tech

Instance-side view of the same declaration. The per-file rescues live on this base class, which has no way to name the analyzer that is running inside them, so a skipped file could not be attributed to a tech. Deriving it from analyzer_for keeps the name written exactly once.

Source