Compter les lignes de code

muqaddarmuqaddar Administrateur
août 2009 modifié dans Xcode et Developer Tools #1
Hello,

Bon je me demandais, à  une époque, j'avais entendu parler d'un utilitaire ou d'une commande shell pour compter le nombre de lignes de code d'un projet.

ça vous dit quelque chose ? Ou avez-vous la juste commande ?

Réponses

  • Philippe49Philippe49 Membre
    août 2009 modifié #2
    Quelque chose comme cela (mais c'est grossier, toutes les lignes sont également comptées, commentaires, lignes blanches, etc ... )
    wc -l Projet/Classes/*.h Projet/Classes/*.m
    

  • muqaddarmuqaddar Administrateur
    04:29 modifié #3
    Merci Philippe ! 

    ça me donne 6386 lignes pour Gourmandise. Intéressant.
  • 04:29 modifié #4
    J'aime bien le nom de la commande  ;D
    Y'a pas moyen de balance direct le dossier qui contient toutes mes classes? Parce que si je dois drag&drop à  chaque fois...
  • Philippe49Philippe49 Membre
    août 2009 modifié #5
    dans 1250029069:

    J'aime bien le nom de la commande  ;D

    Cela veut dire Word Count ... tu pensais à  quoi ?

    dans 1250029069:

    Y'a pas moyen de balance direct le dossier qui contient toutes mes classes? Parce que si je dois drag&drop à  chaque fois...

    Ceci prend les fichiers dans le projet et dans les dossiers au premier niveau
    % wc -l  Project/{*,*/*}.{h,m}
    

    mais il y a sans doute une regex plus sioux
  • AliGatorAliGator Membre, Modérateur
    04:29 modifié #6
    wc c'est pour "word count" (et non "world count" Philippe) :D
    Et le flag "-l" c'est pour dire "ah bah en fait compte pas les mots, mais les lignes"

    Et sinon bah comme toute commande Unix qui se respecte, elle peut être couplée à  d'autres à  l'aide des "pipes" ou d'autres trucs.

    1) Par exemple on peut la coupler à  la commande "find" pour parcourir une arborescence à  la recherche de tous les .h et .m : si on est dans le répertoire du projet à  analyser (sinon, soit s'y mettre, soit remplacer le premier argument "." de la commande "find" par le chemin d'accès à  analyser) :
    find . -name "*.[hm]" -exec wc -l {} \;
    
    va vous afficher le nombre de ligne de chaque fichier .h et .m de votre projet.

    2) On peut aussi concaténer tout le code de tous les .h et .m le temps de compter, une fois la concaténation réalisée, le nombre total de ligne, et donc avoir un total général (quel que soit le fichier d'origine) :
    find . -name "*.[hm]" -exec cat {} \; | wc -l
    
    Là  on affiche le contenu pour chaque fichier .h et fichier .m, et on ne compte qu'à  la fin, pour avoir le total.

    3) On peut même imaginer d'utiliser sed pour supprimer les lignes encapsulées entre /* et */, supprimer les lignes vides et supprimer les lignes qui ne contiennent qu'un commentaire commençant par "//"...
    Bon là  ça commence à  se compliquer un peu vu les cas particuliers (commentaires /*...*/ sur une ou plusieurs lignes, lignes pas tout à  fait vides mais contenant juste des tabulaions et/ou espaces, ...) mais bon si y'a un besoin je peux me pencher dessus (à  vrai dire j'ai déjà  un peu fait ça pour mon script sed qui parser les headers Apple pour générer les TextMacros pour les protocoles, vous vous souvenez ?)
  • Philippe49Philippe49 Membre
    04:29 modifié #7
    dans 1250038475:

    wc c'est pour "word count" (et non "world count" Philippe) :D

    :) :) comme aux guignols de l'info !
  • CéroceCéroce Membre, Modérateur
    04:29 modifié #8
    Un truc connu, c'est Cocomo. C'est un outil de mesure de l'avancement d'un projet.

    Une partie de l'outil sert justement à  compter le nombre de lignes d'une façon standardisée (c'est à  dire, en virant les commentaires, en séparant le code imbriqué, etc.).
  • muqaddarmuqaddar Administrateur
    04:29 modifié #9
    Merci à  vous, pour vous réponses. :)
Connectez-vous ou Inscrivez-vous pour répondre.