Update 0.2.0 – 05.04.2024
Der IOSP Analyzer akzeptiert nun Aufrufe von ConfigureAwait innerhalb einer Integration.
Wird eine asynchrone Operation aufgerufen ist dies natürlich kein Verstoß gegen das IOSP. Will man diesen Aufruf jedoch mit ConfigureAwait konfigurieren, wurde dies bislang als Framework/Runtime Call gewertet und damit als Verstoß gegen das IOSP.
Die Ergänzung geht auf einen Fork des GitHub Repos zurück (siehe https://github.com/LambdaEcho/ccdanalyzers). Ein Pull Request an mich hätte es hier auch getan…
Das folgende Codebeispiel zeigt das Problem:
public async Task GetNumber_IntegrationOnlyWithConfigureAwait() {
var list = GetList();
var number = await FilterNumberAsync(list).ConfigureAwait(continueOnCapturedContext: false);
return number;
}
private Task FilterNumberAsync(IReadOnlyList list) {
int Value() {
if (list.Count > 0) {
return list[list.Count - 1];
}
return 0;
}
var task = Task.Run(Value);
return task;
}
private static IReadOnlyList GetList() {
return new List() { 1, 2, 3, 4 };
}
Es geht hier um Zeile 3: der Aufruf von ConfigureAwait aus der Klasse Task wurde bislang als IOSP Verstoß gewertet.
Für Anregungen und Hinweise sowie Verbesserungsvorschläge bin ich ganz offen! Schreib mir einfach eine Mail oder stelle einen Pull Request im Repo ein.