La version à venir de la plate-forme de développement logiciel .NET 5 de Microsoft pourra produire des avertissements sûrs pour le compilateur C# et trouver automatiquement les bogues latents. Appelée AnalysisLevel, cette récente fonctionnalité de .NET 5 pourra émettre des alertes pour prévenir les développeurs que quelque chose ne va pas dans le code. Par défaut, la fonctionnalité AnalysisLevel sera fixée à 5 pour tous les projets ciblant .NET 5, et permettra une nouvelle analyse du langage du compilateur. Cela signifie que les développeurs verront plus d’alertes et de suggestions pour corriger les erreurs.

Cela fait des années que Microsoft cherche à introduire des fonctionnalités pour prévenir les développeurs d’un problème dans un projet de codage C#, depuis les erreurs de codage courantes jusqu’à une mauvaise utilisation des API. Mais, jusqu’à présent, l’entreprise avait hésité à le faire pour éviter des changements de rupture. Avec AnalysisLevel, les avertissements pour les modèles sont introduits de manière sûre.

.NET 5 est actuellement en phase de prévisualisation, la version de production étant prévue pour novembre. Un bulletin publié le 27 août par Microsoft précise le projet d’alertes pour le compilateur C#. Il indique notamment que tous les nouveaux projets .NET pourront utiliser la fonctionnalité AnalysisLevel 5.

Quelques exemples d’alertes

Voici quelques exemples d’alertes et de suggestions introduites par AnalysisLevel 5 dans .NET 5 :

- CA1416 : cet avertissement d'interopérabilité prévient que le code ne fonctionne pas sur toutes les plateformes.

- CA2247 : cet avertissement d’usage est émis pour préserver les détails de la pile.

- CSO185 : cette erreur de correction indique au développeur de ne pas autoriser les verrous sur les non-références de types.

Auparavant, .NET nécessitait l'installation de paquets NuGet ou d'autres outils autonomes pour permettre une analyse approfondie du code. Le SDK .NET 5 fournit automatiquement cette analyse. Par la suite, Microsoft prévoit de créer une nouvelle fonction AnalysisLevel pour chaque version de .NET, ce qui permettra de garantir qu’un niveau d'analyse donné représente toujours le même ensemble de défauts d'analyse - les règles et leurs gravités. L'activation par défaut d'une règle existante sera possible dans une prochaine version de la fonctionnalité AnalysisLevel sans qu’il soit nécessaire de modifier le niveau existant. Cela permettra de garantir qu'un projet donné produise le même avertissement, quelle que soit la version du SDK, sauf si le projet utilise une preview ou la dernière version.