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.
[^] # Re: 13 % de « code mort »
Posté par CoinKoin . En réponse à la dépêche 985 bugs dans le noyau Linux. Évalué à 6.
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.