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 :

Analyse de code C++


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    109
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 109
    Par défaut Analyse de code C++
    Bonjoru tout le monde,

    Je suis actuellement sur un projet d'analyse de code C++.
    En gros, il me faut créer une appli en C++ qui recherche l'ensemble des requetes SQL qui peuvent être créer dynamiquement dans une autre appli C++.

    Dans ce contexte j'aimerais trouver une méthode, un outils ou même une idée pour me permettre de rechercher l'ensemble des méthodes qui font appel à une autre méthode, exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    void Toto::Select(char* mesTables, char* mesWhere)
    {
      int     nStatus;                   // statut retour oracle
      char    maRequete[LGMAX_REQUETE];   // requete a executer
      int nbLigne;
    
      strcpy(maRequete, "SELECT nom_des_champs a ramener FROM ");
      strcat(maRequete, mesTables);
      strcat(maRequete, " WHERE ");
      strcat(maRequete, mesWhere);
     
      nStatus = Open(maRequete);
      oErreur.Verifier(__FILE, "SelectRowid", OPE, maRequete, "res", 1, nStatus);
      nStatus = Nombre(nLigne);
      oErreur.Verifier(__FILE, "SelectNombre", SEL, maRequete, "res", 1, nStatus);
      nStatus = Close();
      m_nNbLigne = 0;
     
    }
    Dans cette méthode, on voit qu'il y a un appel à Open, j'aimerais donc qu'en passant en paramètre ( à une méthode ou un outils ) Open, on me ressorte Toto::Select.

    Merci de votre aide je suis assez embêter là.

  2. #2
    Membre éclairé Avatar de LinuxUser
    Inscrit en
    Avril 2007
    Messages
    857
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 857
    Par défaut
    Salut, j'ai plusieurs questions car pour moi y apleins de choses confuses.

    1. Quand tu parles d'un projet, tu parles d'un devoir à rendre?
    2. Quand tu parles d'une autre application, tu parles d'une lib externe? Si oui, tu dois en utiliser une en particulier (si il s'agit d'un devoir) ou tu cherches des idées? J'ai pas compris si tu en cherchais une ou si tu cherchais comment l'utiliser.
    3. Quand tu fais "open(requete)", tu voudrais qu'il se passe quoi au juste?
    4. Qu'est ce que tu veux dire quand tu écris "on me ressorte Toto::Select."?

    Petite remarque au passage, tu fais du C++, oublie les char*, strcpy, strcat et compagnie, utilises des std::string .

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    109
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 109
    Par défaut
    Ok alors je vais préciser quelques trucs ^^ :

    1. Quand je dis projet c'est un projet d'entreprise, je ne suis plus étudiant.
    2. On me demande de créer une appli complète (un projet) qui me permette d'analyser du code d'une autre application C/C++ (que je ne connais pas du tout).
    3. Je veux rien c'est un exemple de code que je dois analyser.
    4. Je cherche un outils, une méthode, un trucs... qui me permette de ressortir l'ensemble des méthodes qui font appel à une autre dont j'aurai passé le nom en paramètre.

    Donc si j'utilise un outils et que je veux obtenir l'ensemble des méthodes qui utilise la méthode Open, j'obtiendrais Toto::Select.

    Je ne mis connait pas du tout en C/C++ mais j'apprends petit à petit.
    Merci de ton aide

  4. #4
    Membre Expert
    Avatar de imperio
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2010
    Messages : 871
    Par défaut
    La fonction "recherche" de quasiment tous les éditeurs de texte ne te convient pas ? Avec la quasi-totalité des IDE actuels tu pourrais t'en sortir assez facilement.

  5. #5
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    Linux possede ltrace (et son frere strace) pour tracer les appels a une lib.

    il doit y avoir un équivalent sous windows, mais je n'ai pas cherché

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    109
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 109
    Par défaut
    Imperio, je cherche un outils utilisable dans une appli pour pouvoir traiter le résultat directement.

    leternel, je vais regarder ce que je trouve à ce propos, il faudrai pouvoir écrire le résultat dans un fichier pour pouvoir l'analyser ensuite.

  7. #7
    Membre éclairé Avatar de LinuxUser
    Inscrit en
    Avril 2007
    Messages
    857
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 857
    Par défaut
    Ah OK je comprends mieux à présent, tu cherches un profiler.
    Regarde une fois GNU gprof:

    http://sourceware.org/binutils/docs-...rof/index.html

    C'est un profiler de code qui te pemet par exemple de savoir combien de fois une fonction est appelée, combien de temps elle a consommé, ... .
    Je crois que tu peux faire un graphe des appels de fonctions, à voir, faudra étudier la doc.

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    109
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 109
    Par défaut
    Alors un autre trucs que j'ai homis de précisé :

    Je travaille sous Windows.
    Je cherche à récupérer ces informations sans lancer l'appli dont le code est analysé. Il me semble que ce que vous me proposé là permet de travailler pendant l'exécution du code (si je me trompe il faut me le dire).

    Merci pour vos réponses.

  9. #9
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    sans lancer l'application?

    alors oriente-toi soit vers un bon écran et une paire d'yeux neufs, soit vers un analyseur syntaxique customisé.

    Puisque tu as les sources de l'application, wingrep va te servir.
    ltrace permet d'espionner une application pendant son exécution.

  10. #10
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Citation Envoyé par roulian46 Voir le message
    Ok alors je vais préciser quelques trucs ^^ :

    1. Quand je dis projet c'est un projet d'entreprise, je ne suis plus étudiant.
    2. On me demande de créer une appli complète (un projet) qui me permette d'analyser du code d'une autre application C/C++ (que je ne connais pas du tout).
    3. Je veux rien c'est un exemple de code que je dois analyser.
    4. Je cherche un outils, une méthode, un trucs... qui me permette de ressortir l'ensemble des méthodes qui font appel à une autre dont j'aurai passé le nom en paramètre.

    Donc si j'utilise un outils et que je veux obtenir l'ensemble des méthodes qui utilise la méthode Open, j'obtiendrais Toto::Select.

    Je ne mis connait pas du tout en C/C++ mais j'apprends petit à petit.
    Merci de ton aide
    Ca me fait penser a la fonction recherche de Visual Assist, un plugin de Visual Studio. Tu selectionnes une methode et tu fais find references et il te sort tous les appels a cette methode partout dans ton code.
    Il y a une version demo pour tester.

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    109
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 109
    Par défaut
    Peut-on lancer cette fonction en mode ligne de commande?

  12. #12
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Non, il faut avoir dans une base de donnees la description du programme, ses options de compilation... Tout ca ne peut etre fait que dans un IDE de maniere propre.
    Tu es sous Windows, donc tu dois avoir un projet Visual Studio ? Tu installes le plugin et tu testes sur le projet

    Ou alors tu te fracasse un outil qui analyse ton code, ecrit toutes les references dans une base de donnees... ca devrait de prendre pas plus de 3 ou 4 ans de faire un outil sur mesure...

Discussions similaires

  1. Outil d'analyse de code
    Par Bloon dans le forum Outils
    Réponses: 8
    Dernier message: 07/08/2007, 09h04
  2. Analyse de code
    Par ecocentric dans le forum Autres éditeurs
    Réponses: 1
    Dernier message: 11/02/2005, 01h09
  3. [WSAD 5 ] - Analyse de code
    Par nicoswiss dans le forum Eclipse Java
    Réponses: 8
    Dernier message: 13/08/2004, 10h21
  4. [ Code ] Analyse de code - Attribut Inutile
    Par geegee dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 19/05/2004, 09h07
  5. Cherche lien info... sur l'analyse du code
    Par Alec6 dans le forum Qualimétrie
    Réponses: 3
    Dernier message: 03/03/2004, 14h44

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