rss feed articles activities all_comments

indeedgeek.de

Florian Eitel

Programmvorstellung: sloccount

Man hat ja relativ häufig einen Code-Berg vor sich liegen und weiß nicht so ganz wo man nun anfangen soll. Ich finde es hilft erst einmal den Umfang zu kennen. Dabei hilf das Programm sloccount.

sloccount zählt die Lines-of-Code in jedem Verzeichnis und sortiert dies nach Programmiersprache. Wie man in der Ausgabe unten sieht werden zu erst die Ordner gelistet und darunter die Sprachen. sloccount erkennt dabei mehr oder weniger 29 verschiedene Programmiersprachen. Es scheint aber relativ einfach zu sein diese Liste zu erweitern.

Damit man nicht jedes mal alles neu berechnen muss speichert sloccount unter $HOME/.slocdata Werte zwischen. Deshalb über die Ausgaben am Anfang nicht wundern. Darunter erscheinen einige Hochrechnungen wie viel Dollar die Entwicklung kosten würde und wie lange dies dauert. Jeder kann sich selbst überlegen wie gut er die Hochrechnung findet aber zumindest als grober Anhaltspunkt ganz brauchbar.

sloccount zählt dabei Dateien mit genau dem selben Inhalt nur einmal. Zusätzlich werden einige Formate wie HTML oder SQL nicht mit gezählt (lässt sich umstellen). Das Programm versucht auch Dateien die generiert wurden nicht mit zu zählen.

Man kann noch einige Parameter für die Berechnung des Aufwands angeben oder das Projekt in mehrere Unterprojekte aufteilen (was sich wiederum auf die Berechnung auswirkt).

Interessant ist vielleicht noch die Option --details welches für jede Datei die Programmiersprache und die Länge auflistet.


sql_logcheck $ sloccount .
Creating filelist for bin
Creating filelist for config
Creating filelist for lib
Creating filelist for migrations
Have a non-directory at the top, so creating directory top_dir
Adding /home/feitel/coding/ruby/sql_logcheck/./Rakefile to top_dir
Adding /home/feitel/coding/ruby/sql_logcheck/./README to top_dir
Adding /home/feitel/coding/ruby/sql_logcheck/./REQUIREMENTS to top_dir
Creating filelist for spec
Creating filelist for tasks
Categorizing files.
Finding a working MD5 command....
Found a working MD5 command.
Computing results.

SLOC    Directory       SLOC-by-Language (Sorted)
246     spec            ruby=246
156     lib             ruby=156
90      migrations      ruby=90
58      bin             ruby=58
35      config          ruby=35
0       tasks           (none)
0       top_dir         (none)

Totals grouped by language (dominant language first):
ruby:           585 (100.00%)

Total Physical Source Lines of Code (SLOC)                = 585
Development Effort Estimate, Person-Years (Person-Months) = 0.11 (1.37)
 (Basic COCOMO model, Person-Months = 2.4 * (KSLOC**1.05))
Schedule Estimate, Years (Months)                         = 0.23 (2.82)
 (Basic COCOMO model, Months = 2.5 * (person-months**0.38))
Estimated Average Number of Developers (Effort/Schedule)  = 0.49
Total Estimated Cost to Develop                           = $ 15,387
 (average salary = $56,286/year, overhead = 2.40).
SLOCCount, Copyright (C) 2001-2004 David A. Wheeler
SLOCCount is Open Source Software/Free Software, licensed under the GNU GPL.
SLOCCount comes with ABSOLUTELY NO WARRANTY, and you are welcome to
redistribute it under certain conditions as specified by the GNU GPL license;
see the documentation for details.
Please credit this data as "generated using David A. Wheeler's 'SLOCCount'."

Wer mehr wissen möchte kann sich die mitgelieferte Doku ansehen (optional gibt’s die auch hier).

Comments:

(howto comment?)

Nettes Tool, gefällt mir!

Was jetzt natürlich noch interessant wäre, wäre eine Möglichkeit sich Statistiken anzuzeigen.

Kleines Beispiel: Ein Open Source Projekt arbeitet mit einem Subversion Repository, in dem der Source Code liegt. Interessant wäre es jetzt natürlich zu wissen, wie viele Programmierer aktiv am Code arbeiten, wer es ins Leben gerufen hat, ob noch aktiv entwickelt wird, ob Patches von aussen eingespielt werden usw. Solche Metriken könnte man aus einem Subversion/Git/Mercurial/CVS gut rauslesen.

Kennst du so ein Programm oder müssen wir uns das wieder selbst programmieren? :)

Naja für SVN gibts ja svnstat, dass hab ich uns ja auch bei IBM aufgesetzt ;)

Ansonsten echt geiles, universell einsetzbares Tool!