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

Contenu supprimé Contenu ajouté
Thierry46 (discussion | contributions)
Début rédaction
(Aucune différence)

Version du 4 juin 2008 à 21:30

L'application de ces conseils suivants rendent les logiciels plus robustes : plus tolérants aux fautes.

switch et clause default

Les instructions de choix multiple : (switch, case...) doivent comporter une clause pour les valeurs non testées individuellement (default);

Justification

Permet de traiter les cas non prévus explicitement en détectant les cas dégradés dus à des valeurs inattendues.

Ces valeurs peuvent provenir :

  • de modifications non contrôlées d’une autre partie du code.
  • d'un mauvais interfaçage de la fonction.
  • d'une valeur non prévue reçue ou lue
  • pour un appel système, à la compilation et de l'exécution sur un système non prévu.

Exemple (extrait)

//...
  while ((optc = getopt_long (argc, argv, "htvm", longopts, (int *) 0)) != EOF)
    {
      switch (optc)
	{
	case 'v':
	  v = 1;
	  break;
	case 'h':
	  h = 1;
	  break;
	case 'm':
	  m = 1;
	  break;
	default:
	  unknown = 1;
	  break;
	}
    }

Outils

  • Les outils de vérification statique, comme splint, émettent un warning lorsqu'une clause default est oubliée.
  • 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.