Bonjour.
Je voudrais savoir s'il est possible de calculer de façon statique les chemins d'exécution d'un programme?
J'ai recherché sur Google et je tombe sur beaucoup de thèses et de documents de recherche qui parlent du calcul du chemin d'exécution le plus long, mais ce n'est pas ce que je recherche. Je voudrais être capable de calculer tous les chemins d'exécution possible.
J'ai déja essayé de créer un prototype mais il ne fonctionne pas correctement.
Par exemple si on a :
Les chemins d'exécution possible sont :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 if (a == b) { //Une action A } else { //Une action B } //Une action C if ((a == b) && (b < 2)) { //Une action D }
A -> C -> D,
A -> C,
B -> C.
Mon prototype n'est déja pas capable de détecter que D ne peut suivre C que dans le cas ou l'on a pris la branche qui ne commence pas par A. Comment faire comprendre à mon programme que les deux conditions ont une partie commune? D'autant plus que le nom des variables peut changer voir leur valeur. Unplacé avant la dernière condition change complètement la liste des chemins d'exécution.
Code : Sélectionner tout - Visualiser dans une fenêtre à part b++;
Est ce que tout celà est possible, ou est ce que ça relève de la SF? Et si c'est possible, ou peut-on trouver infos sur la façon de faire ça?
Merci d'avance pour vos réponses.
Partager