CA2012: ValueTasks'i doğru kullanma
Özellik | Değer |
---|---|
Kural Kimliği | CA2012 |
Başlık | ValueTask’leri doğru kullanın |
Kategori | Güvenilirlik |
Hataya neden olan veya bozulmayan düzeltme | Hataya neden olmayan |
.NET 9'da varsayılan olarak etkin | Öneri olarak |
Neden
Üye ValueTask çağrısından döndürülen bir örnek, özel durumlara, bozulmaya veya düşük performansa yol açabilecek şekilde kullanılır.
Kural açıklaması
ValueTask üye çağrılarından döndürülen örneklerin doğrudan beklenmeleri amaçlanmıştır. Bir ValueTask'i birden çok kez kullanma veya tamamlanmadan önce sonucuna doğrudan erişme girişimi bir özel durum veya bozulmaya neden olabilir. Böyle bir ValueTask'in yoksayılması büyük olasılıkla işlevsel bir hatanın göstergesidir ve performansı düşürebilir.
İhlalleri düzeltme
Genel olarak, ValueTasks atılması veya yerel değişkenler veya alanlar gibi diğer konumlarda depolanması yerine doğrudan beklenmelidir.
Uyarıların ne zaman bastırılması gerekiyor?
Rastgele üye çağrılarından döndürülen nesneler için ValueTask
, çağıranın ValueTask
bir kez ve yalnızca bir kez tüketilmesi gerektiğini (örneğin, bekleniyor) varsayması gerekir. Ancak geliştirici, çağrılan üyeyi de denetlerse ve uygulaması hakkında tam bilgiye sahipse, örneğin dönüş ValueTask
her zaman bir Task nesneyi sarmalarsa, geliştirici uyarıyı gizlemenin güvenli olduğunu biliyor olabilir.
Uyarıyı gizleme
Yalnızca tek bir ihlali engellemek istiyorsanız, kuralı devre dışı bırakmak ve sonra yeniden etkinleştirmek için kaynak dosyanıza ön işlemci yönergeleri ekleyin.
#pragma warning disable CA2012
// The code that's violating the rule is on this line.
#pragma warning restore CA2012
Bir dosya, klasör veya projenin kuralını devre dışı bırakmak için, yapılandırma dosyasındaki önem derecesini none
olarak ayarlayın.
[*.{cs,vb}]
dotnet_diagnostic.CA2012.severity = none
Daha fazla bilgi için bkz . Kod analizi uyarılarını gizleme.