Qualité de code — Nullable, Analyseurs, StyleCop
Notions théoriques
Nullable Reference Types (C# 8+)
Avant C# 8, toute variable de type référence (string, classe...) pouvait implicitement valoir null, sans que le compilateur ne vous avertisse. Le résultat : des NullReferenceException en production.
Depuis C# 8, les Nullable Reference Types permettent de distinguer :
string: ne peut jamais être null (le compilateur le garantit)string?: peut être null (vous devez le vérifier explicitement)
Pour activer cette fonctionnalité dans tout le projet :
<!-- MonProjet.csproj -->
<PropertyGroup>
<Nullable>enable</Nullable>
</PropertyGroup>
Ou fichier par fichier :
#nullable enable
public class Personnage
{
public string Nom { get; set; } = ""; // jamais null
public string? Description { get; set; } // peut être null
}
Opérateurs liés aux nulls
| Opérateur | Nom | Exemple |
|---|---|---|
?. | Déréférencement conditionnel | personnage?.Nom (retourne null si personnage est null) |
?? | Coalescence nulle | personnage?.Nom ?? "Inconnu" (valeur par défaut si null) |
??= | Assignation si null | description ??= "Aucune description"; |
! | Null-forgiving | string nom = personnage!.Nom; (supprime le warning) |
L'opérateur ! (null-forgiving) doit être utilisé avec parcimonie : il dit au compilateur "je garantis que ce n'est pas null", mais si vous avez tort, vous aurez quand même une NullReferenceException à l'exécution.
Roslyn Analyzers
Les Roslyn Analyzers sont des outils d'analyse statique intégrés à la chaîne de compilation .NET. En .NET 8, un ensemble d'analyseurs est activé par défaut et signale des problèmes de :
- Style : nommage des variables, propriétés, méthodes
- Performance :
stringconcaténation dans une boucle,StringBuilderrecommandé - Fiabilité :
awaitoublié,usingmanquant sur lesIDisposable
Ces warnings apparaissent dans Visual Studio et dans la sortie de dotnet build.
StyleCop
StyleCop.Analyzers applique un ensemble de règles de style de code (nommage, espaces, documentation XML). Il se configure via un fichier .editorconfig.
Installation :
dotnet add package StyleCop.Analyzers
Exemple de règles StyleCop courantes :
- Toutes les méthodes publiques doivent avoir un commentaire XML (
///) - Les
usingdoivent être à l'intérieur du namespace - Les accolades ouvrantes doivent être sur une nouvelle ligne