FK~

Moje odkazy

Ostatní odkazy

EFF: svoboda blogování
Close Windows
Nenajdete mě na Facebooku ani Twitteru
Rozpad EU
Jsem členem FSF
Jsem členem EFF

CLOC: počítáme řádky kódu

vydáno: 30. 9. 2015 23:10, aktualizováno: 1. 10. 2015 01:26

Když si stáhnu zdrojové kódy nějakého programu, jednou z prvních věcí, které zkoumám, je, v čem je to napsané a kolik toho je. Počet řádků kódu považuji za celkem důležitý ukazatel, ale o tom zase někdy příště… Programovací jazyk můžeme zjistit podle přípon souborů nebo nahlédnutím do nich. Řádky zase můžeme spočítat pomocí příkazu wc z GNU coreutils. Ale pro tyto úkoly existuje daleko lepší specializovaný nástroj, který se jmenuje cloc (Count Lines of Code).

Instalace

Program máte pravděpodobně ve své distribuci, takže si ho snadno nainstalujete přes balíčkovací systém. Např. v Debianu/Ubuntu příkazem:

apt install cloc

Základní použití

Použití programu je jednoduché, stačí jako parametr zadat cestu ke zdrojákům a program vypíše statistiku počtu řádků pro jednotlivé jazyky. Např. pro aktuální vývojovou verzi mého programu SQL-DK vypadá statistika takto:

$ cloc sql-dk
     180 text files.
     143 unique files.                                          
     284 files ignored.

http://cloc.sourceforge.net v 1.60  T=2.13 s (53.0 files/s, 8021.5 lines/s)
-------------------------------------------------------------------------------
Language                     files          blank        comment           code
-------------------------------------------------------------------------------
Java                            77           1463           2207           6644
XML                             13             17            415           4423
JavaServer Faces                 2             10              0            651
Bourne Shell                    11             75             58            303
XSLT                             1             28             17            164
Perl                             3             46             41            136
XSD                              1             14             14             74
CSS                              1              5              0             49
Ant                              3             46            180             22
SQL                              1              0              0              8
-------------------------------------------------------------------------------
SUM:                           113           1704           2932          12474
-------------------------------------------------------------------------------

Filtrování

Příkaz je celkem inteligentní a už ve výchozím režimu ignoruje adresáře verzovacích systémů jako .hg, .git, .svn atd. Další ignorované adresáře můžeme přidat parametrem --exclude-dir=

Taky se může stát, že jsou mezi zdrojovými kódy různé nezajímavé konfigurační soubory nebo další věci – někdy se tedy hodí odfiltrovat celé jazyky volbou --exclude-lang=.

Možnosti parametrizace jsou široké, viz man cloc.

Formátování výstupu

Základním výstupním formátem je textová tabulka vhodná pro zobrazení v terminálu. Cloc ale umí vypisovat statistiky i ve strojově čitelném formátu XML, což nám dává další možnosti.

SQL-DK

Napsal jsem si skript a XSL šablonu, které naformátují výstup pomocí programu SQL-DK a relační databáze (ano, je to kanón na vrabce :-). Výstup pak vypadá takto:

výpis statistik z programu CLOC naformátovaný pomocí SQL-DK

Máme tak k dispozici i součet řádků (kód+komentáře+prázdné) a dokonce graf (verze SQL-DK podporující grafy ještě oficiálně nevyšla, ale můžete si ji stáhnout z Mercurialu).

SQL-DK samo o sobě podporuje různé formátovače výstupu, takže to můžete konverzovat i na něco dalšího než barevnou tabulku v konsoli – třeba LaTeX, XHTML nebo XML, ale to už by byl trochu trolling – už tak ta transformace vypadá takto:

cloc → XSLT → Bash+SQL → relační databáze → SQL-DK

Upozornění: XSLT generující bashový skript je v současné verzi nedokonalé a může dojít k injektování (do bashe, ne SQL) nežádoucích hodnot (záleží, co vrací cloc). Tento skript a šablonu berte tedy spíš jako zajímavost než obecně použitelný software.

XHTML

Ale zpět k jednodušším postupům. Cloc umožňuje ke XML výstupu připojit odkaz na XSL šablonu a výsledek (XML soubor) si pak můžeme zobrazit ve webovém prohlížeči (např. Firefox).

Vygenerujeme si statistiky příkazem:

$ cloc --xsl=cloc-xhtml.xsl --out=/tmp/sql-dk.xml .

Pozor, Cloc obsahuje drobnou chybu – pokud bychom nepoužili --out= a výstup jen nasměrovali v Bashi pomocí > do souboru nebo rourou do dalšího příkazu, bude XML obsahovat i hlášky, které měly přijít na chybový výstup, a bude nevalidní.

Výsledek v prohlížeči vypadá takto:

výpis statistik z programu CLOC naformátovaný pomocí XSLT a zobrazený ve Firefoxu

V XSL šabloně jsme si (podobně jako v předchozím příkladu v SQL) doplnili další sloupec obsahující celkový počet řádků (kód+komentáře+prázdné) pro každý jazyk.

SQL

Kromě XML podporuje Cloc i výstup ve formě SQL skriptu – můžeme ho tak použít třeba i na serveru pro dávkové zpracování a statistiky plnit do databáze a následně např. zobrazovat na webu nebo třeba porovnávat, jak se počty řádků mění mezi verzemi.

Závěr

Cloc je užitečný nástroj, který nám pomůže s analýzou zdrojových kódů a umožní nám udělat si rychlou představu o zkoumaném softwaru. Díky podpoře XML si můžeme výstup naformátovat dle libosti – ať už jako barevnou tabulku s grafy v terminálu nebo třeba XHTML pro prohlížeč.

Přílohy:

Odkazy a zdroje:

  • CLOC – starý web na SourceForge
  • CLOC – aktuální zdrojáky na GitHubu
  • SQL-DK – dávkový SQL klient použitý k formátování výstupu z programu CLOC

Témata: [softwarové inženýrství] [SQL] [XML]

Komentáře čtenářů

Tento článek zatím nikdo nekomentoval

Přidat komentář

reagujete na jiný komentář (zrušit)
jméno nebo přezdívka
název příspěvku
webová stránka, blog
e-mailová adresa
nápověda: možnosti formátování
ochrana proti spamu a trollům

Náhled komentáře