Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Durable Task Roslyn Analyzer je živý analyzátor kódu, který vám pomůže sledovat omezení kódu orchestrátoru v aplikacích Durable Functions jazyka C#. Detekuje běžné problémy, jako je nedeterministické použití rozhraní API, nesprávné vazby a neshody typů v době sestavení, než váš kód dosáhne produkčního prostředí.
Analyzátor je součástí balíčku Microsoft.Azure.Functions.Worker.Extensions.DurableTask NuGet (v1.6.0 a novější) a je ve výchozím nastavení povolený. Nevyžaduje se žádné další nastavení.
Durable Task Roslyn Analyzer je analyzátor živého kódu, který vám pomůže sledovat omezení kódu orchestrátoru v aplikacích C# Durable Task SDK. Zjistí běžné problémy, jako je nedeterministické použití rozhraní API a neshody typů v době sestavení, než váš kód dosáhne produkčního prostředí.
Pokud chcete použít analyzátor, přidejte do Microsoft.DurableTask.Analyzers projektu balíček NuGet:
dotnet add package Microsoft.DurableTask.Analyzers
Jak to funguje
Analyzátor běží automaticky v Visual Studio, Visual Studio Code (s rozšířením C# Dev Kit) a během dotnet build na příkazovém řádku. Kontroluje kód orchestrátoru a hlásí diagnostiku jako upozornění nebo chyby v seznamu chyb integrovaného vývojového prostředí a ve výstupu sestavení.
K analýze otevřených souborů není nutná žádná konfigurace integrovaného vývojového prostředí (IDE). Analyzátor se aktivuje, jakmile se balíček NuGet nachází ve vašem projektu.
Tip
Ve výchozím nastavení Visual Studio spouští analyzátory jenom u souborů, které máte otevřené. Pokud chcete analyzovat celé řešení najednou, přejděte doEditoru>možností>nástroje>C#>Upřesnit a nastavte obor analýzy pozadí na Celé řešení.
Analyzátor také poskytuje opravyautomatického kódu (rychlé akce) v Visual Studio a VS Code. Může se například nahradit DateTime.Nowcontext.CurrentUtcDateTime jedním kliknutím.
Pravidla analyzátoru
Následující části obsahují seznam pravidel analyzátoru, která jsou dodávána pomocí analyzátoru Durable Task Roslyn Analyzer seskupené podle kategorie.
Pravidla orchestrace
Tato pravidla vynucují omezení kódu orchestrátoru detekcí nedeterministického nebo nebezpečného použití rozhraní API uvnitř metod orchestrace.
| ID pravidla | Závažnost | Description | Oprava kódu |
|---|---|---|---|
| DURABLE0001 | Warning | Rozpozná nedeterministické DateTime vlastnosti (DateTime.Now, DateTime.UtcNow, DateTime.TodayDateTimeOffset.Now, , DateTimeOffset.UtcNow) v orchestracích. Místo toho použijte context.CurrentUtcDateTime. |
Ano |
| DURABLE0002 | Warning | Detekuje Guid.NewGuid() v orchestracích. Místo toho použijte context.NewGuid(). |
Ano |
| DURABLE0003 | Warning | Detekuje Task.Delay nebo Thread.Sleep v orchestracích. Místo toho použijte context.CreateTimer. |
Ano |
| DURABLE0004 | Warning | Detekuje nedeterministické API vláken a úloh (Thread.Start, Task.Run, Task.ContinueWith, TaskFactory.StartNew) v orchestracích. |
Ne |
| DURABLE0005 | Warning | Detekuje rozhraní API vstupně-výstupních operací (například HttpClient, klienti Azure Storage) použitá přímo v orchestracích. Přesuňte vstupně-výstupní volání do aktivit |
Ne |
| DURABLE0006 | Warning |
System.Environment Detekuje využití rozhraní API (napříkladGetEnvironmentVariable) v orchestracích. |
Ne |
| DURABLE0007 | Warning | Rozpozná parametry v podpisech funkcí orchestrace. | Ne |
| DURABLE0008 | Warning | Detekuje ne-vazby[OrchestrationTrigger] (například [EntityTrigger], [DurableClient]) v parametrech orchestrační funkce. |
Ne |
| DURABLE0009 | Informace | Navrhuje použití vstupního parametru context.GetInput<T>()místo . |
Ne |
| DURABLE0010 | Warning | Detekuje nekontextové ILogger použití v orchestracích. Místo toho použijte context.CreateReplaySafeLogger(). |
Ne |
| DURABLE0011 | Warning | Detekuje nevázané while (true) smyčky orchestrace, které nevolají ContinueAsNew. Bez ContinueAsNew, historie orchestrace roste neomezeně dlouho. |
Ne |
| ID pravidla | Závažnost | Description | Oprava kódu |
|---|---|---|---|
| DURABLE0001 | Warning | Rozpozná nedeterministické DateTime vlastnosti (DateTime.Now, DateTime.UtcNow, DateTime.TodayDateTimeOffset.Now, , DateTimeOffset.UtcNow) v orchestracích. Místo toho použijte context.CurrentUtcDateTime. |
Ano |
| DURABLE0002 | Warning | Detekuje Guid.NewGuid() v orchestracích. Místo toho použijte context.NewGuid(). |
Ano |
| DURABLE0003 | Warning | Detekuje Task.Delay nebo Thread.Sleep v orchestracích. Místo toho použijte context.CreateTimer. |
Ano |
| DURABLE0004 | Warning | Detekuje nedeterministické API vláken a úloh (Thread.Start, Task.Run, Task.ContinueWith, TaskFactory.StartNew) v orchestracích. |
Ne |
| DURABLE0005 | Warning | Detekuje rozhraní API vstupně-výstupních operací (například HttpClient, klienti Azure Storage) použitá přímo v orchestracích. Přesuňte vstupně-výstupní volání do aktivit |
Ne |
| DURABLE0006 | Warning |
System.Environment Detekuje využití rozhraní API (napříkladGetEnvironmentVariable) v orchestracích. |
Ne |
| DURABLE0009 | Informace | Navrhuje použití vstupního parametru context.GetInput<T>()místo . |
Ne |
| DURABLE0010 | Warning | Detekuje nekontextové ILogger použití v orchestracích. Místo toho použijte context.CreateReplaySafeLogger(). |
Ne |
| DURABLE0011 | Warning | Detekuje nevázané while (true) smyčky orchestrace, které nevolají ContinueAsNew. Bez ContinueAsNew, historie orchestrace roste neomezeně dlouho. |
Ne |
Note
Pravidla DURABLE0007, DURABLE0008 a DURABLE1001-DURABLE1003 se vztahují pouze na Azure Functions a nejsou součástí samostatného analyzátoru sady Durable Task SDK.
Pravidla vazeb
Tato pravidla ověřují, že aktivační události a vazby klientů se použijí na správné typy parametrů.
| ID pravidla | Závažnost | Description | Oprava kódu |
|---|---|---|---|
| DURABLE1001 | Error | Zajišťuje, že [OrchestrationTrigger] je aplikováno pouze na parametry TaskOrchestrationContext. |
Ano |
| DURABLE1002 | Error | Zajišťuje, že [DurableClient] je aplikováno pouze na parametry DurableTaskClient. |
Ano |
| DURABLE1003 | Error | Zajišťuje, že [EntityTrigger] je aplikováno pouze na parametry TaskEntityDispatcher. |
Ano |
Pravidla aktivit
Tato pravidla kontrolují neshody typů a nevyřešené názvy ve voláních aktivit a dílčí orchestrace.
| ID pravidla | Závažnost | Description | Oprava kódu |
|---|---|---|---|
| DURABLE2001 | Warning | Detekuje neshody vstupního typu mezi vyvoláním aktivit a definicemi aktivit. | Ne |
| DURABLE2002 | Warning | Detekuje neshody typu výstupu mezi vyvoláním aktivit a definicemi aktivit. | Ne |
| DURABLE2003 | Informace | Zaznamenává, když volání aktivity odkazuje na název, který neodpovídá žádné definované aktivitě v kompilaci. | Ne |
| DURABLE2004 | Informace | Hlásí, když podorchestrační volání odkazuje na název, který neodpovídá žádnému definovanému orchestrátorem v kompilaci. | Ne |
Další informace najdete v poznámkách k verzi analyzátoru na GitHubu.
Potlačení upozornění analyzátoru Roslyn
Diagnostiku analyzátoru můžete potlačit na úrovni projektu, souboru nebo řádku.
Potlačit pomocí .editorconfig
Přidejte do .editorconfig souboru položku, abyste změnili závažnost pravidla nebo ji úplně zakázali:
[*.cs]
dotnet_diagnostic.DURABLE0001.severity = none
Platné hodnoty závažnosti jsou error, warning, suggestion, silent, a none.
Potlačte vložený text pomocí #pragma
Slouží #pragma warning disable k potlačení konkrétního upozornění v části kódu:
#pragma warning disable DURABLE0001
var now = DateTime.UtcNow;
#pragma warning restore DURABLE0001
Potlačení na úrovni projektu
<NoWarn> Přidejte do .csproj souboru položku, která potlačí pravidlo pro celý projekt:
<PropertyGroup>
<NoWarn>$(NoWarn);DURABLE0001</NoWarn>
</PropertyGroup>
Analyzátor starší verze .NET pro práci v procesu
Pro programovací model .NET v procesu existuje samostatný starší analyzátor Roslyn. Tento analyzátor je součástí balíčku Microsoft.Azure.WebJobs.Extensions.DurableTask a používá jinou předponu pravidla (DF místo DURABLE). Dva analyzátory jsou zcela oddělené balíčky a nesdílejí ID pravidel.
Important
Support pro model v procesu skončí 10. listopadu 2026. Důrazně doporučujeme migrovat aplikace do izolovaného modelu pracovních procesů pro plnou podporu.
Starší verze in-process analyzátoru nepřijímá nová pravidla ani vylepšení.
Informace o pravidlech analyzátoru v procesu (DF0101–DF0307) najdete na stránce verze Analyzer v0.2.0.