CA2012 : Utiliser correctement ValueTasks
Propriété | Value |
---|---|
Identificateur de la règle | CA2012 |
Titre | Utiliser correctement ValueTasks |
Catégorie | Fiabilité |
Le correctif est cassant ou non cassant | Sans rupture |
Activé par défaut dans .NET 8 | Comme suggestion |
Cause
Une instance ValueTask retournée par un appel de membre est utilisée d’une manière susceptible d’entraîner des exceptions, des altérations ou des performances médiocres.
Description de la règle
Les instances ValueTask retournées par les appels de membres sont destinées à être directement attendues. Les tentatives d’utilisation d’une ValeurTask plusieurs fois ou d’accéder directement au résultat d’un utilisateur avant qu’il soit connu pour être terminé peuvent entraîner une exception ou une altération. Ignorer une telle ValeurTask est probablement une indication d’un bogue fonctionnel et peut dégrader les performances.
Comment corriger les violations
En général, les tâches ValueTasks doivent être directement attendues plutôt qu’ignorées ou stockées dans d’autres emplacements, tels que des variables ou des champs locaux.
Quand supprimer les avertissements
Pour les objets ValueTask
retournés à partir d’appels de membres arbitraires, l’appelant doit partir du principe que le ValueTask
doit être consommé (par exemple, attendu) une et une seule fois. Toutefois, si le développeur contrôle également le membre appelé et qu’il a une connaissance complète de son implémentation, il peut savoir qu’il est sans risque de supprimer l’avertissement, par exemple si le ValueTask
de retour encapsule toujours un objet Task.
Supprimer un avertissement
Si vous voulez supprimer une seule violation, ajoutez des directives de préprocesseur à votre fichier source pour désactiver et réactiver la règle.
#pragma warning disable CA2012
// The code that's violating the rule is on this line.
#pragma warning restore CA2012
Pour désactiver la règle sur un fichier, un dossier ou un projet, définissez sa gravité sur none
dans le fichier de configuration.
[*.{cs,vb}]
dotnet_diagnostic.CA2012.severity = none
Pour plus d’informations, consultez Comment supprimer les avertissements de l’analyse de code.