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é par défaut dans .NET 8 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.

Code editor with CA2252 warning.

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’attribut RequiresPreviewFeatures, de sorte que l’analyseur ignore l’utilisation du type en préversion dans APreviewMethod. Il s’ensuit que les appelants de APreviewMethod 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.

CA2252 - Suppress Detect Preview Feature Diagnostic

CA2252 - Mark Interface Implementations Explicitly

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.

Voir aussi