Jak policzyć linie kodu?
Po zakończeniu każdego kamienia milowego warto dowiedzieć się ile kodu mamy w projekcie. Jak wiadomo, kod liczymy w liniach. Nie wystarczy jednak policzyć wystąpień znaków nowej linii w plikach źródłowych, gdyż często stosujemy puste linie w celu zwiększenia przejrzystości kodu. W tym wpisie przedstawiam skrypt Bash-owy, który zlicza linie kodu zgrupowane według języków programowania.
Grep, RegExp-y i WildCard-y
Aby policzyć ile linii kodu jest w pliku index.html należy użyć programu grep. Zastosowanie prostego wyrażenia regularnego odsiewa puste linie oraz linie zawierające tylko białe znaki.
grep -vc "^[\t ]*$" index.html
W celu zliczenia linii kodu dla wszystkich plików html w katalogu można zastosować wildcard.
grep -vc "^[\t ]*$" *.html
Trochę Bash-a
Poniższy skrypt nie jest w pełni uniwersalny. Należy go zmodyfikować wprowadzając odpowiednie wyrażenia wildcard. Nic nie stoi na przeszkodzie, żeby w zależności od projektu dopisać inne języki programowania lub usunąć nieużywane.
#!/bin/bash
# funkcja pobiera listę wildcardów
# wypisuje na ekran ilość linii kodu
function printlines() {
local WILDCARD
local LINES=0
for WILDCARD in $@; do
local L=`grep -vc "^[\t ]*$" $WILDCARD`
LINES=$[$LINES + $L]
done;
echo $LINES;
}
# wildcards - tu zmieniamy
HTML="templates/*.html"
CSS="public/css/*.css"
JS="public/js/*.js public/js/modules/*.js public/js/classes/*.js"
PYTHON="config/*.py controllers/*.py lib/*.py model/*.py"
# echo
echo "HTML :" `printlines $HTML` "linii"
echo "CSS :" `printlines $CSS` "linii"
echo "JavaScript :" `printlines $JS` "linii"
echo "Python :" `printlines $PYTHON` "linii"
Przykładowy wynik działania skryptu:
HTML : 2020 linii CSS : 1204 linii JavaScript : 2319 linii Python : 4240 linii
Po co to komu?
Jeżeli używamy skryptu systematycznie, możemy obserwować przyrost kodu podczas rozwoju aplikacji lub nawet spadek ilości kodu po optymalizacji. Oczywistym zastosowaniem jest również publikacja wyników działania skryptu się na stronie domowej projektu

Ciekawy wpis, przyda się
A swoją drogą próbowałem Zlajkować Facebooka, ale jest jakiś error. pzdr!
Polecam:
http://cloc.sourceforge.net/
http://labs.ohloh.net/ohcount
Dzięki za info o błędzie. Już działa
A o wc -l słyszał?
`wc -l` zlicza wszystkie wystąpienia znaku przełamania wiersza.
Moje rozwiązanie zlicza tylko niepuste linie.
ls -la | grep -v ^$ | wc -l — i co teraz
?
ls -la | grep -vc ^$ — tak lepiej