Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Dayanıklı Görev Roslyn Çözümleyicisi, C# Dayanıklı İşlevler uygulamalarınızda orchestrator kod kısıtlamalarını takip etmenizi sağlayan anlık bir kod analizörüdür. Kodunuz üretime ulaşmadan önce derleme zamanında belirlenimci olmayan API kullanımı, yanlış bağlamalar ve tür uyuşmazlıkları gibi yaygın sorunları algılar.
Çözümleyici Microsoft.Azure.Functions.Worker.Extensions.DurableTask NuGet paketi (v1.6.0 ve üzeri) ile birlikte gelir ve varsayılan olarak etkindir. Ek kurulum gerekmez.
Dayanıklı Görev Roslyn Çözümleyicisi, C# Dayanıklı Görev SDK'sı uygulamalarınızda düzenleyici kod kısıtlamalarını izlemenize yardımcı olan canlı bir kod çözümleyicisidir. Kodunuz üretime ulaşmadan önce derleme zamanında belirlenimci olmayan API kullanımı ve tür uyuşmazlıkları gibi yaygın sorunları algılar.
Çözümleyiciyi kullanmak için NuGet paketini projenize ekleyin Microsoft.DurableTask.Analyzers :
dotnet add package Microsoft.DurableTask.Analyzers
Nasıl çalışır?
Çözümleyici Visual Studio, Visual Studio Code (C# Geliştirme Seti uzantısıyla) ve komut satırında dotnet build sırasında otomatik olarak çalışır. Düzenleyici kodunuzu inceler ve tanılamaları IDE'nizin hata listesinde ve derleme çıkışında uyarı veya hata olarak bildirir.
Açık dosyaları analiz etmek için IDE yapılandırması gerekmez. NuGet paketi projenizde bulunduğu anda çözümleyici etkinleştirilir.
Tip
Varsayılan olarak, Visual Studio yalnızca açtığınız dosyalarda çözümleyicileri çalıştırır. Çözümünüzün tamamını aynı anda analiz etmek için Araçlar>Seçenekler>Metin Düzenleyicisi>C#>Gelişmiş'e gidin ve Arka plan analizi kapsamınıTüm çözüm olarak ayarlayın.
Çözümleyici, çeşitli kurallar için Visual Studio ve VS Code'da otomatik kod düzeltmeleri (hızlı eylemler) sağlar. Örneğin, tek bir tıklamayla ile DateTime.Now değiştirilebilircontext.CurrentUtcDateTime.
Çözümleyici kuralları
Aşağıdaki bölümlerde, Dayanıklı Görev Roslyn Çözümleyicisi ile birlikte gelen ve kategoriye göre gruplandırılmış çözümleyici kuralları listelenmiştir.
Düzenleme kuralları
Bu kurallar, düzenleme yöntemleri içinde belirlenimci olmayan veya güvenli olmayan API kullanımını algılayarak orchestrator kod kısıtlamalarını zorunlu kılar.
| Kural Kimliği | Severity | Description | Kod düzeltmesi |
|---|---|---|---|
| DURABLE0001 | Warning | Orkestrasyonlarda belirlenimsiz DateTime özellikleri (DateTime.Now, DateTime.UtcNow, DateTime.Today, DateTimeOffset.Now, DateTimeOffset.UtcNow) algılar. Bunun yerine context.CurrentUtcDateTime kullanın. |
Evet |
| DURABLE0002 | Warning | Orkestrasyonlarda Guid.NewGuid() algılar. Bunun yerine context.NewGuid() kullanın. |
Evet |
| DURABLE0003 | Warning | Algılar Task.Delay veya Thread.Sleep orkestrasyonlar. Bunun yerine context.CreateTimer kullanın. |
Evet |
| DURABLE0004 | Warning | Düzenlemeler içinde belirlenimci olmayan iş parçacığı ve görev API'lerini (Thread.Start, Task.Run, Task.ContinueWith, TaskFactory.StartNew) algılar. |
No |
| DURABLE0005 | Warning | Doğrudan orkestrasyonlarda kullanılan G/Ç API'lerini (örneğin, HttpClient, Azure Depolama istemcileri) algılar. G/Ç çağrılarını etkinliklere taşıyın. |
No |
| DURABLE0006 | Warning | Orkestrasyonlarda System.Environment API kullanımını (örneğin, GetEnvironmentVariable) algılar. |
No |
| DURABLE0007 | Warning |
CancellationToken Orkestrasyon işlevi imzalarındaki parametreleri algılar. |
No |
| DURABLE0008 | Warning | Orkestrasyon işlevi parametrelerinde bağlı olmayan bağlamaları[OrchestrationTrigger] (örneğin, [EntityTrigger], [DurableClient]) algılar. |
No |
| DURABLE0009 | Bilgi | yerine context.GetInput<T>()bir giriş parametresi kullanılmasını önerir. |
No |
| DURABLE0010 | Warning | Orkestrasyonlarda bağlamsal olmayan ILogger kullanımı algılar. Bunun yerine context.CreateReplaySafeLogger() kullanın. |
No |
| DURABLE0011 | Warning | çağrılmayan while (true)ilişkisiz ContinueAsNew düzenleme döngülerini algılar. olmadan ContinueAsNew, düzenleme geçmişi süresiz olarak büyür. |
No |
| Kural Kimliği | Severity | Description | Kod düzeltmesi |
|---|---|---|---|
| DURABLE0001 | Warning | Orkestrasyonlarda belirlenimsiz DateTime özellikleri (DateTime.Now, DateTime.UtcNow, DateTime.Today, DateTimeOffset.Now, DateTimeOffset.UtcNow) algılar. Bunun yerine context.CurrentUtcDateTime kullanın. |
Evet |
| DURABLE0002 | Warning | Orkestrasyonlarda Guid.NewGuid() algılar. Bunun yerine context.NewGuid() kullanın. |
Evet |
| DURABLE0003 | Warning | Algılar Task.Delay veya Thread.Sleep orkestrasyonlar. Bunun yerine context.CreateTimer kullanın. |
Evet |
| DURABLE0004 | Warning | Düzenlemeler içinde belirlenimci olmayan iş parçacığı ve görev API'lerini (Thread.Start, Task.Run, Task.ContinueWith, TaskFactory.StartNew) algılar. |
No |
| DURABLE0005 | Warning | Doğrudan orkestrasyonlarda kullanılan G/Ç API'lerini (örneğin, HttpClient, Azure Depolama istemcileri) algılar. G/Ç çağrılarını etkinliklere taşıyın. |
No |
| DURABLE0006 | Warning | Orkestrasyonlarda System.Environment API kullanımını (örneğin, GetEnvironmentVariable) algılar. |
No |
| DURABLE0009 | Bilgi | yerine context.GetInput<T>()bir giriş parametresi kullanılmasını önerir. |
No |
| DURABLE0010 | Warning | Orkestrasyonlarda bağlamsal olmayan ILogger kullanımı algılar. Bunun yerine context.CreateReplaySafeLogger() kullanın. |
No |
| DURABLE0011 | Warning | çağrılmayan while (true)ilişkisiz ContinueAsNew düzenleme döngülerini algılar. olmadan ContinueAsNew, düzenleme geçmişi süresiz olarak büyür. |
No |
Uyarı
Kurallar DURABLE0007, DURABLE0008 ve DURABLE1001-DURABLE1003 yalnızca Azure İşlevleri için geçerlidir ve tek başına Dayanıklı Görev SDK'sı çözümleyicisine dahil değildir.
Bağlama kuralları
Bu kurallar tetikleyici ve istemci bağlamalarının doğru parametre türlerine uygulandığını doğrular.
| Kural Kimliği | Severity | Description | Kod düzeltmesi |
|---|---|---|---|
| DURABLE1001 | Error |
[OrchestrationTrigger] yalnızca TaskOrchestrationContext parametrelere uygulanmasını sağlar. |
Evet |
| DURABLE1002 | Error |
[DurableClient] yalnızca DurableTaskClient parametrelere uygulanmasını sağlar. |
Evet |
| DURABLE1003 | Error |
[EntityTrigger] yalnızca TaskEntityDispatcher parametrelere uygulanmasını sağlar. |
Evet |
Etkinlik kuralları
Bu kurallar, etkinlik ve alt düzenleme çağrılarında tür uyuşmazlıklarını ve çözümlenmemiş adları denetler.
| Kural Kimliği | Severity | Description | Kod düzeltmesi |
|---|---|---|---|
| DURABLE2001 | Warning | Etkinlik çağrıları ve etkinlik tanımları arasındaki giriş türü uyuşmazlıklarını algılar. | No |
| DURABLE2002 | Warning | Etkinlik çağrıları ve etkinlik tanımları arasındaki çıkış türü uyuşmazlıklarını algılar. | No |
| DURABLE2003 | Bilgi | Bir etkinlik çağrısının derleme içinde tanımlı herhangi bir etkinlikle eşleşmeyen bir isme referans verdiğini bildirir. | No |
| DURABLE2004 | Bilgi | Bir alt orkestrasyon çağrısının derlemede tanımlı herhangi bir düzenleyiciyle eşleşmeyen bir isme başvurduğunu bildirir. | No |
Daha fazla bilgi için GitHub analyzer sürüm notlarına bakın.
Roslyn Çözümleyicisi uyarılarını gizleme
Proje, dosya veya satır düzeyinde çözümleyici tanılamalarını gizleyebilirsiniz.
.editorconfig ile bastır
Kuralın önem derecesini değiştirmek veya tamamen devre dışı bırakmak için dosyanıza .editorconfig bir girdi ekleyin:
[*.cs]
dotnet_diagnostic.DURABLE0001.severity = none
Geçerli önem derecesi değerleri : error, warning, suggestion, silentve none.
Satır içi bastır #pragma ile
Kodun bir bölümünde belirli bir uyarıyı engellemek için kullanın #pragma warning disable :
#pragma warning disable DURABLE0001
var now = DateTime.UtcNow;
#pragma warning restore DURABLE0001
Proje düzeyinde gizleme
Projenin tamamı için bir <NoWarn> kuralı engellemek için dosyanıza .csproj bir girdi ekleyin:
<PropertyGroup>
<NoWarn>$(NoWarn);DURABLE0001</NoWarn>
</PropertyGroup>
Eski .NET işlem içi çözümleyicisi
.NET işlem içi programlama modeli için ayrı ve eski bir Roslyn çözümleyicisi vardır. Bu çözümleyici Microsoft.Azure.WebJobs.Extensions.DurableTask paketinin bir parçasıdır ve farklı bir kural ön eki kullanır (DF yerine DURABLE). İki çözümleyici tamamen ayrı paketlerdir ve kural kimliklerini paylaşmaz.
Important
.NET işlem içi programlama modeli kullanımdan kaldırılıyor. Yeni projeler için .NET yalıtılmış çalışan modelini kullanın. Eski işlem içi çözümleyici yeni kurallar veya iyileştirmeler almaz.
İşlem içi çözümleyici kuralları (DF0101–DF0307) hakkında bilgi için Analyzer v0.2.0 sürüm sayfasına bakın.