• [^] # Re: 13 % de « code mort »

    Posté par . En réponse à la dépêche 985 bugs dans le noyau Linux. Évalué à 6.

    Si ton code est mort, il est mort.
    Ben non, justement... Si ton code est mort, cela signifie que tu estimes qu'il
     ne sera jamais exécuté, pas qu'il ne le sera jamais dans l'absolu. 
    Considère l'exemple suivant : 
    int main(int argc, char** argv){
     if((argc==1)||(argc>=3)) {
     fprintf(stderr,"usage : truc [fichier]\n");
     exit(1);
     fprintf(stderr,"Code mort 1\n");
     }
     else if(argc==2){
     fprintf(stdout,"Truc a été bien appelé!\n");
     exit(0);
     fprintf(stderr,"Code mort 2\n");
     }
     else{
     fprintf(stderr,"Code mort 3\n");
     }
    }
    Il y a trois morceaux de code mort, dont on peut raisonnablement espérer 
    qu'ils ne seront jamais exécutés. Malheureusement, ce n'est pas vraiment le
     cas : 
    -Si on se lie avec des bibliothèques non-standards, exit() peut être bogué et 
    revenir;
    -La troisième portion n'est de toutes façons pas morte, puisqu'on peut avoir 
    argc==0 (même si c'est assez rare).
    Donc le programmeur a inclus du code "mort", pour détecter des problèmes,
     et ce code peut effectivement être exécuté dans certains cas.