Forum Programmation.c Dépendances entre modules

Posté par  .
Étiquettes : aucune
0
30
mar.
2006
Bonjour,

est-ce qu'il existe des analyseurs de code (libres ou non) pour des projets dans lesquels les interfaces sont mal définies ?

Par mal définies, je veux dire qu'il y aurait par exemple beaucoup de variables importées dans chaque fichier, des variables modifiées dans plusieurs fichiers, des fonctions du fichier 1 qui appellent des fonctions du fichier 2 qui rappellent elles-mêmes des fonctions du fichier 1, etc.

Le programme en question permettrait aussi d'établir les dépendances entre les fichiers, pour déterminer facilement quels sont les fonctionnalités à contrôler lorsqu'un fichier évolue.

J'imagine que ce genre de chose existe, non ?

Ennio
  • # [reponse] / doxygen

    Posté par  . Évalué à 2.

    Je te renvoie à ce journal http://linuxfr.org/~cykl/12505.html ou un certains nombres de solutions à un problème similaire ont été proposées.

    Je l'avais vu un jour où j'avais besoin d'avoir une vue d'ensemble des références croisées pour éditer un projet existant.

    J'ai finalement utilisé doxygen, qui si on le configure bien peut dire pour chaque fichier source, quels fichiers (.h) il utilise, et pour chaque .h, quels .c l'utilisent. De même, on a les dépendances des fonctions dans les deux sens, ainsi que des variables (globales).
    Les dépendances sont disponibles sous forme de liste de texte, et de graphiques.

    Par contre pour de tres gros projets, il semblerait que doxygen n'arrive pas à tout gérer, et certaines dépendances ne sont pas enregistrées...


    Comme j'ai un peu galéré avant d'avoir l'ensemble de ces infos, pour info, voila le doxygen.cfg que j'ai utilisé pour analyser le projet:

    =============



    # Doxyfile 1.4.1 -*-sh-*-
    PROJECT_NAME= le_nom_du_projet
    CREATE_SUBDIRS=NO
    OUTPUT_DIRECTORY = proj_doxygenifié

    ALWAYS_DETAILED_SEC=YES
    OPTIMIZE_OUTPUT_FOR_C=YES
    EXTRACT_ALL=YES
    EXTRACT_PRIVATE=YES
    EXTRACT_STATIC=YES
    EXTRACT_LOCAL_METHODS=YES
    WARN_IF_UNDOCUMENTED=NO
    WARN_IF_DOC_ERROR=NO
    WARN_LOGFILE=doxywarn.log
    INPUT=project_src_dir
    FILE_PATTERNS=*.c *.h
    RECURSIVE=YES


    ENABLE_PREPROCESSING = YES
    INCLUDE_GRAPH = YES
    INCLUDED_BY_GRAPH = YES


    SOURCE_BROWSER=YES
    INLINE_SOURCES=YES
    STRIP_CODE_COMMENTS=NO
    ALPHABETICAL_INDEX=YES
    GENERATE_TREEVIEW=YES
    PDF_HYPERLINKS=NO
    USE_PDFLATEX=NO
    LATEX_BATCHMODE=NO
    GENERATE_MAN=NO
    MAN_LINKS=NO
    GENERATE_XML=NO
    GENERATE_LATEX=NO
    CLASS_DIAGRAMS=NO
    HAVE_DOT=YES
    CLASS_GRAPH=NO
    COLLABORATION_GRAPH=YES
    GROUP_GRAPHS=NO
    CALL_GRAPH=YES
    GRAPHICAL_HIERARCHY=YES
    DOT_MULTI_TARGETS=YES

    =========
    • [^] # Re: [reponse] / doxygen

      Posté par  . Évalué à 1.

      Merci pour ces références, je connaissais un peu doxygen, mais j'avais pas pensé à lui pour faire ça :) Je vais voir s'il est utilisable pour mon projet.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.