CA1852 : scellez les types internes
Propriété | Value |
---|---|
Identificateur de la règle | CA1852 |
Titre | Sceller les types internes |
Catégorie | Performances |
Le correctif est cassant ou non cassant | Sans rupture |
Version introduite | .NET 7 |
Activée par défaut dans .NET 9 | Non |
Cause
Un type qui n’est pas accessible en dehors de son assembly et n’a aucun sous-type dans son assembly conteneur n’est pas marqué comme sealed
(NotInheritable
en Visual Basic).
Description de la règle
Quand un type n’est pas accessible en dehors de son assembly et qu’il n’a aucun sous-type dans son assembly conteneur, il peut être scellé en toute sécurité. Les types de scellage peuvent améliorer les performances. Pour plus d’informations, consultez La proposition de l’analyseur : Types internes/privés seal].
Si vous appliquez System.Runtime.CompilerServices.InternalsVisibleToAttribute à l’assembly en cours d’analyse, cette règle n’indique pas les types qui ne sont pas marqués comme sealed
par défaut, car un champ peut être utilisé par un assembly ami. Pour analyser l’assembly quand même, consultez Configurer le code à analyser.
Comment corriger les violations
Marquez le type comme sealed
(NotInheritable
en Visual Basic).
Exemple
L’extrait de code suivant montre une violation de CA1852 :
internal class C
{ }
Class C
End Class
L’extrait de code suivant corrige la violation :
internal sealed class C
{ }
NotInheritable Class C
End Class
Quand supprimer les avertissements
Vous pouvez supprimer un avertissement en toute sécurité si les performances ne constituent pas un problème.
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 CA1852
// The code that's violating the rule is on this line.
#pragma warning restore CA1852
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.CA1852.severity = none
Pour plus d’informations, consultez Comment supprimer les avertissements de l’analyse de code.
Configurer le code à analyser
Utilisez l’option suivante pour configurer les parties de votre codebase sur lesquelles exécuter cette règle.
Vous pouvez configurer cette option pour cette règle uniquement, pour toutes les règles auxquelles elle s’applique ou pour toutes les règles de cette catégorie (Performances) auxquelles elle s’applique. Pour plus d’informations, consultez Options de configuration des règles de qualité du code.
Ignorer l’attribut InternalsVisibleTo
Par défaut, cette règle est désactivée si l’assembly analysé utilise InternalsVisibleToAttribute pour exposer ses symboles internes. Pour spécifier que la règle doit s’exécuter même si l’assembly est marqué avec InternalsVisibleToAttribute, ajoutez la paire clé-valeur suivante à un fichier .editorconfig dans votre projet :
dotnet_code_quality.CAXXXX.ignore_internalsvisibleto = true
Cette option est disponible à partir de .NET 8.