PROG QUI CALCULE LE NB DE LIGNE D'UN CODE(AVEC COMMENTAIRES,LIGNES VIDES, TOTAL,
xterminhate
Messages postés371Date d'inscriptiondimanche 4 janvier 2004StatutMembreDernière intervention23 septembre 2009
-
15 mars 2004 à 07:04
magic_Nono
Messages postés1878Date d'inscriptionjeudi 16 octobre 2003StatutMembreDernière intervention16 mars 2011
-
25 mars 2004 à 18:16
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
magic_Nono
Messages postés1878Date d'inscriptionjeudi 16 octobre 2003StatutMembreDernière intervention16 mars 2011 25 mars 2004 à 18:16
Salud à ts,
Ds MétaProg &MPLight,
un module de stat compte les nb de caractères en
- code
- directive de précompilation
- commentaires
( puis commentaires avec déclinaisons: par ex ceux commençant par /// car ils constituent la doc...)
et donne les proportions,
encore qq retouche et je livre son source...
Kénavo
PS: un exe avec ce module devait figuré ds l'article que G fait sur les DLL
sinon,
bonne idée,
évite les var globales
et préfère le C++ et ces classes par rapport aux structures...
GoldenEye>
si T capable de trouver un code Lex/Yacc pour analyser tout type de code C/C++ sans faire de supposition comme "les types commencent par une majuscule"
ça m'intéresse!
Note: G publié les srces d'un analyseur de code C faisant ces supposition
Magicalement,
Nono.
xterminhate
Messages postés371Date d'inscriptiondimanche 4 janvier 2004StatutMembreDernière intervention23 septembre 2009 19 mars 2004 à 17:38
Kirua a en sa possession une version que j'ai personnelement recodée pour coller mieux à la programmation C++. Cette version recodée corrige d'ailleurs quelques problèmes de comptage.
Cordialement,
Xter.
soumpro
Messages postés52Date d'inscriptionsamedi 25 octobre 2003StatutMembreDernière intervention 7 mai 2004 19 mars 2004 à 16:46
Pas mal ton source !
Mais comme le dit kirua , n'utlsz pas globales !
fstream ! ? hein ?!
hum !
cs_Kirua
Messages postés3006Date d'inscriptiondimanche 14 avril 2002StatutMembreDernière intervention31 décembre 2008 16 mars 2004 à 17:38
merci pr l'info de base, on peut dire que t'as l'esprit de synthèse ;-) enfin je te comprends, à partir de ça je trouverai rapidement des compléments d'infos, vive goolge :-) Je sais plus qui a dit: "Google is the closest thing internet has to an ultimate answer-machine"
cs_GoldenEye
Messages postés527Date d'inscriptionvendredi 14 septembre 2001StatutMembreDernière intervention 6 octobre 20084 15 mars 2004 à 20:46
Flex/lex : outil de base pour réaliser des analyseurs lexicaux
Forme un PACS avec son collègue Bison/yacc utilisé pour implémenter des analyseurs syntaxiques
Ce sont les deux programmes utilisés pour constuire des compilateurs
cs_Kirua
Messages postés3006Date d'inscriptiondimanche 14 avril 2002StatutMembreDernière intervention31 décembre 2008 15 mars 2004 à 20:42
flex?
cs_GoldenEye
Messages postés527Date d'inscriptionvendredi 14 septembre 2001StatutMembreDernière intervention 6 octobre 20084 15 mars 2004 à 14:32
Tout ceci est fort intéréssant je le reconnais, mais pourquoi s'embêter alors que ce programme est codé par 10 lignes bien senties de flex ?
cs_Xs
Messages postés368Date d'inscriptionmercredi 14 novembre 2001StatutMembreDernière intervention 1 septembre 2008 15 mars 2004 à 07:54
Salut !
personnellement, je viens de me faire un programme similaire mais celui-ci examine tous les fichiers cpp/h/c du repertoire indiqué et compte le nombre de lignes (j'ai oublié les commentaires :D)
int compte_lignes(char *fichier){
int nb_lignes=1;
FILE* File;
char c;
if (fichier==NULL)
{
return -1;
} // pour réutilisations ultérieurs : si on nous file un pointeur NULL on retourne 0..
else
{
File = fopen(fichier,"r");
if( File == NULL )
return -1;
do
{
c=fgetc(File);
if (c=='\n')
nb_lignes++;
}
while (c!=EOF); // tant qu'on est pas a la fin du fichier
fclose(File);
}
return nb_lignes;
}
comme vous pouvez le voir, il est largement inspiré d'une source ici présente pour le comptage de lignes... mais bon on s'en fou parce que c'est fait pour ca (poster des sources) et que c'est pas censé etre utilisé par qq1 d'autre que moi.
cordialement
cs_Kirua
Messages postés3006Date d'inscriptiondimanche 14 avril 2002StatutMembreDernière intervention31 décembre 2008 15 mars 2004 à 07:51
Salut!
je trouve que c'est une bonne idée ton truc, j'ai une suggestion: utilise les structures. tu utilises énormément de variables globales, c'est déconseillé. Je te propose de mettre la déclaration de la structure Nb_Lignes_Struct par exemple ds un .h avec la déclaration de la fonction:
bon, moi j'utilise les strings, tu peux utiliser les char, ça te regarde ;-) ce que je veux dire, c'est qu'il faudrait rendre ce bout de code réutilisable.
Une idée d'utilisation: moi j'utilise un code similaire pr tenir une page web à jour, qui affiche un graphique indiquant le nombre de lignes de code dans chaque module en cours de dvpt.
xterminhate
Messages postés371Date d'inscriptiondimanche 4 janvier 2004StatutMembreDernière intervention23 septembre 2009 15 mars 2004 à 07:04
Bonjour,
Je comptais justement me faire ce type d'outil alors tu tombes bien. Cela dit, j'ai ajouté en include la librairie sinon la compile ne passait pas sous MinGW32.
D'autre part, il y a un petit soucis au niveau du journal :
------------------------------------------------------------
Nom du code source: C:\Dev\-------\****.cpp
Nb de ligne au total: 814
Nb de lignes de code pur: 432
Nb de lignes des commentaires: 383
Nb de lignes vides: -1
Taille totale du fichier: -1
------------------------------------------------------------
Pourrais tu faire les corrections afin de terminer ton programme, parce qu'il m'interesse.
Enfin, il serait peut etre interessant de trouver un moyen d'automatiser ton outil : par exemple saisir le nom de la liste des fichier à partir d'un fichier txt plutot qu'à partir de la console.
25 mars 2004 à 18:16
Ds MétaProg &MPLight,
un module de stat compte les nb de caractères en
- code
- directive de précompilation
- commentaires
( puis commentaires avec déclinaisons: par ex ceux commençant par /// car ils constituent la doc...)
et donne les proportions,
encore qq retouche et je livre son source...
Kénavo
PS: un exe avec ce module devait figuré ds l'article que G fait sur les DLL
sinon,
bonne idée,
évite les var globales
et préfère le C++ et ces classes par rapport aux structures...
GoldenEye>
si T capable de trouver un code Lex/Yacc pour analyser tout type de code C/C++ sans faire de supposition comme "les types commencent par une majuscule"
ça m'intéresse!
Note: G publié les srces d'un analyseur de code C faisant ces supposition
Magicalement,
Nono.
19 mars 2004 à 17:38
Cordialement,
Xter.
19 mars 2004 à 16:46
Mais comme le dit kirua , n'utlsz pas globales !
fstream ! ? hein ?!
hum !
16 mars 2004 à 17:38
15 mars 2004 à 20:46
Forme un PACS avec son collègue Bison/yacc utilisé pour implémenter des analyseurs syntaxiques
Ce sont les deux programmes utilisés pour constuire des compilateurs
15 mars 2004 à 20:42
15 mars 2004 à 14:32
15 mars 2004 à 07:54
personnellement, je viens de me faire un programme similaire mais celui-ci examine tous les fichiers cpp/h/c du repertoire indiqué et compte le nombre de lignes (j'ai oublié les commentaires :D)
voici le code :
#include
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
int compte_lignes(char *fichier);
WIN32_FIND_DATA wData;
HANDLE listing;
int main()
{
char l_chemin[256],*l_chemintmp;
int lignes;
printf("Entrez le chemin\n");
scanf("%s", &l_chemin);
l_chemintmp = new char[strlen(l_chemin)+1+strlen("\\*.*")];
strcpy(l_chemintmp,l_chemin);
strcat(l_chemintmp,"\\*.*");
listing = FindFirstFile(l_chemintmp, &wData);
int i =0;
int total=0;
char FileWithPath[256];
if (listing != INVALID_HANDLE_VALUE)
{
do
{
if(wData.cFileName[0] != '.' )
{
strcpy(FileWithPath,l_chemin);
strcat(FileWithPath,"\");
strcat(FileWithPath,wData.cFileName);
lignes=compte_lignes(FileWithPath);
printf("Votre fichier %s comporte %d lignes \n",wData.cFileName, lignes);
i++;
total+=lignes;
}
}
while (FindNextFile(listing, &wData));
FindClose(listing);
printf("\n\nsoit un total de %i\n\n",total);
}
system("PAUSE");
return 0;
}
int compte_lignes(char *fichier){
int nb_lignes=1;
FILE* File;
char c;
if (fichier==NULL)
{
return -1;
} // pour réutilisations ultérieurs : si on nous file un pointeur NULL on retourne 0..
else
{
File = fopen(fichier,"r");
if( File == NULL )
return -1;
do
{
c=fgetc(File);
if (c=='\n')
nb_lignes++;
}
while (c!=EOF); // tant qu'on est pas a la fin du fichier
fclose(File);
}
return nb_lignes;
}
comme vous pouvez le voir, il est largement inspiré d'une source ici présente pour le comptage de lignes... mais bon on s'en fou parce que c'est fait pour ca (poster des sources) et que c'est pas censé etre utilisé par qq1 d'autre que moi.
cordialement
15 mars 2004 à 07:51
je trouve que c'est une bonne idée ton truc, j'ai une suggestion: utilise les structures. tu utilises énormément de variables globales, c'est déconseillé. Je te propose de mettre la déclaration de la structure Nb_Lignes_Struct par exemple ds un .h avec la déclaration de la fonction:
Nb_Lignes_Struct AnalyseLignesFichier(string fichier);
bon, moi j'utilise les strings, tu peux utiliser les char, ça te regarde ;-) ce que je veux dire, c'est qu'il faudrait rendre ce bout de code réutilisable.
Une idée d'utilisation: moi j'utilise un code similaire pr tenir une page web à jour, qui affiche un graphique indiquant le nombre de lignes de code dans chaque module en cours de dvpt.
15 mars 2004 à 07:04
Je comptais justement me faire ce type d'outil alors tu tombes bien. Cela dit, j'ai ajouté en include la librairie sinon la compile ne passait pas sous MinGW32.
D'autre part, il y a un petit soucis au niveau du journal :
------------------------------------------------------------
Nom du code source: C:\Dev\-------\****.cpp
Nb de ligne au total: 814
Nb de lignes de code pur: 432
Nb de lignes des commentaires: 383
Nb de lignes vides: -1
Taille totale du fichier: -1
------------------------------------------------------------
Pourrais tu faire les corrections afin de terminer ton programme, parce qu'il m'interesse.
Enfin, il serait peut etre interessant de trouver un moyen d'automatiser ton outil : par exemple saisir le nom de la liste des fichier à partir d'un fichier txt plutot qu'à partir de la console.
Cordialement,
xter.