Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Der Durable Task Roslyn Analyzer ist ein Live-Codeanalysator, mit dem Sie orchestrator-Codeeinschränkungen in Ihren C#-Durable Functions-Apps verfolgen können. Es erkennt häufige Probleme wie nicht deterministische API-Verwendung, falsche Bindungen und Typenkonflikten zur Buildzeit, bevor Ihr Code die Produktion erreicht.
Der Analyzer wird mit dem Microsoft.Azure.Functions.Worker.Extensions.DurableTask NuGet-Paket (v1.6.0 und höher) gebündelt und ist standardmäßig aktiviert. Es ist keine zusätzliche Einrichtung erforderlich.
Der Durable Task Roslyn Analyzer ist eine Live-Codeanalyse, mit der Sie Orchestrator-Codeeinschränkungen in Ihren C# Durable Task SDK-Apps befolgen können. Es erkennt häufige Probleme wie die nicht deterministische API-Verwendung und Typenkonflikten zur Buildzeit, bevor Ihr Code die Produktion erreicht.
Um die Analyse zu verwenden, fügen Sie das Microsoft.DurableTask.Analyzers NuGet-Paket zu Ihrem Projekt hinzu:
dotnet add package Microsoft.DurableTask.Analyzers
So funktioniert es
Der Analyzer wird automatisch in Visual Studio, Visual Studio Code (mit der C#Dev Kit-Erweiterung) und während dotnet build in der Befehlszeile ausgeführt. Es prüft den Orchestratorcode und meldet Diagnoseinformationen als Warnungen oder Fehler in der Fehlerliste Ihrer IDE sowie in der Buildausgabe.
Es ist keine spezielle IDE-Konfiguration erforderlich. Die Analyse wird aktiviert, sobald das NuGet-Paket in Ihrem Projekt vorhanden ist.
Tipp
In Visual Studio werden standardmäßig nur Analyzer in geöffneten Dateien ausgeführt. Wenn Sie die Analyse für ihre gesamte Lösung ausführen möchten, wechseln Sie zu "Extras>Optionen>Text Editor>C#>Erweitert ", und legen Sie den Bereich "Hintergrundanalyse" auf "Gesamte Lösung" fest.
Analyseregeln
In der folgenden Tabelle sind die Analyseregeln aufgeführt, die mit dem "Durable Task Roslyn Analyzer" ausgeliefert werden. Jede Regel zielt auf eine bestimmte Verletzung von Codeeinschränkungen oder häufig auftretenden Fehlern ab.
| Regel-ID | Schweregrad | Beschreibung |
|---|---|---|
| DURABLE0001 | Warnung | Erkennt nicht deterministische DateTime Eigenschaften (DateTime.Now, DateTime.UtcNow, , DateTime.TodayDateTimeOffset.Now, DateTimeOffset.UtcNow) in Orchestrierungen. Verwenden Sie stattdessen context.CurrentUtcDateTime. |
| DURABLE0002 | Warnung | Erkennt Guid.NewGuid() in Orchestrierungen. Verwenden Sie stattdessen context.NewGuid(). |
| DURABLE0003 | Warnung | Erkennt Task.Delay oder Thread.Sleep in Orchestrierungen. Verwenden Sie stattdessen context.CreateTimer. |
| DURABLE0004 | Warnung | Erkennt nicht deterministische Thread- und Aufgaben-APIs (Thread.Start, Task.Run, Task.ContinueWithTaskFactory.StartNew) in Orchestrierungen. |
| DURABLE0005 | Warnung | Erkennt E/A-APIs (z. B. HttpClient, Azure Storage Clients), die direkt in Orchestrierungen verwendet werden. Verschieben Sie E/A-Aufrufe zu Aktivitäten. |
| DURABLE0006 | Warnung | Erkennt die Verwendung der System.Environment API (z. B. GetEnvironmentVariable) in Orchestrierungen. |
| DURABLE0007 | Warnung |
CancellationToken Erkennt Parameter in Orchestrierungsfunktionssignaturen. |
| DURABLE0008 | Warnung | Erkennt nicht gebundene[OrchestrationTrigger] Werte (z. B. [EntityTrigger], [DurableClient]) in Orchestrierungsfunktionsparametern. |
| DURABLE0009 | Info | Schlägt vor, die Verwendung eines Eingabeparameters anstelle von context.GetInput<T>(). |
| DURABLE0010 | Warnung | Erkennt die nichtkontextuelle ILogger-Verwendung in Orchestrierungen. Verwenden Sie stattdessen context.CreateReplaySafeLogger(). |
| DURABLE1001 | Fehler | Stellt sicher, dass [OrchestrationTrigger] nur auf TaskOrchestrationContext-Parameter angewendet wird. |
| DURABLE1002 | Fehler | Stellt sicher, dass [DurableClient] nur auf DurableTaskClient-Parameter angewendet wird. |
| DURABLE1003 | Fehler | Stellt sicher, dass [EntityTrigger] nur auf TaskEntityDispatcher-Parameter angewendet wird. |
| DURABLE2001 | Warnung | Erkennt Eingabetypkonflikten zwischen Aktivitätsaufrufen und Aktivitätsdefinitionen. |
| DURABLE2002 | Warnung | Erkennt Nichtübereinstimmungen des Ausgabetyps zwischen Aktivitätsaufrufen und Aktivitätsdefinitionen. |
| DURABLE2003 | Info | Meldet, wenn ein Aktivitätsaufruf auf einen Namen verweist, der keiner definierten Aktivität in der Kompilierung entspricht. |
| DURABLE2004 | Info | Meldet, wenn ein Unterorchesteraufruf auf einen Namen verweist, der keinem definierten Orchestrator in der Kompilierung entspricht. |
| Regel-ID | Schweregrad | Beschreibung |
|---|---|---|
| DURABLE0001 | Warnung | Erkennt nicht deterministische DateTime Eigenschaften (DateTime.Now, DateTime.UtcNow, , DateTime.TodayDateTimeOffset.Now, DateTimeOffset.UtcNow) in Orchestrierungen. Verwenden Sie stattdessen context.CurrentUtcDateTime. |
| DURABLE0002 | Warnung | Erkennt Guid.NewGuid() in Orchestrierungen. Verwenden Sie stattdessen context.NewGuid(). |
| DURABLE0003 | Warnung | Erkennt Task.Delay oder Thread.Sleep in Orchestrierungen. Verwenden Sie stattdessen context.CreateTimer. |
| DURABLE0004 | Warnung | Erkennt nicht deterministische Thread- und Aufgaben-APIs (Thread.Start, Task.Run, Task.ContinueWithTaskFactory.StartNew) in Orchestrierungen. |
| DURABLE0005 | Warnung | Erkennt E/A-APIs (z. B. HttpClient, Azure Storage Clients), die direkt in Orchestrierungen verwendet werden. Verschieben Sie E/A-Aufrufe zu Aktivitäten. |
| DURABLE0006 | Warnung | Erkennt die Verwendung der System.Environment API (z. B. GetEnvironmentVariable) in Orchestrierungen. |
| DURABLE0009 | Info | Schlägt vor, die Verwendung eines Eingabeparameters anstelle von context.GetInput<T>(). |
| DURABLE0010 | Warnung | Erkennt die nichtkontextuelle ILogger-Verwendung in Orchestrierungen. Verwenden Sie stattdessen context.CreateReplaySafeLogger(). |
| DURABLE2001 | Warnung | Erkennt Eingabetypkonflikten zwischen Aktivitätsaufrufen und Aktivitätsdefinitionen. |
| DURABLE2002 | Warnung | Erkennt Nichtübereinstimmungen des Ausgabetyps zwischen Aktivitätsaufrufen und Aktivitätsdefinitionen. |
| DURABLE2003 | Info | Meldet, wenn ein Aktivitätsaufruf auf einen Namen verweist, der keiner definierten Aktivität in der Kompilierung entspricht. |
| DURABLE2004 | Info | Meldet, wenn ein Unterorchesteraufruf auf einen Namen verweist, der keinem definierten Orchestrator in der Kompilierung entspricht. |
Hinweis
Regeln DURABLE0007, DURABLE0008 und DURABLE1001-DURABLE1003 gelten nur für Azure Functions und sind nicht im eigenständigen Durable Task SDK-Analysator enthalten.
Weitere Informationen finden Sie in den analyzer-Versionshinweisen auf GitHub.
Unterdrücken von Analysewarnungen
Sie können die Analysediagnose auf Projekt-, Datei- oder Zeilenebene unterdrücken.
Unterdrücken mit .editorconfig
Fügen Sie ihrer .editorconfig Datei einen Eintrag hinzu, um den Schweregrad einer Regel zu ändern oder sie vollständig zu deaktivieren:
[*.cs]
dotnet_diagnostic.DURABLE0001.severity = none
Gültige Schweregradwerte sind error, , warning, suggestion, silentund none.
Mit #pragma inline unterdrücken
Dient #pragma warning disable zum Unterdrücken einer bestimmten Warnung in einem Codeabschnitt:
#pragma warning disable DURABLE0001
var now = DateTime.UtcNow;
#pragma warning restore DURABLE0001
Unterdrücken auf Projektebene
Fügen Sie Ihrer <NoWarn>-Datei einen .csproj-Eintrag hinzu, um eine Regel für das gesamte Projekt zu unterdrücken.
<PropertyGroup>
<NoWarn>$(NoWarn);DURABLE0001</NoWarn>
</PropertyGroup>
Legacy-.NET In-Process Analyzer
Ein separater, älterer Roslyn Analyzer ist für das Programmiermodell .NET in-process vorhanden. Dieser Analyzer ist Teil des Microsoft.Azure.WebJobs.Extensions.DurableTask-Pakets und verfügt über einen anderen Satz von Regeln.
Von Bedeutung
Das .NET In-Process-Programmiermodell wird eingestellt. Verwenden Sie das .NET isolierte Worker-Modell für neue Projekte. Die ältere In-Process-Analyse erhält keine neuen Regeln oder Verbesserungen.
Informationen zu den In-Process Analyzer-Regeln finden Sie auf der Analyzer v0.2.0-Release-Seite.