« Conseils de codage en C/Robustesse des programmes » : différence entre les versions

Aller à la navigation Aller à la recherche
Numérotation des exigences : c_rob_1 à c_rob_7
(Utiliser le mécanisme d'assertion)
(Numérotation des exigences : c_rob_1 à c_rob_7)
L'application de ces conseils suivants rendent les logiciels plus robustes : plus tolérants aux fautes.
 
== Compilation stricte et outils qualité (c_rob_1)==
Il faut compiler en utilsant les options les plus strictes, qui demandent au compilateur d’indiquer tous les avertissements et toutes les erreurs.
 
*Outil de contrôle dynamique (gestion des ressources à l'exécution) comme leaks, [[w:en:IBM Rational Purify|purify]].
 
== switch et clause default (c_rob_2) ==
Les instructions de choix multiple : (''switch'', ''case''...) doivent comporter une clause pour les valeurs non testées individuellement (''default'');
 
* Un comptage des mots clés des mots switch et default dans un éditeur de texte ou avec les outils '''grep''' et '''wc''' d'UNIX.
 
==Test des codes retours (c_rob_3)==
Les codes de retour des fonctions et surtout des appels systèmes doivent être testés.
 
Les outils de contrôle statiques comme '''splint''' émettent un warning lorsqu'un codes retour de fonction n'est pas testé ou explicitement ignoré.
 
== Gestion des ressources (c_rob_4)==
Toute ressource allouée (mémoire, fichier ouvert, outil de synchronisation, ...) doit obligatoirement être libérée quoi qu'il se passe, erreur ou non.
 
Le traitement du fichier est délégué dans une fonction séparée. Celle-ci pouvant alors retourner un code d'erreur avec l'instruction <tt>return</tt> sans se soucier de fermer le fichier ouvert, vu qu'il sera fermé juste après l'appel à la fonction.
 
==Contrôle des arguments (c_rob_5)==
Avant de commencer un traitement, un module doit effectuer un contrôle minimum sur les valeurs de ses arguments (pointeur NULL, valeur hors domaine de calcul, chaîne de caractère correcte).
 
Évite les erreurs provenant de la poursuite du traitement avec des données d’entrée invalides.
 
==Remontée des erreurs (c_rob_6)==
Lorsqu’il y a une erreur, le programme ou la fonction doit générer un code spécifique à l’erreur sur la sortie réservée aux erreurs.
 
Traitement efficace des retours d'erreurs qui peuvent en étant considérée comme des valeurs de sortie normale entraîner des catastrophes.
 
==Utiliser le mécanisme d'assertion (c_rob_7)==
Les assertions sont des tests à placer dans vos programmes. C'est une condition qui doit être obligatoirement vérifiée. Dans le cas contraire le programme s'arrêtera.
 
227

modifications

Menu de navigation