Zum Hauptinhalt springen
ai-slop/csharp-async-voidmanuelle Behebung

Async-void-Methode.

Eine `async void`-Methode. Aufrufer können sie nicht awaiten, und eine darin geworfene Exception entgeht jedem try/catch der Aufrufer und kann den Prozess abstürzen lassen.

Beanstandete und saubere Form.

Jedes Beispiel zeigt genau die Codeform, nach der die Regel sucht, und dann die kleinste Version, die die Absicht bewahrt, ohne Risiken zu verstecken oder Rauschen hinzuzufügen.

csharp-async-void.cs
✗ Beanstandet
public async void SaveOrder(Order order)
{
    await _repository.InsertAsync(order);
    await _bus.PublishAsync(new OrderSaved(order.Id));
}
Warum das anschlägt

Deterministischer Zeilenabgleich auf maskiertem Quelltext: beanstandet Deklarationen der Form `async void Name(`.

csharp-async-void.cs
✓ Sauber
public async Task SaveOrderAsync(Order order)
{
    await _repository.InsertAsync(order);
    await _bus.PublishAsync(new OrderSaved(order.Id));
}
Was sich geändert hat

Gib `Task` (oder `Task<T>`) zurück, damit Aufrufer awaiten und Fehler bemerken können. Muss es für ein Event `void` sein, stell sicher, dass der Rumpf nicht werfen kann.

Agenten markieren eine Methode als `async`, um darin `await` zu nutzen, und lassen den Rückgabetyp bei `void`, weil nichts zurückgegeben wird. Der Compiler akzeptiert das ohne Beanstandung.

Wie diese Regel begründet ist.

Regel-ID

ai-slop/csharp-async-void

Prüfende Engine

ai-slop

Erkennungsstrategie

Deterministischer Zeilenabgleich auf maskiertem Quelltext: beanstandet Deklarationen der Form `async void Name(`.

Legitimer Code, der NICHT beanstandet wird

Event-Handler werden nicht beanstandet: Namen, die mit `On` und einem Großbuchstaben beginnen, auf `Handler` enden oder einen Unterstrich enthalten (etwa `button1_Click`), sowie Signaturen, die `EventArgs` erwähnen.

Belege

Teil des C#-Regelsatzes von aislop. Vollwertige C#-Unterstützung, einschließlich C#-spezifischer AI-Slop-Regeln, kam mit aislop v0.14.1.