CA1505 : Éviter le code impossible à maintenir
Propriété | Value |
---|---|
Identificateur de la règle | CA1505 |
Titre | Éviter le code impossible à maintenir |
Catégorie | Maintenabilité |
Le correctif est cassant ou non cassant | Sans rupture |
Seuil par défaut | 10 |
Activée par défaut dans .NET 9 | Non |
Cause
Un type, une méthode, un champ, une propriété ou un événement a une valeur d’indice de maintenabilité faible.
Description de la règle
La règle signale une violation lorsque l’indice de maintenabilité d’un type, d’une méthode, d’un champ, d’une propriété ou d’un événement est inférieur à 10. Toutefois, vous pouvez configurer le seuil.
L’indice de maintenabilité est calculé à l’aide des mesures suivantes : lignes de code, volume du programme et complexité cyclomatique. (Le volume du programme est une mesure de la difficulté de compréhension d’un type ou d’une méthode basé sur le nombre d’opérateurs et d’opérandes dans le code. La complexité cyclomatique est une mesure de la complexité structurelle du type ou de la méthode. Pour en savoir plus sur les métriques de code, consultez Mesurer la complexité et la maintenabilité du code managé.
Un faible indice de maintenabilité indique qu'un type ou qu'une méthode est probablement difficile à maintenir et qu'il/elle se prête bien à une nouvelle conception.
Comment corriger les violations
Pour résoudre cette violation, reconcevez le type ou la méthode et essayez de le diviser en types ou méthodes plus petits et plus ciblés.
Quand supprimer les avertissements
Vous pouvez supprimer cet avertissement lorsque le type ou la méthode ne peut pas être fractionné ou est considéré comme pouvant être maintenu malgré sa grande taille.
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.
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 CA1505
// The code that's violating the rule is on this line.
#pragma warning restore CA1505
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.CA1505.severity = none
Pour plus d’informations, consultez Comment supprimer les avertissements de l’analyse de code.
Configurer le seuil
Vous pouvez configurer le seuil auquel cette règle se déclenche et les types de symboles à analyser. Les types de symboles autorisés sont les suivants :
Assembly
Namespace
Type
Method
Field
Event
Property
Créez un fichier texte nommé CodeMetricsConfig.txt.
Ajoutez le seuil souhaité au fichier texte au format suivant :
CA1505: 20
Dans cet exemple, la règle est configurée pour se déclencher lorsque l’indice de maintenabilité d’un type, d’une méthode, d’un champ, d’une propriété ou d’un événement est inférieur à 20.
CA1505(Method): 5 CA1505(Type): 15
Dans cet exemple, la règle est configurée pour être déclenchée lorsque l’indice de maintenabilité d’une méthode est inférieur à 5 ou que l’indice de maintenabilité d’un type est inférieur à 15. Avec ce fichier config, la règle continue à marquer les champs, les propriétés et les événements dont l’indice de maintenabilité est inférieur au seuil par défaut (10).
Dans le fichier projet, marquez l’action de génération du fichier config comme AdditionalFiles. Par exemple :
<ItemGroup> <AdditionalFiles Include="CodeMetricsConfig.txt" /> </ItemGroup>