Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
El Durable Task Roslyn Analyzer es un analizador de código en vivo que le ayuda a seguir las restricciones del código del orquestador en sus aplicaciones Durable Functions en C#. Detecta problemas comunes, como el uso de API no determinista, enlaces incorrectos y errores de coincidencia de tipos en tiempo de compilación, antes de que el código alcance la producción.
El analizador se agrupa con el paquete NuGet de Microsoft.Azure.Functions.Worker.Extensions.DurableTask (v1.6.0 y versiones posteriores) y está habilitado de forma predeterminada. No se requiere ninguna configuración adicional.
Durable Task Roslyn Analyzer es un analizador de código activo que le ayuda a seguir las restricciones de código de orquestador en las aplicaciones del SDK de Durable Task de C#. Detecta problemas comunes, como el uso de API no determinista y los errores de coincidencia de tipos en tiempo de compilación, antes de que el código alcance la producción.
Para usar el analizador, agregue el Microsoft.DurableTask.Analyzers paquete NuGet al proyecto:
dotnet add package Microsoft.DurableTask.Analyzers
Cómo funciona
El analizador se ejecuta automáticamente en Visual Studio, Visual Studio Code (con la extensión C# Dev Kit) y durante dotnet build en la línea de comandos. Inspecciona el código del orquestador e informa de diagnósticos como advertencias o errores en la lista de errores del IDE y en la salida de la compilación.
No se requiere ninguna configuración del IDE para analizar los archivos abiertos. El analizador se activa tan pronto como el paquete NuGet esté presente en el proyecto.
Sugerencia
De forma predeterminada, Visual Studio solo ejecuta analizadores en los archivos que tiene abiertos. Para analizar toda la solución a la vez, vaya alEditor> detexto Opciones>de herramientas>C#>Avanzado y establezca Ámbito de análisis en segundo plano en Toda la solución.
Para varias reglas, el analizador también proporciona correcciones de código automatic (acciones rápidas) en Visual Studio y VS Code. Por ejemplo, puede reemplazar por DateTime.Nowcontext.CurrentUtcDateTime en un solo clic.
Reglas del analizador
En las secciones siguientes se enumeran las reglas del analizador que se incluyen con durable task Roslyn Analyzer, agrupadas por categoría.
Reglas de orquestación
Estas reglas aplican restricciones de código de orquestador mediante la detección de un uso de API no determinista o no seguro dentro de los métodos de orquestación.
| Identificador de la regla | Severity | Descripción | Corrección de código |
|---|---|---|---|
| DURABLE0001 | Advertencia | Detecta propiedades no deterministas DateTime (DateTime.Now, DateTime.UtcNow, DateTime.Today, DateTimeOffset.Now, DateTimeOffset.UtcNow) en orquestaciones. Use context.CurrentUtcDateTime en su lugar. |
Yes |
| DURABLE0002 | Advertencia | Detecta Guid.NewGuid() en orquestaciones. Use context.NewGuid() en su lugar. |
Yes |
| DURABLE0003 | Advertencia | Detecta Task.Delay o Thread.Sleep en orquestaciones. Use context.CreateTimer en su lugar. |
Yes |
| DURABLE0004 | Advertencia | Detecta las APIs de subprocesos y tareas no deterministas (Thread.Start, Task.Run, Task.ContinueWith, TaskFactory.StartNew) en orquestaciones. |
No |
| DURABLE0005 | Advertencia | Detecta las APIs de E/S (por ejemplo, HttpClient o los clientes de Azure Storage) que son usadas directamente en orquestaciones. Mover llamadas de E/S a actividades. |
No |
| DURABLE0006 | Advertencia | Detecta el System.Environment uso de la API (por ejemplo, GetEnvironmentVariable) en orquestaciones. |
No |
| DURABLE0007 | Advertencia |
CancellationToken Detecta parámetros en firmas de función de orquestación. |
No |
| DURABLE0008 | Advertencia | Detecta enlaces no-[OrchestrationTrigger] (por ejemplo, [EntityTrigger], [DurableClient]) en los parámetros de función de orquestación. |
No |
| DURABLE0009 | Información | Sugiere el uso de un parámetro de entrada en lugar de context.GetInput<T>(). |
No |
| DURABLE0010 | Advertencia | Detecta el uso no contextual de ILogger en orquestaciones. Use context.CreateReplaySafeLogger() en su lugar. |
No |
| DURABLE0011 | Advertencia | Detecta bucles de orquestación sin enlazar while (true) que no llaman a ContinueAsNew. Sin ContinueAsNew, el historial de orquestaciones crece indefinidamente. |
No |
| Identificador de la regla | Severity | Descripción | Corrección de código |
|---|---|---|---|
| DURABLE0001 | Advertencia | Detecta propiedades no deterministas DateTime (DateTime.Now, DateTime.UtcNow, DateTime.Today, DateTimeOffset.Now, DateTimeOffset.UtcNow) en orquestaciones. Use context.CurrentUtcDateTime en su lugar. |
Yes |
| DURABLE0002 | Advertencia | Detecta Guid.NewGuid() en orquestaciones. Use context.NewGuid() en su lugar. |
Yes |
| DURABLE0003 | Advertencia | Detecta Task.Delay o Thread.Sleep en orquestaciones. Use context.CreateTimer en su lugar. |
Yes |
| DURABLE0004 | Advertencia | Detecta las APIs de subprocesos y tareas no deterministas (Thread.Start, Task.Run, Task.ContinueWith, TaskFactory.StartNew) en orquestaciones. |
No |
| DURABLE0005 | Advertencia | Detecta las APIs de E/S (por ejemplo, HttpClient o los clientes de Azure Storage) que son usadas directamente en orquestaciones. Mover llamadas de E/S a actividades. |
No |
| DURABLE0006 | Advertencia | Detecta el System.Environment uso de la API (por ejemplo, GetEnvironmentVariable) en orquestaciones. |
No |
| DURABLE0009 | Información | Sugiere el uso de un parámetro de entrada en lugar de context.GetInput<T>(). |
No |
| DURABLE0010 | Advertencia | Detecta el uso no contextual de ILogger en orquestaciones. Use context.CreateReplaySafeLogger() en su lugar. |
No |
| DURABLE0011 | Advertencia | Detecta bucles de orquestación sin enlazar while (true) que no llaman a ContinueAsNew. Sin ContinueAsNew, el historial de orquestaciones crece indefinidamente. |
No |
Nota:
Las reglas DURABLE0007, DURABLE0008 y DURABLE1001-DURABLE1003 solo se aplican a Azure Functions y no se incluyen en el analizador independiente del SDK de Durable Task.
Reglas de enlace
Estas reglas validan que los enlaces de desencadenador y cliente se aplican a los tipos de parámetro correctos.
| Identificador de la regla | Severity | Descripción | Corrección de código |
|---|---|---|---|
| DURABLE1001 | Error | Garantiza que [OrchestrationTrigger] solo se aplique a TaskOrchestrationContext parámetros. |
Yes |
| DURABLE1002 | Error | Garantiza que [DurableClient] solo se aplique a DurableTaskClient parámetros. |
Yes |
| DURABLE1003 | Error | Garantiza que [EntityTrigger] solo se aplique a TaskEntityDispatcher parámetros. |
Yes |
Reglas de actividad
Estas reglas comprueban si hay coincidencias de tipos y nombres sin resolver en las llamadas de actividad y sub orquestación.
| Identificador de la regla | Severity | Descripción | Corrección de código |
|---|---|---|---|
| DURABLE2001 | Advertencia | Detecta incompatibilidades de tipo de entrada entre las invocaciones de actividad y las definiciones de actividad. | No |
| DURABLE2002 | Advertencia | Detecta discrepancias de tipo de salida entre las invocaciones de actividad y las definiciones de actividad. | No |
| DURABLE2003 | Información | Informa cuando una llamada de actividad hace referencia a un nombre que no coincide con ninguna actividad definida en la compilación. | No |
| DURABLE2004 | Información | Informa cuando una llamada de suborquestación hace referencia a un nombre que no coincide con ningún orquestador definido en la compilación. | No |
Para obtener más información, consulte las notas de la versión de analyzer en GitHub.
Suprimir advertencias del analizador de Roslyn
Puede suprimir los diagnósticos del analizador en el nivel de proyecto, archivo o línea.
Suprimir con .editorconfig
Agregue una entrada al .editorconfig archivo para cambiar la gravedad de una regla o deshabilitarla completamente:
[*.cs]
dotnet_diagnostic.DURABLE0001.severity = none
Los valores de gravedad válidos son error, warning, suggestion, silenty none.
Supresión en línea con #pragma
Use #pragma warning disable para suprimir una advertencia específica en una sección de código:
#pragma warning disable DURABLE0001
var now = DateTime.UtcNow;
#pragma warning restore DURABLE0001
Suprimir a nivel de proyecto
Agregue una <NoWarn> entrada al .csproj archivo para suprimir una regla para todo el proyecto:
<PropertyGroup>
<NoWarn>$(NoWarn);DURABLE0001</NoWarn>
</PropertyGroup>
Analizador heredado en proceso de .NET
Existe un analizador independiente de Roslyn más antiguo para el modelo de programación en el proceso .NET. Este analizador forma parte del paquete Microsoft.Azure.WebJobs.Extensions.DurableTask y usa un prefijo de regla diferente (DF en lugar de DURABLE). Los dos analizadores son paquetes completamente independientes y no comparten identificadores de regla.
Importante
El modelo de programación en proceso de .NET se está retirando. Use el modelo de trabajo aislado .NET para proyectos nuevos. El analizador en proceso heredado no recibe nuevas reglas ni mejoras.
Para obtener información sobre las reglas del analizador en proceso (DF0101–DF0307), consulte la página de versión Analyzer v0.2.0.