JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.php?sid=716229e4865e1530dd6f2bf2a9f90f19Medaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Quellcode größe
Gehe zu Seite 1, 2  Weiter
 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
RayJunx
JLI'ler


Alter: 43
Anmeldedatum: 16.01.2006
Beiträge: 130
Wohnort: Bayern
Medaillen: Keine

BeitragVerfasst am: 13.06.2007, 15:42    Titel: Quellcode größe Antworten mit Zitat

Hi!

kann mir jemand verraten wie ich in Microsoft Visual Studio 8 nachsehen kann wie viele Zeilen code mein aktives Projekt hat? Würde das spaßes halber gerne wissen. ^^
_________________
Just a Freak
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Dr. Best
Senior JLI'ler


Alter: 34
Anmeldedatum: 17.06.2004
Beiträge: 269
Wohnort: Köln
Medaillen: Keine

BeitragVerfasst am: 13.06.2007, 16:19    Titel: Antworten mit Zitat

Hab dafür mal ein kleines Konsolenprogramm geschrieben. Wenn du willst kann ich dir das mal uploaden.
_________________

Ich bin da, wer noch?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name MSN Messenger
David
Super JLI'ler


Alter: 39
Anmeldedatum: 13.10.2005
Beiträge: 315

Medaillen: Keine

BeitragVerfasst am: 13.06.2007, 16:48    Titel: Antworten mit Zitat

Wieso will man wissen wieviel Zeilen sein Code hat? :-S
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Maxim
Senior JLI'ler



Anmeldedatum: 28.03.2004
Beiträge: 249

Medaillen: Keine

BeitragVerfasst am: 13.06.2007, 17:12    Titel: Antworten mit Zitat

damit man damit angeben kann und es mit so tollen programmen vergleichen kann Wink stimmts?

auch programm xy hat gerade mal 30000 zeilen, ich habe in meinem programm auch schon 10000.....Very Happy
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Asto
JLI'ler


Alter: 37
Anmeldedatum: 30.05.2007
Beiträge: 114
Wohnort: Dortmund
Medaillen: Keine

BeitragVerfasst am: 13.06.2007, 17:19    Titel: Antworten mit Zitat

wobei bei gleicher funktionalität kürzerer code meistens besser ist Very Happy

naja taschenrechner -> alle dateien in VC öffnen -> bei jeder datei nach unten scrollen und zeilenzahl und + eintippen -> am ende ablesen XD
_________________
"A programmer started to cuss, Because getting to sleep was a fuss, As he lay there in bed, Looping 'round in his head, was: while(!asleep()) sheep++;", Unbekannt
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Dr. Best
Senior JLI'ler


Alter: 34
Anmeldedatum: 17.06.2004
Beiträge: 269
Wohnort: Köln
Medaillen: Keine

BeitragVerfasst am: 13.06.2007, 17:36    Titel: Antworten mit Zitat

GreatFlo hat Folgendes geschrieben:
wobei bei gleicher funktionalität kürzerer code meistens besser ist Very Happy

naja taschenrechner -> alle dateien in VC öffnen -> bei jeder datei nach unten scrollen und zeilenzahl und + eintippen -> am ende ablesen XD

Viel zu umständlich. Hier ist mein Progrämmchen. Ist nicht ganz perfekt aber funktioniert einwandfrei. Hab's in ner langweiligen Vorlesung schnell geschrieben. Man tippt einfach in FileList.txt in jeder Zeile einen Dateinamen ein von einer Datei die man mitzählen will. Dann führt man das Programm aus, es rödelt ein bisschen rum und am Ende stehen da die Zeilen. Bei meinem größten Projekt sind's um die 26000 bei einer Dateigröße von 1MB Very Happy .
_________________

Ich bin da, wer noch?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name MSN Messenger
Fallen
JLI MVP
JLI MVP


Alter: 40
Anmeldedatum: 08.03.2003
Beiträge: 2860
Wohnort: Münster
Medaillen: 1 (mehr...)

BeitragVerfasst am: 13.06.2007, 18:43    Titel: Antworten mit Zitat

Ziemlich umständlich wenn man da wirklich mal ein grösseres Projekt überblicken möchte.

http://www.google.de/search?q=project+line+counter%2Bvisual+studio&sourceid=navclient-ff&ie=UTF-8&rlz=1B2GGGL_deDE207DE207
_________________
"I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse."
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Otscho
Super JLI'ler


Alter: 35
Anmeldedatum: 31.08.2006
Beiträge: 338
Wohnort: Gummibären-Gasse
Medaillen: Keine

BeitragVerfasst am: 13.06.2007, 20:09    Titel: Antworten mit Zitat

GreatFlo hat Folgendes geschrieben:
wobei bei gleicher funktionalität kürzerer code meistens besser ist Very Happy

Naja, ich wieß noch bei meinem ersten Programm war ich auch noch der Meinung. Das Resultat der Code war so zusammengeschrumpelt, dass man ihn beim zweitenmal durchlesen nicht mehr verstand und keine Change hatte ihn zu Verbessern oder Erweitern.
Lieber klar, strukturiert und übersichtlich schreiben und dafür halt mal ein paar Zeilen mehr verschwenden Wink
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
David
Super JLI'ler


Alter: 39
Anmeldedatum: 13.10.2005
Beiträge: 315

Medaillen: Keine

BeitragVerfasst am: 13.06.2007, 20:10    Titel: Antworten mit Zitat

Aha, zum Angeben. Nun, Anfänger vergessen halt das viel code nicht eqivalent für ein gutes Programm ist... Traurig egtl mit dem Codeumfang angeben zu müssen! Wink
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jonathan_Klein
Living Legend


Alter: 36
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 13.06.2007, 20:20    Titel: Antworten mit Zitat

Otscho hat Folgendes geschrieben:
GreatFlo hat Folgendes geschrieben:
wobei bei gleicher funktionalität kürzerer code meistens besser ist Very Happy

Naja, ich wieß noch bei meinem ersten Programm war ich auch noch der Meinung. Das Resultat der Code war so zusammengeschrumpelt, dass man ihn beim zweitenmal durchlesen nicht mehr verstand und keine Change hatte ihn zu Verbessern oder Erweitern.
Lieber klar, strukturiert und übersichtlich schreiben und dafür halt mal ein paar Zeilen mehr verschwenden Wink

IMHO war damit gemeint, alles unkompliziert und einfach zu halten. Nicht komplizierte und unübersichtliche Megegebilde, sonder lieber kleine, durchdachte und feine Algorithmen usw. Diese sollten natürlich auch ausführlich kommentiert und leserlich formatiert sein.
_________________
https://jonathank.de/games/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Fallen
JLI MVP
JLI MVP


Alter: 40
Anmeldedatum: 08.03.2003
Beiträge: 2860
Wohnort: Münster
Medaillen: 1 (mehr...)

BeitragVerfasst am: 13.06.2007, 21:48    Titel: Antworten mit Zitat

Ich wurde bei einem Einstellungsgespräch gefragt wieviel Zeilen Code meine Programme hatten/Was so die meisten Zeilen Code waren mit denen ich zu tun hatte (auf ein grösseres Projekt) bezogen.

Von daher hat dieses Wissen wohl doch eine gewisse Berechtigung.
_________________
"I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse."
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Asto
JLI'ler


Alter: 37
Anmeldedatum: 30.05.2007
Beiträge: 114
Wohnort: Dortmund
Medaillen: Keine

BeitragVerfasst am: 13.06.2007, 22:24    Titel: Antworten mit Zitat

ja genau jonathan, so meinte ich das. das man dazu kommentare verfassen sollte und alles leserlich bzw so ist, das man es später noch versteht, setzte ich vorraus Wink

Fallen: und du wusstest die antwort!? o.O
also ich müsste erstmal ordentlich grübeln. Okay, mit C++ fang ich grad an, aber wenn ich das jetzt bei meinen PHP-Sachen sagen sollte: Keine Ahnung. ^^

Ok ich könnte schätzen ^^
_________________
"A programmer started to cuss, Because getting to sleep was a fuss, As he lay there in bed, Looping 'round in his head, was: while(!asleep()) sheep++;", Unbekannt
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Fallen
JLI MVP
JLI MVP


Alter: 40
Anmeldedatum: 08.03.2003
Beiträge: 2860
Wohnort: Münster
Medaillen: 1 (mehr...)

BeitragVerfasst am: 13.06.2007, 22:52    Titel: Antworten mit Zitat

GreatFlo hat Folgendes geschrieben:
Fallen: und du wusstest die antwort!? o.O


Nö, sowas interessiert mich eigentlich nur am Rande, da ich aber darauf vorbereitet war konnte ich mir die nötigen Informationen besorgen.
_________________
"I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse."
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
xardias
JLI Master


Alter: 38
Anmeldedatum: 28.12.2003
Beiträge: 804
Wohnort: Palo Alto, CA
Medaillen: Keine

BeitragVerfasst am: 14.06.2007, 07:54    Titel: Antworten mit Zitat

solche größen sieht man ja in der regel auch nur als grobe richtlinie.. es besteht nunmal ein unterschied zwischen 1.000 zeilen und 10.000 zeilen egal wie ordentlich man kommentiert Wink.
genau vergleichen kann man sowas natürlich nicht.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
David
Super JLI'ler


Alter: 39
Anmeldedatum: 13.10.2005
Beiträge: 315

Medaillen: Keine

BeitragVerfasst am: 14.06.2007, 10:09    Titel: Antworten mit Zitat

[IRONIE]
CPP:
#include <iostream>
#include <fstream>
#include <dirent.h>
#include <sys/types.h>
#include <sys/stat.h>

namespace str_utils
{
   std::string& trim( std::string& str, char delim = ' ' )
   {
      std::string::size_type pos = str.find_last_not_of( delim );

      if( pos != std::string::npos )
      {
         str.erase( pos+1 );
         pos = str.find_first_not_of( delim );
         
         if ( pos != std::string::npos )
            str.erase( 0, pos );
      }
      else
         str.erase( str.begin(), str.end() );
      
      return str;
   }
}

namespace file_system
{
   bool is_dir( const char* name )
   {
      struct stat status;
      ::stat( name, &status );
      return status.st_mode & S_IFDIR;
   }

   class path
   {
   public:
      path()
         : value( "" )
      {}

      path( const std::string& path_ )
         : value( path_ )
      {
         for ( std::string::iterator it( value.begin() ); it != value.end(); ++it )
         {
            if ( ( *it ) == '\\' )
               ( *it ) = '/';
         }
      }

      path& operator+=( const std::string& lhs )
      {
         value += lhs;
         return *this;
      }

      const std::string& get_full_path() const
      {
         return value;
      }

      std::string get_filename() const
      {
         return extract( '/', false );
      }

      std::string get_extension() const
      {
         return extract( '.', false );
      }

      std::string get_path() const
      {
         return extract( '/', true );
      }

      bool is_directory() const
      {
         return is_dir( value.c_str() );
      }

   private:
      std::string extract( char delim, bool from_begin = true ) const
      {
         std::string::size_type pos = value.find_last_of( delim );
         std::string result( "" );

         if ( pos != std::string::npos && pos < value.length()-1 )
         {
            result = from_begin ? value.substr( 0, pos+1 ) : value.substr( pos+1 );
         }

         return result;
      }

   private:
      std::string value;
   };

   class directory_iterator
   {
   public:
      struct dir_search_error
         : public std::exception
      {
      public:
         dir_search_error() throw()
         {}

         ~dir_search_error() throw()
         {}

         const char* what() const throw()
         {
            return "dir_search_exception: something failed";
         }
      };

   public:
      directory_iterator( const path& path_ )
         : search_path( path_ )
         , curr()
         , directory( 0 )
         , end_dir_flag( true )
      {
         ++*this; // hm... stupid hack
      }

      ~directory_iterator()
      {
         if ( directory )
            ::closedir( directory );
      }

      directory_iterator& operator++()
      {
         if ( !directory )
            open_directory();

         struct dirent *info;

         if ( ( info = readdir( directory ) ) == 0 )
         {   
            end_dir_flag = false;
            return *this;
         }

         curr = search_path;
         curr += info->d_name;   

         if ( ( curr.is_directory() ) &&
             ( strcmp( info->d_name, "." ) &&
               strcmp( info->d_name, ".." ) ) )
         {
            curr += "/";
         }

         return *this;
      }

      bool operator!() const
      {
         return end_dir_flag;
      }

      const path* operator->() const
      {
         return &curr;
      }

   private:
      void open_directory() throw ( dir_search_error )
      {
         if ( ( directory = ::opendir( search_path.get_full_path().c_str() ) ) == 0 )
         {
            throw dir_search_error();
         }
   
         end_dir_flag = true;
      }

   private:
      path search_path;
      path curr;
      DIR* directory;
      bool end_dir_flag;
   };
}

class project_info
{
private:
   std::size_t headers;
   std::size_t codefiles;
   std::size_t lines;
   std::size_t characters;

private:
   struct simple_parser
   {
      std::size_t lines;
      std::size_t characters;

      simple_parser()
         : lines( 0 )
         , characters( 0 )
      {}

      bool open( const std::string& name )
      {
         std::ifstream stream( name.c_str() );

         if ( !stream )
            return false;

         std::string tmp;
         bool comment_block = false;
         lines = 0;
         characters = 0;

         while ( true )
         {
            std::getline( stream, tmp );

            if ( stream.eof() )
               break;

            str_utils::trim( tmp, ' ' );
            str_utils::trim( tmp, '\t' );
            std::string::size_type pos, p1, p2;

            if ( comment_block )
            {
               pos = tmp.find( "*/" );

               if ( pos != std::string::npos )
               {
                  if ( tmp.length() > 2 )
                  {
                     characters += tmp.length() - pos+2;
                     ++lines;
                  }

                  comment_block = false;
               }
            
               continue;
            }

            pos = tmp.find( "//" );

            if ( pos == std::string::npos )
               pos = tmp.find( "/*" );

            // Comments
            if ( pos != std::string::npos )
            {   
               // /* comment
               comment_block = ( tmp[ pos+1 ] == '*' ) && !is_stringlit( tmp, pos );
               
               if ( !is_stringlit( tmp, pos ) )
               {
                  if ( pos > 0 )
                  {
                     characters += pos;   
                     ++lines;
                  }
   
                  continue;
               }
            }

            ++lines;
            characters += tmp.length();
         }

         stream.close();

         return true;
      }

   private:
      bool is_stringlit( const std::string& str, std::string::size_type pos )
      {
         std::string::size_type p1, p2;

         while ( true )
         {
            p1 = str.find_first_of( "\"" );
            p2 = str.find( "\"", p1+1 );
            
            if ( p1 == std::string::npos || p2 == std::string::npos )
               break;
            
            if ( ( pos > p1 && pos < p2 ) || pos == 0 )
               return true;
         }

         return false;
      }
   };

public:
   project_info()
      : headers( 0 )
      , codefiles( 0 )
      , lines( 0 )
      , characters( 0 )
   {}

   bool parse_files( const std::string& path_ )
   {
      using namespace file_system;

      path base_path( path_ );
      directory_iterator it( base_path );
      simple_parser parser;

      for ( ; !it; ++it )
      {
         if ( it->is_directory() )
         {
            std::string name = it->get_filename();
            
            if ( name == "." || name == ".." )
               continue;

            return parse_files( it->get_full_path() );
         }
         else
         {
            std::string extension = it->get_extension();
            
            if ( extension == "cpp" || extension == "c" || extension == "h" || extension == "hpp" )
            {   
               headers = headers + ( extension == "h" || extension == "hpp" );
               codefiles = codefiles + ( extension == "cpp" || extension == "c" );

               if ( !parser.open( it->get_full_path() ) )
                  continue;

               lines += parser.lines;
               characters += parser.characters;
            }
         }
      }

      return true;
   }

   friend std::ostream& operator<<( std::ostream& out, const project_info& info )
   {
      return ( out << "Files: " << ( info.headers + info.codefiles ) << '\n'
                << "\tHeaders: " << info.headers << '\n'
                << "\tCode Files: " << info.codefiles << '\n'
                << "Lines: " << info.lines << '\n'
                << "Characters: " << info.characters );
   }
};

int main()
{
   project_info info;
   
   if ( !info.parse_files( "/home/foobar/xyz/" ) )
   {
      std::cout << "Fehler, Projektinfo konnte nicht erstellt werden" << std::endl;
   }
   else
   {
      std::cout << info << std::endl;
   }
}


Tataaa, mein Quellcode-Linien-Zähl-Programm. Keine Ahnung obs funktioniert, müsste aber halbwegs tun! Wink Warn allerdings nur 20 min Arbeit und keine Testdurchläufe, insofern... Zu allem übel nutzt es teile der POSIX API und wird nicht unter Windows funktionieren.

ABER: Dafür zählt es Kommentare nicht mit (!!!). Wobei Zeilen mit "//" // nicht berücksichtigt werden, sry! ;-P

[IRONIE]

grüße
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung Alle Zeiten sind GMT
Gehe zu Seite 1, 2  Weiter
Seite 1 von 2

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de

Impressum