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 IDE-Konfiguration erforderlich, um geöffnete Dateien zu analysieren. Die Analyse wird aktiviert, sobald das NuGet-Paket in Ihrem Projekt vorhanden ist.
Tip
Standardmäßig werden Visual Studio nur Analysegeräte für dateien ausgeführt, die Geöffnet sind. Um Ihre gesamte Lösung gleichzeitig zu analysieren, wechseln Sie zu Extras>Optionen>Text Editor>C#>Erweitert , und legen Sie den Bereich der Hintergrundanalyse auf "Gesamte Lösung" fest.
Für mehrere Regeln stellt der Analyzer auch automatische Codefixes (schnelle Aktionen) in Visual Studio und VS-Code bereit. Sie kann z. B. durch einen einzigen Klick ersetzt werden DateTime.Nowcontext.CurrentUtcDateTime .
Analyseregeln
In den folgenden Abschnitten werden die Analyseregeln aufgeführt, die mit dem "Durable Task Roslyn Analyzer" ausgeliefert werden, gruppiert nach Kategorie.
Orchestrierungsregeln
Diese Regeln erzwingen Orchestratorcodeeinschränkungen , indem nicht deterministische oder unsichere API-Verwendung innerhalb von Orchestrierungsmethoden erkannt wird.
| Regel-ID | Severity | Description | Codekorrektur |
|---|---|---|---|
| DURABLE0001 | Warning | Erkennt nicht deterministische DateTime Eigenschaften (DateTime.Now, DateTime.UtcNow, , DateTime.TodayDateTimeOffset.Now, DateTimeOffset.UtcNow) in Orchestrierungen. Verwenden Sie stattdessen context.CurrentUtcDateTime. |
Ja |
| DURABLE0002 | Warning | Erkennt Guid.NewGuid() in Orchestrierungen. Verwenden Sie stattdessen context.NewGuid(). |
Ja |
| DURABLE0003 | Warning | Erkennt Task.Delay oder Thread.Sleep in Orchestrierungen. Verwenden Sie stattdessen context.CreateTimer. |
Ja |
| DURABLE0004 | Warning | Erkennt nicht deterministische Thread- und Aufgaben-APIs (Thread.Start, Task.Run, Task.ContinueWithTaskFactory.StartNew) in Orchestrierungen. |
No |
| DURABLE0005 | Warning | Erkennt E/A-APIs (z. B. HttpClient, Azure Storage Clients), die direkt in Orchestrierungen verwendet werden. Verschieben Sie E/A-Aufrufe zu Aktivitäten. |
No |
| DURABLE0006 | Warning | Erkennt die Verwendung der System.Environment API (z. B. GetEnvironmentVariable) in Orchestrierungen. |
No |
| DURABLE0007 | Warning |
CancellationToken Erkennt Parameter in Orchestrierungsfunktionssignaturen. |
No |
| DURABLE0008 | Warning | Erkennt nicht gebundene[OrchestrationTrigger] Werte (z. B. [EntityTrigger], [DurableClient]) in Orchestrierungsfunktionsparametern. |
No |
| DURABLE0009 | Info | Schlägt vor, die Verwendung eines Eingabeparameters anstelle von context.GetInput<T>(). |
No |
| DURABLE0010 | Warning | Erkennt die nichtkontextuelle ILogger-Verwendung in Orchestrierungen. Verwenden Sie stattdessen context.CreateReplaySafeLogger(). |
No |
| DURABLE0011 | Warning | Erkennt ungebundene while (true) Orchestrierungsschleifen, die nicht aufgerufen ContinueAsNewwerden. Ohne ContinueAsNew, die Orchestrierungsgeschichte wächst unbegrenzt. |
No |
| Regel-ID | Severity | Description | Codekorrektur |
|---|---|---|---|
| DURABLE0001 | Warning | Erkennt nicht deterministische DateTime Eigenschaften (DateTime.Now, DateTime.UtcNow, , DateTime.TodayDateTimeOffset.Now, DateTimeOffset.UtcNow) in Orchestrierungen. Verwenden Sie stattdessen context.CurrentUtcDateTime. |
Ja |
| DURABLE0002 | Warning | Erkennt Guid.NewGuid() in Orchestrierungen. Verwenden Sie stattdessen context.NewGuid(). |
Ja |
| DURABLE0003 | Warning | Erkennt Task.Delay oder Thread.Sleep in Orchestrierungen. Verwenden Sie stattdessen context.CreateTimer. |
Ja |
| DURABLE0004 | Warning | Erkennt nicht deterministische Thread- und Aufgaben-APIs (Thread.Start, Task.Run, Task.ContinueWithTaskFactory.StartNew) in Orchestrierungen. |
No |
| DURABLE0005 | Warning | Erkennt E/A-APIs (z. B. HttpClient, Azure Storage Clients), die direkt in Orchestrierungen verwendet werden. Verschieben Sie E/A-Aufrufe zu Aktivitäten. |
No |
| DURABLE0006 | Warning | Erkennt die Verwendung der System.Environment API (z. B. GetEnvironmentVariable) in Orchestrierungen. |
No |
| DURABLE0009 | Info | Schlägt vor, die Verwendung eines Eingabeparameters anstelle von context.GetInput<T>(). |
No |
| DURABLE0010 | Warning | Erkennt die nichtkontextuelle ILogger-Verwendung in Orchestrierungen. Verwenden Sie stattdessen context.CreateReplaySafeLogger(). |
No |
| DURABLE0011 | Warning | Erkennt ungebundene while (true) Orchestrierungsschleifen, die nicht aufgerufen ContinueAsNewwerden. Ohne ContinueAsNew, die Orchestrierungsgeschichte wächst unbegrenzt. |
No |
Note
Regeln DURABLE0007, DURABLE0008 und DURABLE1001-DURABLE1003 gelten nur für Azure Functions und sind nicht im eigenständigen Durable Task SDK-Analysator enthalten.
Bindungsregeln
Diese Regeln überprüfen, ob Trigger- und Clientbindungen auf die richtigen Parametertypen angewendet werden.
| Regel-ID | Severity | Description | Codekorrektur |
|---|---|---|---|
| DURABLE1001 | Fehler | Stellt sicher, dass [OrchestrationTrigger] nur auf TaskOrchestrationContext-Parameter angewendet wird. |
Ja |
| DURABLE1002 | Fehler | Stellt sicher, dass [DurableClient] nur auf DurableTaskClient-Parameter angewendet wird. |
Ja |
| DURABLE1003 | Fehler | Stellt sicher, dass [EntityTrigger] nur auf TaskEntityDispatcher-Parameter angewendet wird. |
Ja |
Aktivitätsregeln
Diese Regeln überprüfen, ob Typenkonflikten und nicht aufgelöste Namen in Aktivitäts- und Unter-Orchestrierungsaufrufen auftreten.
| Regel-ID | Severity | Description | Codekorrektur |
|---|---|---|---|
| DURABLE2001 | Warning | Erkennt Eingabetypkonflikten zwischen Aktivitätsaufrufen und Aktivitätsdefinitionen. | No |
| DURABLE2002 | Warning | Erkennt Nichtübereinstimmungen des Ausgabetyps zwischen Aktivitätsaufrufen und Aktivitätsdefinitionen. | No |
| DURABLE2003 | Info | Meldet, wenn ein Aktivitätsaufruf auf einen Namen verweist, der keiner definierten Aktivität in der Kompilierung entspricht. | No |
| DURABLE2004 | Info | Meldet, wenn ein Unterorchesteraufruf auf einen Namen verweist, der keinem definierten Orchestrator in der Kompilierung entspricht. | No |
Weitere Informationen finden Sie in den analyzer-Versionshinweisen auf GitHub.
Roslyn Analyzer-Warnungen unterdrücken
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. Diese Analyse ist Teil des pakets Microsoft.Azure.WebJobs.Extensions.DurableTask und verwendet ein anderes Regelpräfix (DF anstelle von DURABLE). Die beiden Analysegeräte sind vollständig separate Pakete und teilen keine Regel-IDs.
Important
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 (DF0101–DF0307) finden Sie auf der Analyzer v0.2.0-Releaseseite.