IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Liste de variable


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Inscrit en
    Décembre 2005
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 7
    Par défaut Liste de variable
    Bonjour à tous,

    Connaissez vous un outils qui pourrait lister les variables utilisées dans un code source en C ?

    Je m'explique, j'ai un code source qui déclare genre 40000 variables mais qui ne les utilise pas toutes (ou plus toutes, c'est historique)
    Je cherche un moyen de savoir celles qui sont vraiment utilisées et celles qui ne le sont plus (pour info, c'est environ moitié moitié)

    Ca existe forcement : un bon parser sait faire ça, voire un compilo avec des options d'analyse ou de reporting sur le code.

    Mais impossible de trouver. Si vous avez des idées .....

    Sinon, restera plus qu'à essayer de développer mon propre outil ... Marrant mais sans doute un peu galère.

    Merci d'avance pour votre aide,

    Pich

  2. #2
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par défaut
    La pluspart des compilateurs maintenant savent dire quelle sont les variables non utilisées ou utilisées avant d'être initialisées.

    Il suffit de monter le niveau de verbosité lors de la compilation.

    Quel compilateur et quelles options de compilation utilises-tu ?
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  3. #3
    Membre à l'essai
    Inscrit en
    Décembre 2005
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 7
    Par défaut
    Merci pour cette réponse (rapide qui plus est).
    Donc je suis sous visual 6 (oui, je sais c'est vieux) et mes niveau de warning sont plutôt bas.
    Mais dans tous les cas, je ne suis pas sur que cela puisse m'aider.

    En fait le problème que j'ai est plus compliqué que ce que j'ai décrit. j'avais essayé de simplifier mais je crois que je suis bon pour rentrer un peu plus dans le detail.

    Bref,
    Mon soft déclare environ 40 000 variables dans une dll dédiée à cela (appelée Commons.dll).
    Les variables sont en fait des membres de structures déclarées comme suit :

    _declspec(dllexport) struct // Export
    {
    int iVariable1;
    int iVariable2;
    // ...
    } STRUCT1;
    // On definit ensuite une macro
    #define VARIABLE1 STRUCT1.iVariable1

    J'ai comme cela environ 500 fichier définissant ces structures.

    Mes autres dll accèdent à ces variables en déclarant les structures comme

    _declspec(dllimport) struct // Import
    {
    int iVariable1;
    int iVariable2;
    // ...
    } STRUCT1;

    puis en utilisant directement la macro
    VARIABLE1.
    Exemple :
    VARIABLE1 = 1;

    Enfin, le linker link avec la dll commons

    Ca marche très bien et est adapté à l'utilisation que nous en faisons.

    Maintenant, je dois construire un ICD (Interface Conception Document) de chacun de mes modules (mes autres dll)
    => liste détaillées des variables utilisées en entrée et en sortie par chaque dll.

    Première étape, construire la liste des variables utilisées (savoir lesquelles sont en entrée et lesquelles sont en sortie sera facile).
    D'où ma question :-). (si j'ai la liste complète de toutes les variables, je saurai faire le tri entre les externes et les internes)

    Pour info, j'ai bien-sur essayé de générer le mapfile lors de la compil.
    Malheureusement, le mapfile me donne la liste des structures utilisées (STRUCT1) mais pas du tout la liste des membres de cette structure.
    Hors c'est bien cette liste de membre dont j'ai besoin.

    Un compilo ou un bon parser connaitra forcement cette liste.
    Mais je ne pense pas que les options de verbose m'aide bcp.

    qu'en penses tu ?

    Merci encore

    Pich

    EDIT : J'ai visiblement confondu ce qu'etait l'option Verbose.
    Donc, si, peut etre que ça peut m'aider vu que je vois pas ce que c'est
    Pour info, si besoin, je peux compiler sous Visual Studio 2005

  4. #4
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par défaut
    Une méthode un peu bourin alors, tu renommes tous tes membres de structures de ta DLL Commons.dll sans modifier les macros et tu recompiles/link.

    tu verras bien où cela crie (c'est que c'est utilisé) et tu remets les anciens noms pour ces membres là uniquement.

    A mon avis, cela sera aussi rapide et efficace que trouver un parser et analyser les résultats.
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  5. #5
    Membre à l'essai
    Inscrit en
    Décembre 2005
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 7
    Par défaut
    J'y avais bien pensé mais faire ça pour 40 000 variables, je vais y passer ma vie ...
    => Renommer les 40000
    Pour tous mes modules
    => Compiler module
    Tant que erreur de compile
    remettre le nom correcte de la variable
    noter ce nom dans une liste annexe
    recompiler module
    fin tant que
    fin pour

    j'ai peur ;-)

  6. #6
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 515
    Par défaut
    D'un autre côté quelque chose me dit que tu n'as pas vraiment 40000 variables.

  7. #7
    Membre à l'essai
    Inscrit en
    Décembre 2005
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 7
    Par défaut
    Citation Envoyé par ram-0000 Voir le message
    La pluspart des compilateurs maintenant savent dire quelle sont les variables non utilisées ou utilisées avant d'être initialisées.

    Il suffit de monter le niveau de verbosité lors de la compilation.

    Quel compilateur et quelles options de compilation utilises-tu ?
    En fait, ta première idée pourrait qd même m'interesser.

    Visiblement, Visual n'a d'option verbose que pour le link.
    J'ai regardé GCC mais ce que l'option verbose ressort lors de la compile ne semble pas etre ça.

    Tu connais un compilo qui a une option verbose permettant de lister les variables utilisées ?

  8. #8
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par défaut
    Citation Envoyé par jo_pich Voir le message
    Visiblement, Visual n'a d'option verbose que pour le link.
    Je ne me rappelle plus très bien de Visual 6.0 (c'était il y a longtemps) mais il me semble bien qu'il y avait des options de compilation qui était relativement strictes. Par contre, le danger est de trouver d'autres warning et erreurs dans ton code (est-ce que c'est vraiment un danger d'ailleurs ?).
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  9. #9
    Membre à l'essai
    Inscrit en
    Décembre 2005
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 7
    Par défaut
    Citation Envoyé par ram-0000 Voir le message
    Je ne me rappelle plus très bien de Visual 6.0 (c'était il y a longtemps) mais il me semble bien qu'il y avait des options de compilation qui était relativement strictes. Par contre, le danger est de trouver d'autres warning et erreurs dans ton code (est-ce que c'est vraiment un danger d'ailleurs ?).
    Non, pas de problèmes pour de nouveau warning .
    Par contre, que ce soit visual 6 ou 2010, je n'ai trouvé d'option verbose que pour le link

  10. #10
    Membre très actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2010
    Messages
    254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2010
    Messages : 254
    Par défaut
    Pour gcc y'a une option (-0 ou -pipe) qui te dit si les variables sont utilisées ou pas.

Discussions similaires

  1. [Sécurité] $_ENV => Liste des variables liées
    Par Romanops dans le forum Langage
    Réponses: 8
    Dernier message: 17/04/2007, 15h07
  2. Réponses: 3
    Dernier message: 07/12/2006, 12h23
  3. [POO] Liste des variables de mon Objet
    Par hisy dans le forum Langage
    Réponses: 2
    Dernier message: 20/09/2006, 10h51
  4. STL List et variable globale (extern)
    Par flipper203 dans le forum SL & STL
    Réponses: 9
    Dernier message: 04/07/2006, 14h20
  5. [CSS] list à largeur variable
    Par laurent_h dans le forum Mise en page CSS
    Réponses: 5
    Dernier message: 03/05/2006, 15h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo