Mon logiciel d'affichage de graphes d'appel:

    - il donne une vision complète du logiciel, au premier coup d'oeuil,
    - il montre ce qui est conçu et ce qui ne l'est pas (fonctions multiniveaux = manque de conception),
    - il montre la récursivité simple (une seule fonction) et croisée (plusieurs fonctions),
    - il montre les fonctions que l'on soupçonne d'être "copiées/collées", que je nomme "jumelles",
    - s'interface soit avec un fichier texte au format csv, soit un fichier texte issu directement d'eclipse (qui lui traite les langages C, C++, Java, etc...).

Voici un exemple de résultat, pour un programme en C de 20 000 lignes:




On voit que typiquement, les traits verticaux (fonctions multi-niveaux) correspondent à du code qui a été mal conçu.

On voit que ce qui a été conçu, apparait au milieu du graphe.

On voit que les fonctions dans les cadres jaunes sont récursives donc dangereuses. La récursivité de ces fonctions DOIT être justifiée par le(s) auteur(s).
En général la récursivité est justifiée par:
    - des tris,
    - des calculs de factorielle,
    - des parcours d'arbres,
    - etc...

On voit que des fonction "jumelles" on été dupliquées, au lieu de faire une seule fonction avec des paramètres supplémentaires.
Les fonctions jumelles sont celles qui ont les mêmes appelants et les mêmes appelés.

Mon logiciel produit un graphe d'appel pour chaque fonction, dans un répertoire du nom de la matrice d'entrée. Chaque graphe est un fichier BMP.

Avec mon logiciel, on peut zoomer sur le graphe, ce qui permet de rendre plus lisible les noms des fonctions (les noms ne se superposent plus).
Ceci n'est pas possible avec les fichiers BMP.

Pour obtenir le fichier issu d'eclipse, sélectionnez "main", faites "open call graph", puis appuyez sur "*", jusqu'à ce que l'ascenseur ne bouge plus.
Puis clic droit, "copy expanded hierarchy". Ensuite "collez" dans un fichier texte.

Il faut ensuite lancer mon logiciel et lui désigner le fichier texte.

On peut aussi désigner une fonction pour voir son graphe d'appel:



Il est possible de tronquer le nom des fonctions trop longues, avec le tableau de substitutions en bleu.

Evolutions:
Peut être un jour je prendrais le temps de coder la possibilité de supprimer des fonctions du graphe, pour l'alléger.

Je souhaite mettre mon logiciel en mode "cloud/Saas" pour en tirer bénéfice et en faire profiter tout le monde.
Mais je ne connais par de site pour faire ça...