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

Cobol Discussion :

Qualimétrie de source Cobol


Sujet :

Cobol

  1. #1
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Février 2005
    Messages
    56
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2005
    Messages : 56
    Points : 62
    Points
    62
    Par défaut Qualimétrie de source Cobol
    Bonjour,
    je suis actuellement en stage dans une SSII.
    Le but de mon projet est de réaliser un logiciel java qui vérifie la validité des normes dans les sources Cobol (exemple: la bonne indentation du programme).
    Je cherche actuellement comment parcourir facilement des sources en évitant de passer par du ligne à ligne.
    La proposition du début de stage était de travailler sur les sources libres de checkstyle( permet de vérifier qu'un programme java est bien écrit), et de le transposer sur des sources Cobol.

    Checkstyle utilise antlr qui permet de générer un parseur à partir d'une grammaire. le problème est que je n'ai trouver aucune grammaire Cobol viable.
    J'ai essayer d'extraire une grammaire utiliser dans le projet koopa, mais cela s'avère trop difficile. En effet il utilise beaucoup de grammaire, et génère bizarrement et n'a aucune documentation, même pas javadoc. Enfin, résolution des grammaire n'est pas concluante.

    Le but de mon projet est de réaliser un socle permettant à des programmeur cobol connaissant en partie java( pas expert ) de pouvoir ajout de nouvelle testeur de norme facilement. Pour cette raison j'aimerais éviter qu'il ai à travailler ligne par ligne.

    Si vous pouvez m'aider, voir me donner une direction à suivre. Je suis en stage depuis 1 semaine. Le projet doit être aboutis fin aout.

    J'espère que j'ai été assez clair dans mes explications.
    Merci de votre aide.
    Lauric

  2. #2
    Expert éminent sénior
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    6 803
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 6 803
    Points : 32 058
    Points
    32 058
    Par défaut
    Citation Envoyé par goof_22 Voir le message
    (.../...)
    Je cherche actuellement comment parcourir facilement des sources en évitant de passer par du ligne à ligne.
    (.../...)
    Bonjour, et bienvenue. Ton projet semble interessant, quoique ardu.

    J'ai du mal avec ce point là : que veux-tu dire par "en évitant de passer par du ligne à ligne"? Typiquement, nombre de normes de développements(et spécialement les indentation), sont dépendantes des lignes les unes par rapport aux autres. Par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    EVALUATE TRUE
       WHEN A = B
          PERFORM Z1
       WHEN A = C
          PERFORM Z2
       WHEN B = C
          PERFORM Z3
       WHEN OTHER
          PERFORM Z4
    END-EVALUATE
    Cette indentation est un peu particulière puisqu'on recule deux fois pour ensuite revenir au niveau initial sans intermédiaire. Ta difficulté, donc, est de trouver le Scope terminator(ici le END-EVALUATE) correspondant à l'ordre initial. Puis, ensuite, identifier les opérateurs intérmédiaires(ici les WHEN) à séparer de l'ordre qui va avec.

    Ta deuxième difficulté, c'est le point.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    IF A=B
       IF A=C
          PERFORM Z5
       END-IF
    END-IF
    est strictement équivalent à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    IF A=B
       IF A=C
          PERFORM Z5.
    En d'autre termes, le point sert de scope terminator à tout ce qui suit.

    Troisième difficulté, le cas spécifique du PERFORM, mot à tout faire du COBOL. Quelques exemples, non exhaustifs :

    PERFORM Z6 : executer le paragraphe Z6, et revenir dès que l'on atteint le paragraphe Z5
    PERFORM Z6 THRU Z9 : executer tous les paragraphes compris entre Z5 et Z9(ce qu'il y a dans Z9 n'étant pas executé)
    PERFORM Z6 UNTIL FIN-FICHIER executer le paragraphe Z6 tant que FIN-FICHIER est faux.
    PERFORM UNTIL FIN-FICHIER : tant que FIN-FICHIER est faux, executer le code entre le perform et le end-perform.....

    Bon courage, en tous cas.
    Les 4 règles d'airain du développement informatique sont, d'après Michael C. Kasten :
    1)on ne peut pas établir un chiffrage tant qu'on a pas finalisé la conception
    2)on ne peut pas finaliser la conception tant qu'on a pas complètement compris toutes les exigences
    3)le temps de comprendre toutes les exigences, le projet est terminé
    4)le temps de terminer le projet, les exigences ont changé
    Et le serment de non-allégiance :
    Je promets de n’exclure aucune idée sur la base de sa source mais de donner toute la considération nécessaire aux idées de toutes les écoles ou lignes de pensées afin de trouver celle qui est la mieux adaptée à une situation donnée.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 37
    Points : 44
    Points
    44
    Par défaut
    Bonjour,

    Utilise Koopa!

    Etant donné le temps que tu as, je pense que le mieux pour toi est d'utiliser directement Koopa. Il parse les programmes et ensuite te permet de faire des requêtes Xpath sur le xml résultant.

    Par exemple, si tu as une règle qui définit le format du nom du programme par une expression régulière. Avec Koopa, il suffit de récupérer le nom du programme par une requête Xpath (dans la doc : //compilationUnit//programName) et ensuite vérifier que le résultat respecte le format du nom de programme.
    Dans ce cas, ça oblige la personne qui écrit la règle à connaitre Xpath et Java.

    L'idéal serait d'interroger le xml généré par Koopa en Xquery. Comme ça, pour définir une règle il suffirait de la définir par Xquery sans aucun code Java.

  4. #4
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Février 2005
    Messages
    56
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2005
    Messages : 56
    Points : 62
    Points
    62
    Par défaut
    El_slapper: en fait je cherchais si il y avais une autre solution, mais je vais passé par du ligne à ligne, et réaliser la validation des normes à l'aide des régex.
    Merci pour la deuxième difficulté, je n'y aurais peut être pas pensé.

    Ekans: Comme dit dans mon premier post, pendant un temps j'ai essayer d'extraire la grammaire de koopa, sans réussite..
    Pour ma part j'ai eu quelque difficulté à utiliser koopa, et surtout je ne vois pas comment l'inclure dans mon code.
    Mais surtout mon élément déterminant, est que en testant le visualiseur de koopa sur des sources cobol, j'ai remarqué qu'il loupais des mots clé. hors je ne peux me le permettre, quite à prendre un peu plus de temps. Merci quand même, je mettrais peut être des avancé sur ce post, ou d'autre question.
    Bonne Journée

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 37
    Points : 44
    Points
    44
    Par défaut
    Bon courage alors.

    Mais attention, sauf si tes règles sont simples, tu risques d'être rapidement limité au niveau des règles que tu pourras vérifier si tu n'as pas de parser cobol.

Discussions similaires

  1. Ajout catégories Sources : COBOL & JCL (voire REXX ?)
    Par Metalman dans le forum Evolutions du club
    Réponses: 0
    Dernier message: 05/02/2014, 10h50
  2. Plugin COBOL Source Browser pour Eclipse
    Par OlivierDotre dans le forum Eclipse
    Réponses: 1
    Dernier message: 30/01/2013, 10h58
  3. [z/OS] Comparaison de sources COBOL
    Par matbro dans le forum Cobol
    Réponses: 2
    Dernier message: 09/02/2007, 14h47
  4. mp3 et source
    Par davlefou dans le forum C
    Réponses: 2
    Dernier message: 18/10/2002, 15h01

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