Release v20.44.0
Summary
A single reference to the Cratis package now ships the full set of Cratis Roslyn analyzers, and several new analyzers guide developers and AI toward idiomatic Arc code.
Added
ARC0007analyzer — warns when a[Command]is declared as a class instead of a record.ARC0008analyzer — warns when a[ReadModel]is declared as a class instead of a record.ARC0009analyzer — warns when aConceptAs<T>is declared as a class instead of a record.ARCCHR0002analyzer — warns when a[Command]has multiple event source id candidates (EventSourceId,EventSourceId<T>, a type with an implicit conversion toEventSourceId, or[Key]) but does not implementICanProvideEventSourceId; exempt whenHandlereturns onlyEventForEventSourceId.ARCCHR0003analyzer — warns when a reactor injectsIEventLoginstead of returning side-effect events.ARCCHR0004analyzer — warns when[EventType]specifies an explicit id (the type name is the identifier);generationstays allowed.
Changed
- The
Cratismeta package now bundles every Cratis analyzer (Arc, Arc.Chronicle, the Arc source generator, the Fundamentals type discovery generator, and the Metrics analyzer), so installingCratisenables all analyzers without referencing the sub-packages directly.