Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Durable Task Roslyn Analyzer est un analyseur de code en direct qui vous aide à suivre les contraintes de code orchestrator dans vos applications Durable Functions C#. Il détecte les problèmes courants tels que l’utilisation d’API non déterministe, les liaisons incorrectes et les incompatibilités de type au moment de la génération, avant que votre code atteigne la production.
L’analyseur est groupé avec le package NuGet Microsoft.Azure.Functions.Worker.Extensions.DurableTask (v1.6.0 et versions ultérieures) et est activé par défaut. Aucune configuration supplémentaire n’est requise.
Durable Task Roslyn Analyzer est un analyseur de code en direct qui vous aide à suivre les contraintes de code d’orchestrateur dans vos applications sdk C# Durable Task. Il détecte les problèmes courants tels que l’utilisation d’API non déterministe et les incompatibilités de type au moment de la génération, avant que votre code atteigne la production.
Pour utiliser l’analyseur, ajoutez le Microsoft.DurableTask.Analyzers package NuGet à votre projet :
dotnet add package Microsoft.DurableTask.Analyzers
Fonctionnement
L’analyseur s’exécute automatiquement dans Visual Studio, Visual Studio Code (avec l’extension du Kit de développement C#) et pendant dotnet build sur la ligne de commande. Il inspecte votre code d’orchestrateur et signale les diagnostics en tant qu’avertissements ou erreurs dans la liste d’erreurs de votre IDE et dans la sortie de build.
Aucune configuration IDE n’est requise pour analyser les fichiers ouverts. L’analyseur s’active dès que le package NuGet est présent dans votre projet.
Conseil / Astuce
Par défaut, Visual Studio exécute uniquement les analyseurs sur les fichiers que vous avez ouverts. Pour analyser l’intégralité de votre solution à la fois, accédez àl’Éditeur> de texteOptions>outils>C#>Avancé et définissez l’étendue d’analyse en arrière-plan sur la solution entière.
Pour plusieurs règles, l’analyseur fournit également des correctifs de code automatiques (actions rapides) dans Visual Studio et VS Code. Par exemple, il peut remplacer DateTime.Nowcontext.CurrentUtcDateTime par un seul clic.
Règles de l'analyseur
Les sections suivantes répertorient les règles d’analyseur fournies avec l’analyseur Roslyn de tâche durable, regroupées par catégorie.
Règles d’orchestration
Ces règles appliquent des contraintes de code d’orchestrateur en détectant l’utilisation non déterministe ou non sécurisée de l’API dans les méthodes d’orchestration.
| ID de règle | Niveau de gravité | Description | Correction de code |
|---|---|---|---|
| DURABLE0001 | Avertissement | Détecte les propriétés non déterministes DateTime (DateTime.Now, DateTime.UtcNow, DateTime.Today, DateTimeOffset.Now, DateTimeOffset.UtcNow) dans les orchestrations. Utilisez context.CurrentUtcDateTime à la place. |
Oui |
| DURABLE0002 | Avertissement | Détecte Guid.NewGuid() dans les orchestrations. Utilisez context.NewGuid() à la place. |
Oui |
| DURABLE0003 | Avertissement | Détecte Task.Delay ou Thread.Sleep dans des orchestrations. Utilisez context.CreateTimer à la place. |
Oui |
| DURABLE0004 | Avertissement | Détecte les API de thread et de tâche non déterministes (Thread.Start, Task.Run, Task.ContinueWith, TaskFactory.StartNew) dans les orchestrations. |
Non |
| DURABLE0005 | Avertissement | Détecte les API d’E/S (par exemple, HttpClient, stockage Azure clients) utilisées directement dans les orchestrations. Déplacez les appels d’E/S vers les activités. |
Non |
| DURABLE0006 | Avertissement | Détecte l’utilisation System.Environment de l’API (par exemple GetEnvironmentVariable) dans les orchestrations. |
Non |
| DURABLE0007 | Avertissement | Détecte les paramètres dans les CancellationToken signatures de fonction d’orchestration. |
Non |
| DURABLE0008 | Avertissement | Détecte les non-liaisons[OrchestrationTrigger] (par exemple, [EntityTrigger], [DurableClient]) dans les paramètres de fonction d’orchestration. |
Non |
| DURABLE0009 | Informations | Suggère d’utiliser un paramètre d’entrée au lieu de context.GetInput<T>(). |
Non |
| DURABLE0010 | Avertissement | Détecte l’utilisation non contextuelle ILogger dans les orchestrations. Utilisez context.CreateReplaySafeLogger() à la place. |
Non |
| DURABLE0011 | Avertissement | Détecte les boucles d’orchestration non liées while (true) qui n’appellent ContinueAsNewpas . Sans ContinueAsNew, l’historique de l’orchestration augmente indéfiniment. |
Non |
| ID de règle | Niveau de gravité | Description | Correction de code |
|---|---|---|---|
| DURABLE0001 | Avertissement | Détecte les propriétés non déterministes DateTime (DateTime.Now, DateTime.UtcNow, DateTime.Today, DateTimeOffset.Now, DateTimeOffset.UtcNow) dans les orchestrations. Utilisez context.CurrentUtcDateTime à la place. |
Oui |
| DURABLE0002 | Avertissement | Détecte Guid.NewGuid() dans les orchestrations. Utilisez context.NewGuid() à la place. |
Oui |
| DURABLE0003 | Avertissement | Détecte Task.Delay ou Thread.Sleep dans des orchestrations. Utilisez context.CreateTimer à la place. |
Oui |
| DURABLE0004 | Avertissement | Détecte les API de thread et de tâche non déterministes (Thread.Start, Task.Run, Task.ContinueWith, TaskFactory.StartNew) dans les orchestrations. |
Non |
| DURABLE0005 | Avertissement | Détecte les API d’E/S (par exemple, HttpClient, stockage Azure clients) utilisées directement dans les orchestrations. Déplacez les appels d’E/S vers les activités. |
Non |
| DURABLE0006 | Avertissement | Détecte l’utilisation System.Environment de l’API (par exemple GetEnvironmentVariable) dans les orchestrations. |
Non |
| DURABLE0009 | Informations | Suggère d’utiliser un paramètre d’entrée au lieu de context.GetInput<T>(). |
Non |
| DURABLE0010 | Avertissement | Détecte l’utilisation non contextuelle ILogger dans les orchestrations. Utilisez context.CreateReplaySafeLogger() à la place. |
Non |
| DURABLE0011 | Avertissement | Détecte les boucles d’orchestration non liées while (true) qui n’appellent ContinueAsNewpas . Sans ContinueAsNew, l’historique de l’orchestration augmente indéfiniment. |
Non |
Note
Les règles DURABLE0007, DURABLE0008 et DURABLE1001-DURABLE1003 s'appliquent uniquement à Azure Functions et ne sont pas incluses dans l'analyseur du KIT de développement logiciel (SDK) Durable Task autonome.
Règles de liaison
Ces règles valident que les liaisons de déclencheur et de client sont appliquées aux types de paramètres appropriés.
| ID de règle | Niveau de gravité | Description | Correction de code |
|---|---|---|---|
| DURABLE1001 | Error | Garantie que [OrchestrationTrigger] est appliqué uniquement aux paramètres TaskOrchestrationContext. |
Oui |
| DURABLE1002 | Error | Garantie que [DurableClient] est appliqué uniquement aux paramètres DurableTaskClient. |
Oui |
| DURABLE1003 | Error | Garantie que [EntityTrigger] est appliqué uniquement aux paramètres TaskEntityDispatcher. |
Oui |
Règles d’activité
Ces règles vérifient les incompatibilités de type et les noms non résolus dans les appels d’activité et de sous-orchestration.
| ID de règle | Niveau de gravité | Description | Correction de code |
|---|---|---|---|
| DURABLE2001 | Avertissement | Détecte les incompatibilités de type d’entrée entre les appels d’activité et les définitions d’activité. | Non |
| DURABLE2002 | Avertissement | Détecte les incompatibilités de type de sortie entre les appels d’activité et les définitions d’activité. | Non |
| DURABLE2003 | Informations | Signale lorsqu’un appel d’activité fait référence à un nom qui ne correspond à aucune activité définie dans la compilation. | Non |
| DURABLE2004 | Informations | Signale lorsqu’un appel de sous-orchestration fait référence à un nom qui ne correspond à aucun orchestrateur défini dans la compilation. | Non |
Pour plus d’informations, consultez les notes de publication analyzer sur GitHub.
Supprimer les avertissements roslyn Analyzer
Vous pouvez supprimer les diagnostics d’analyseur au niveau du projet, du fichier ou de la ligne.
Supprimer avec .editorconfig
Ajoutez une entrée à votre .editorconfig fichier pour modifier la gravité d’une règle ou désactivez-la entièrement :
[*.cs]
dotnet_diagnostic.DURABLE0001.severity = none
Les valeurs de gravité valides sont error, , warningsuggestion, silent, et none.
Supprimer en ligne avec #pragma
Permet #pragma warning disable de supprimer un avertissement spécifique dans une section de code :
#pragma warning disable DURABLE0001
var now = DateTime.UtcNow;
#pragma warning restore DURABLE0001
Supprimer au niveau du projet
Ajoutez une <NoWarn> entrée à votre .csproj fichier pour supprimer une règle pour l’ensemble du projet :
<PropertyGroup>
<NoWarn>$(NoWarn);DURABLE0001</NoWarn>
</PropertyGroup>
Analyseur in-process hérité .NET
Un analyseur Roslyn distinct et ancien existe pour le modèle de programmation .NET in-process. Cet analyseur fait partie du package Microsoft.Azure.WebJobs.Extensions.DurableTask et utilise un préfixe de règle différent (DF au lieu de DURABLE). Les deux analyseurs sont entièrement distincts et ne partagent pas d’ID de règle.
Important
Le .NET modèle de programmation in-process est mis hors service. Utilisez le modèle de travailleur isolé .NET pour les nouveaux projets. L’analyseur in-process hérité ne reçoit pas de nouvelles règles ni améliorations.
Pour plus d’informations sur les règles d’analyseur in-process (DF0101-DF0307), consultez la page de publication Analyzer v0.2.0.