CA2015 : Ne pas définir de finaliseurs pour les types dérivés de MemoryManager<T>
Propriété | Value |
---|---|
Identificateur de la règle | CA2015 |
Titre | Ne pas définir de finaliseurs pour les types dérivés de MemoryManager<T> |
Catégorie | Fiabilité |
Le correctif est cassant ou non cassant | Sans rupture |
Activé par défaut dans .NET 8 | À titre d’avertissement |
Cause
Définition de finaliseurs pour les types dérivés de MemoryManager<T>
Description de la règle
L’ajout d’un finaliseur à un type dérivé de MemoryManager<T> est probablement une indication d’un bogue, car cela suggère qu’une ressource native qui aurait pu être distribuée dans un Span<T> est nettoyée, potentiellement pendant qu’elle est encore en cours d’utilisation par Span<T>.
Notes
La classe MemoryManager<T> s’applique à des scénarios avancés. La plupart des développeurs n’ont pas besoin de l’utiliser.
Comment corriger les violations
Pour corriger la violation, supprimez la définition du finaliseur.
class DerivedClass <T> : MemoryManager<T>
{
public override bool Dispose(bool disposing)
{
if (disposing)
{
_handle.Dispose();
}
}
...
// Violation occurs, remove the finalizer to fix the warning.
~DerivedClass() => Dispose(false);
}
Quand supprimer les avertissements
Il est sûr de supprimer une violation de cette règle si l’intention est de créer un finaliseur à des fins de débogage ou de validation.
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 CA2015
// The code that's violating the rule is on this line.
#pragma warning restore CA2015
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.CA2015.severity = none
Pour désactiver la catégorie entière des règles, définissez la gravité de la catégorie sur none
dans le fichier de configuration.
[*.{cs,vb}]
dotnet_analyzer_diagnostic.category-Reliability.severity = none
Pour plus d’informations, consultez Comment supprimer les avertissements de l’analyse de code.
Règles associées
Voir aussi
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour