CA2252 : Accepter les fonctionnalités d’évaluation avant de les utiliser
Propriété | Value |
---|---|
Identificateur de la règle | CA2252 |
Titre | Accepter les fonctionnalités d’évaluation avant de les utiliser |
Catégorie | Utilisation |
Le correctif est cassant ou non cassant | Sans rupture |
Activée par défaut dans .NET 9 | En tant qu’erreur |
Cause
Un client utilise des API ou des types en préversion dans son assembly sans les avoir explicitement acceptés localement ni au niveau du module ou de l’assembly.
Description de la règle
Lorsqu’une API ou un assembly décoré de l’attribut RequiresPreviewFeaturesAttribute est consommé, cette règle vérifie si le site d’appel a accepté les fonctionnalités d’évaluation, ce qui est le cas dans chacune des situations suivantes :
- Il se trouve dans l’étendue d’une annotation
RequiresPreviewFeaturesAttribute
. - Il fait partie d’un assembly ou d’un module qui a déjà accepté les fonctionnalités d’évaluation.
L’illustration suivante montre un exemple de diagnostic CA2252.
Lib
est ici un type en préversion construit dans la méthode Main
. Main
n’étant pas elle-même annotée comme méthode en préversion, des diagnostics sont produits sur les deux appels de constructeurs qui se trouvent à l’intérieur de Main
.
Comment corriger les violations
Il existe deux façons de corriger les violations :
Placez un site d’appel dans l’étendue d’une annotation en annotant son parent avec
RequiresPreviewFeaturesAttribute
. Dans l’exemple précédent,APreviewMethod
est annoté avec l’attributRequiresPreviewFeatures
, de sorte que l’analyseur ignore l’utilisation du type en préversion dansAPreviewMethod
. Il s’ensuit que les appelants deAPreviewMethod
devront effectuer un exercice similaire.Vous pouvez également accepter les fonctionnalités d’évaluation au niveau d’un assembly ou d’un module. Cela indique à l’analyseur que l’utilisation du type en préversion dans l’assembly est souhaitée. Par conséquent, aucune erreur n’est générée par cette règle. Il s’agit de la méthode recommandée pour consommer les dépendances en préversion. Pour activer les fonctionnalités d’évaluation dans l’ensemble de l’assembly, définissez la propriété EnablePreviewFeatures dans un fichier
.csproj
:
<PropertyGroup>
<EnablePreviewFeatures>true</EnablePreviewFeatures>
</PropertyGroup>
Quand supprimer les avertissements
Il n’est recommandé de supprimer les avertissements de cette règle que dans les cas d’usage avancés où les diagnostics doivent être explicitement désactivés sur les API. Vous devez alors assumer la responsabilité de marquer les API en préversion de manière appropriée. Par exemple, prenons un cas où un type existant implémente une nouvelle interface en préversion. Étant donné que l’ensemble du type ne peut pas être marqué comme étant en préversion (pour des raisons de compatibilité descendante), le diagnostic autour de la définition du type peut être désactivé localement. En outre, vous devez indiquer que les implémentations d’interface sont en préversion. Le type existant peut être utilisé comme avant, mais les appels aux nouvelles méthodes d’interface feront l’objet de diagnostics. System.Private.CoreLib.csproj utilise cette technique pour exposer des fonctionnalités mathématiques génériques sur des types numériques tels que Int32
, Double
et Decimal
.
Les images suivantes montrent comment désactiver localement l’analyseur CA2252.
Remarque
Vous pouvez voir des avertissements de faux positifs de cette règle si tous les éléments suivants s’appliquent :
- Vous utilisez Visual Studio 2022 version 17.5 ou ultérieure avec une version antérieure du Kit de développement logiciel (SDK) .NET, c’est-à-dire .NET 6 ou version antérieure.
- Vous utilisez les analyseurs du Kit de développement logiciel (SDK) .NET 6 ou d’une version antérieure des packages d’analyseurs, comme Microsoft.CodeAnalysis.FxCopAnalyzers.
Dans ce cas, vous pouvez sans risque supprimer un avertissement faux positif. Les faux positifs sont dus à un changement cassant dans le compilateur C#. Envisagez d’utiliser un analyseur plus récent qui contient le correctif pour les avertissements faux positifs. Effectuez une mise à niveau vers Microsoft.CodeAnalysis.NetAnalyzers version 7.0.0-préversion1.22464.1 ou ultérieure ou utilisez les analyseurs du Kit de développement logiciel (SDK) .NET 7.
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 CA2252
// The code that's violating the rule is on this line.
#pragma warning restore CA2252
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.CA2252.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-Usage.severity = none
Pour plus d’informations, consultez Comment supprimer les avertissements de l’analyse de code.