Als je aan een project werkt en je moet je vorderingen indienen, kunnen statistieken een waardemeter zijn voor uw code. Cloc is een krachtig hulpmiddel om uw coderegels te tellen, zonder de commentaar en lege regels en zelfs gesorteerd volgens programmeertaal.
Cloc is beschikbaar in alle grote Linux distributies. Om cloc in openSUSE 13.2 te installeren, voer je de volgende opdracht uit:
dany@linux-cj0r:~> sudo OCICLI https://software.opensuse.org/ymp/devel:tools/openSUSE_13.2/cloc.ymp
Als u verdergaat, dan worden de volgende installatiebronnen toegevoegd:
* http://download.opensuse.org/repositories/devel:/tools/openSUSE_13.2/
* http://download.opensuse.org/update/13.2/
Als verdergaat, dan zullen de volgende softwarepakketten worden geïnstalleerd op uw systeem:
* cloc
Continue? y/N
y
Toevoegen van installatiebronnen...
Indien de softwarebron devel:tools nog toegevoegd moet worden, moet je deze nog vertrouwen om de GnuPGP-sleutel te importeren.
cloc werkt per bestand of per map. Om de coderegels in een bestand of map te tellen, geef je de bestands- of mapnaam mee met de cloc opdracht. We maken de map Mijn_project met één bash script.
dany@linux-cj0r:~>mkdir Mijn_project
dany@linux-cj0r:~>cat > Mijn_project/bash.sh
#!/bin/bash echo "Hallo Wereld"
De laatste opdracht sluit je af met de toetscombinatie Ctrl+d. Het aantal regels code tel je met cloc met de volgende opdracht:
dany@linux-cj0r:~> cloc Mijn_project/bash.sh
1 text file.
1 unique file.
0 files ignored.
http://cloc.sourceforge.net v 1.64 T=0.01 s (135.9 files/s, 271.8 lines/s)
-------------------------------------------------------------------------------
Language files blank comment code
-------------------------------------------------------------------------------
Bourne Shell 1 0 0 2
-------------------------------------------------------------------------------
We voegen nog een perl script toe en tellen alle coderegels in de volledige map met de volgende opdrachten:
dany@linux-cj0r:~>cat > Mijn_project/perl.pl
#!/usr/bin/perl print "Hallo Wereld\n" dany@linux-cj0r:~>ls Mijn_project/
bash.sh perl.pl dany@linux-cj0r:~>cloc Mijn_project/
2 text files. 2 unique files. 0 files ignored. http://cloc.sourceforge.net v 1.64 T=0.01 s (269.6 files/s, 674.0 lines/s) ------------------------------------------------------------------------------- Language files blank comment code ------------------------------------------------------------------------------- Prolog 1 1 -1 3 Bourne Shell 1 0 0 2 ------------------------------------------------------------------------------- SUM: 2 1 -1 5 -------------------------------------------------------------------------------
Oeps, hier herkent cloc ons perl script als een prolog script. Deze demo gebruikt zeer korte scripts, waardoor cloc niet kan bepalen welke programmeertaal gebruikt wordt. In plaats van per programmeertaal te werken, kan cloc de resultaten ook per bestand weergeven:
dany@linux-cj0r:~> cloc --by-file Mijn_project/
2 text files.
2 unique files.
0 files ignored.
http://cloc.sourceforge.net v 1.64 T=0.01 s (256.3 files/s, 640.7 lines/s)
----------------------------------------------------------------------------------
File blank comment code
----------------------------------------------------------------------------------
Mijn_project/perl.pl 1 -1 3
Mijn_project/bash.sh 0 0 2
----------------------------------------------------------------------------------
SUM: 1 -1 5
----------------------------------------------------------------------------------
In het volgende voorbeeld tellen we de coderegels in een gedownload gecomprimeerd bestand (Roundcube Webmail).
dany@linux-cj0r:~>wget http://sourceforge.net/projects/roundcubemail/files/roundcubemail/1.1.3/roundcubemail-1.1.3-complete.tar.gz
--2015-09-26 16:36:30-- http://sourceforge.net/projects/roundcubemail/files/roundcubemail/1.1.3/roundcubemail-1.1.3-complete.tar.gz Herleiden van sourceforge.net (sourceforge.net)... 216.34.181.60 Verbinding maken met sourceforge.net (sourceforge.net)|216.34.181.60|:80... verbonden. HTTP-verzoek is verzonden; wachten op antwoord... 302 Found Locatie: http://sourceforge.net/projects/roundcubemail/files/roundcubemail/1.1.3/roundcubemail-1.1.3-complete.tar.gz/download [volgen...] --2015-09-26 16:36:31-- http://sourceforge.net/projects/roundcubemail/files/roundcubemail/1.1.3/roundcubemail-1.1.3-complete.tar.gz/download Verbinding maken met sourceforge.net (sourceforge.net)|216.34.181.60|:80... verbonden. HTTP-verzoek is verzonden; wachten op antwoord... 302 Found Locatie: http://downloads.sourceforge.net/project/roundcubemail/roundcubemail/1.1.3/roundcubemail-1.1.3-complete.tar.gz?r=&ts=1443278191&use_mirror=netix [volgen...] --2015-09-26 16:36:31-- http://downloads.sourceforge.net/project/roundcubemail/roundcubemail/1.1.3/roundcubemail-1.1.3-complete.tar.gz?r=&ts=1443278191&use_mirror=netix Herleiden van downloads.sourceforge.net (downloads.sourceforge.net)... 216.34.181.59 Verbinding maken met downloads.sourceforge.net (downloads.sourceforge.net)|216.34.181.59|:80... verbonden. HTTP-verzoek is verzonden; wachten op antwoord... 302 Found Locatie: http://netix.dl.sourceforge.net/project/roundcubemail/roundcubemail/1.1.3/roundcubemail-1.1.3-complete.tar.gz [volgen...] --2015-09-26 16:36:31-- http://netix.dl.sourceforge.net/project/roundcubemail/roundcubemail/1.1.3/roundcubemail-1.1.3-complete.tar.gz Herleiden van netix.dl.sourceforge.net (netix.dl.sourceforge.net)... 87.121.121.2 Verbinding maken met netix.dl.sourceforge.net (netix.dl.sourceforge.net)|87.121.121.2|:80... verbonden. HTTP-verzoek is verzonden; wachten op antwoord... 200 OK Lengte: 4566830 (4,4M) [application/x-gzip] Wordt opgeslagen als: ‘roundcubemail-1.1.3-complete.tar.gz’ roundcubemail-1.1.3-complete.tar.gz 100%[==================================================================>] 4,35M 1,04MB/s in 4,3s 2015-09-26 16:36:36 (1,02 MB/s) - '‘roundcubemail-1.1.3-complete.tar.gz’' opgeslagen [4566830/4566830] dany@linux-cj0r:~>cloc roundcubemail-1.1.3-complete.tar.gz
2115 text files. 2076 unique files. 288 files ignored. http://cloc.sourceforge.net v 1.64 T=4.59 s (398.3 files/s, 65567.9 lines/s) ------------------------------------------------------------------------------- Language files blank comment code ------------------------------------------------------------------------------- PHP 1254 19150 49541 154728 Javascript 234 3473 3477 31320 CSS 85 2221 390 14561 HTML 80 703 39 3806 Pascal 22 1774 4343 3454 SQL 67 467 190 1937 Bourne Shell 21 293 14 1529 JSON 37 0 0 1465 XML 20 19 0 1153 diff 2 5 259 510 C 3 18 22 64 DTD 1 32 17 54 Python 1 8 2 22 YAML 1 4 0 16 DOS Batch 1 0 0 11 ------------------------------------------------------------------------------- SUM: 1829 28167 58294 214630 -------------------------------------------------------------------------------
De in openSUSE 13.2 gebruikte kernel bevat:
dany@linux-cj0r:~> cloc /usr/src/linux/
12811 text files.
12598 unique files.
1625 files ignored.
http://cloc.sourceforge.net v 1.64 T=23.89 s (468.4 files/s, 61212.8 lines/s)
--------------------------------------------------------------------------------
Language files blank comment code
--------------------------------------------------------------------------------
C/C++ Header 9116 170962 306494 877970
make 1883 7493 7343 30832
C 56 3947 3163 24549
Perl 20 1831 1761 10656
Bourne Shell 38 472 807 2468
Assembly 56 467 1144 1761
Python 6 180 324 1612
C++ 1 209 57 1529
yacc 3 239 95 1435
lex 3 154 86 855
Bourne Again Shell 4 104 56 489
NAnt script 1 92 0 366
Pascal 1 17 0 80
awk 1 5 0 29
--------------------------------------------------------------------------------
SUM: 11189 186172 321330 954631
--------------------------------------------------------------------------------
De handleiding van cloc kan je opvragen met de standaard opdrachten cloc
en man cloc
.