Programa en C para contar líneas de código de trabajos

  • Autor Autor jackl007
  • Fecha de inicio Fecha de inicio
jackl007

jackl007

Eta
Programador
Verificación en dos pasos activada
Hola amigos, les traigo un programa que escribí en C para contar las lineas de código de tus programas o scripts en C, VB, PHP, Javascript, CSS, etc.

El programa lo que hace es leer cada salto de linea y si el número de caracteres de mayor a 4 lo cuenta como una linea de código. De esta manera puedes saber cuanto escribes.

Por ejemplo yo estoy programando una web de cero y voy escribiendo 6500 lineas de código, y usando 70 archivos.
Insertar CODE, HTML o PHP:
[URL=http://forobeta.com/usertag.php?do=list&action=hash&hash=include]#include[/URL]  <stdio.h>
[URL=http://forobeta.com/usertag.php?do=list&action=hash&hash=include]#include[/URL]  <string>
[URL=http://forobeta.com/usertag.php?do=list&action=hash&hash=include]#include[/URL]  <iostream>
[URL=http://forobeta.com/usertag.php?do=list&action=hash&hash=include]#include[/URL]  <fstream>
[URL=http://forobeta.com/usertag.php?do=list&action=hash&hash=include]#include[/URL]  <dirent.h>
[URL=http://forobeta.com/usertag.php?do=list&action=hash&hash=include]#include[/URL]  <sys/stat.h>

using namespace std;

string get_ext(string archivo);
long contar_lineas_codigo(string archivo);
string reemTexto(string temp, string bus, string por, int i);

int main(int argc, const char * argv[])
{
 
    // Directorio a examinar
    string sdirn;
    cout<<"Ingrese el nombre del directorio"<<endl;
    cin >>sdirn;
    
    DIR *dir = NULL;
    struct dirent *drnt = NULL;
    char* dirn;
    dirn = new char [sdirn.size()+1];
    strcpy (dirn, sdirn.c_str());
    
    string ext;
    long c_lineas = 0;
    int total = 0;
    
    //Recuperar archivos y carpetas del directorio indicado
    dir=opendir(dirn);
    if(dir){
        
        drnt = readdir(dir);
        while(drnt){
            ext = get_ext(drnt->d_name);
            if(ext.compare("php") == 0 or ext.compare("css") == 0){ // Aqui SOLO filtro archivos web: CSS / PHP
                total++;
                c_lineas = c_lineas + contar_lineas_codigo(sdirn + "/" + drnt->d_name); //Cuenta las lineas de cada archivo
                
            }
            drnt = readdir(dir);
        }
        closedir(dir);
    }else{
        cout<<"Error en el directorio: "<<dirn<<endl;
    }
    cout<<"Total Ficheros en "<<sdirn<<": "<<total<<endl;
    cout<<"Total Lineas: "<<c_lineas<<endl;
    
    return 0;
}

 long contar_lineas_codigo(string archivo){
     //Cuenta las lineas del archivo indicado
     string linea;
     long c = 0;
     ifstream ifArchivo (archivo);
     if (ifArchivo.is_open()){
         while (! ifArchivo.eof() ){
             getline (ifArchivo,linea);
             linea = reemTexto(linea,"\t","",1); //Quita las tabulaciones reiteradamente
             linea = reemTexto(linea,"\t","",1);
             linea = reemTexto(linea,"\t","",1);
             linea = reemTexto(linea,"\t","",1);
             remove(linea.begin(), linea.end(), ' ');
             if(linea.length()>5){
                 c++;
             }
         }       
         ifArchivo.close();
     }
     else{ cout << "No se pudo abrir el archivo: "<<archivo<<endl;};
     return c;
 }
string reemTexto(string temp, string bus, string por, int i){
    long posicion=-1;
    do{
        posicion = temp.find(bus,posicion + i);
        if (posicion!=string::npos){
            temp.replace(posicion,bus.size(),por);
        }
    }while(posicion!=string::npos);
    return temp;
}
string get_ext(string archivo){
    long pos = archivo.find_last_of(".");
    if(pos>1){
        return archivo.substr(pos+1);
    }else{
        return "";
    }  
}

Yo lo he programado en xCode (Mac), compilado para Mountain Lion Os.
Pueden compilarlo para windows / linux usando el Dev C++ u otro similar.

Espero que les sirva.
 
Muchas de esas librerias ni las conocia... no tendre problema con las librerias si lo compilo en DevC++?
 
si utilizo codeblocks no tendre ningun problema?
 
si utilizo codeblocks no tendre ningun problema?

Muchas de esas librerias ni las conocia... no tendre problema con las librerias si lo compilo en DevC++?


Las librerías utilizadas use cuando programa en Windows con el Dev C++, así que no debe dar problema. En cuanto al CodeBlocks no creo que de problema.

Espero que comenten si todo va bien usando Dev o CodeBlocks, en teoría debe compilar, son librerías estándares.
 
Eres todo un crack jackl 🙂

Se ve muy bueno, yo hace mucho que no programo en C.
Y también luego pongo un aporte de un ejemplo de STRUCT que hice en C, de +200 líneas creo.

Saludos!
 
jackl007 me da error en esta linea #include
 
Atrás
Arriba