CLOC est un petit prog Perl qui retourne des stats sur le code qu’on a dans un dossier.
Sur Ubuntu, ça s’installe avec un sudo apt-get install cloc
, et un cloc /home/sam/work
plus tard, on obtient un rapport sur le nombre de fichiers / lignes de code par langage :
--------------------------------------------------------- Language files blank comment code --------------------------------------------------------- HTML 10585 392921 49870 2909814 Javascript 1497 118180 220836 656645 Python 3132 104173 129888 517995 CSS 399 23324 10117 164944 XML 2860 7435 16148 89942 Java 194 7364 34214 30960 XSLT 83 3902 1992 25842 Bourne Shell 91 1998 2511 16263 C 48 2824 4020 11810 C/C++ Header 167 4256 7775 10015 SQL 59 1640 1347 8961 LESS 50 1371 1308 5884 C++ 35 1244 782 5772 make 41 806 283 3691 QML 56 413 906 2458 Visualforce Page 17 175 22 1253 Bourne Again Shell 17 109 145 883 m4 2 99 22 707 SASS 20 127 41 596 ActionScript 1 71 121 553 DOS Batch 8 63 19 359 DTD 5 159 280 355 PHP 2 58 250 315 D 2 32 -2 171 CMake 4 28 11 124 Ruby 5 37 9 120 CoffeeScript 1 30 10 95 Teamcenter def 1 0 0 91 XSD 3 10 0 78 YAML 5 7 0 49 Arduino Sketch 1 17 27 41 IDL 2 12 0 38 MATLAB 1 21 62 35 C Shell 1 8 6 18 Visual Basic 1 0 0 18 ASP.Net 1 4 0 9 --------------------------------------------------------- SUM: 19397 672918 483020 4466904 ---------------------------------------------------------
Pour le HTML, on a compris que j’étais un dev très orienté Web. Mais, horreur, coderai-je plus de Javascript que de Python ?
Non, je vous rassure. C’est juste que mon dossier de travail contient moult documentation Web dumpées pour être consultées hors ligne, de nombreuses libs JS dupliquées (j’aime pas les CDN) et aucun de mes virtualenv.
Rien que la doc d’angular :
find -iname "*.js" | grep angular | wc 632 |
On notera qu’il y a deux fois plus de fichiers Python (3132 c’est pas énorme quand on y pense) que de fichiers JS, mais un peu moins de lignes malgré tout, ce qui reflète bien la tendance à tasser beaucoup de code dans un seul gros fichier en JS.
2860 fichiers XML ? Bordel, mais d’où viennent-ils ?
find -iname "*.xml" | grep docker | wc 2790 |
Ah, ok.
Je serais curieux de savoir ce que ça donne pour un dev scientifique, un sys admin, un débutant, un chevronné, etc.
--exclude-dir="vendor"
fait pas mal le ménage :)Sysadmin o/
Environnement fabric/salt. Par contre il faut que je creuse pour savoir d’où vient le Pascal…
http://pastie.org/9286308
Hmmm bon ok, on va exclure les virtual env python quand même
http://pastie.org/9286324
Apprenti scientifique : http://goo.gl/Yt7Sv8
Le HTML c’est que de la doc, et le langage D, je n’ai aucune idée d’où il sort !
Dev web python aussi ?
J’ai fais un rerun, cette fois avec une exclusion plus drastique :
1 ligne de commentaire pour 5 de code, c’est un bon ratio.
Saleté de mise en forme.
http://goo.gl/MmYK5x
0bin que ca soit en (15ans de) PHP ou en (2ans de) Python, ratio 1 ligne de comment pour 3 de codes, Constant quoi ;)
T’as été très prolifique en Python dis moi :)
depuis la fac (mais je ne me qualifierai pas de dev scientifique quand même…)
sur le workspace d’éclipse (mais je viens de le réinstaller…)
je code plus en HTML depuis un baille, mais vive doxygen et sphinx
@sam avec “trigger happy” j’ai pu produire 5/6 services facilement.
donc ca va vite et c’est facile ;)
#aparté
c’est tout ca qu’un de ces 4 je passerai à crossbar ;)
#fin-aparté
Sur ubuntu, ça s’installe avec un apt-get cloc
joe@xubuntu:~$ sudo apt-get cloc
[sudo] password for joe:
E: L’opération cloc n’est pas valable
Et moi qui avait une confiance totale en vous :(
sudo apt-get install cloc
:)Sur mon répertoire de travail à la maison (j’ai comptabilisé sur mes projets persos, mais ça devient illisible, avec le nombre de code source extrait de github que j’ai).
Le PHP trust la troisième place, mais en réalité, j’ai dû écrire une dizaine de lignes dans ma vie à tout pété. Ça correspond aux dumps de codes de mes collègues (je suis le seul dev python de ma boite) que je dois souvent reprendre. Le ratio commentaire/code est inquiétant, mais ça ne me surprend pas.
Le seul truc réellement représentatif, c’est python et xslt. Dommage qu’il oublie les fichiers .rst d’ailleurs.
Je bosse dans le milieu de l’édition depuis ~1an.
Ouai parceque faire majoritairement du CSS, c’est pas humain quand même.
-------------------------------------------------------------------------------
Language files blank comment code
-------------------------------------------------------------------------------
Python 538 23167 26846 83526
QML 113 2197 1295 11003
make 32 619 236 8434
C 25 1425 3118 6284
vim script 54 688 776 6024
HTML 31 91 29 5008
C++ 38 936 681 4839
C/C++ Header 28 1106 1926 3748
IDL 15 133 0 598
Javascript 4 79 145 389
YAML 9 3 2 267
Bourne Shell 4 26 143 163
XML 1 0 0 7
DOS Batch 2 0 0 3
-------------------------------------------------------------------------------
SUM: 894 30470 35197 130293
-------------------------------------------------------------------------------
Ceci dit, j’ai un doute sur le nombre de commentaires, ça me parait énorme.
Et puis bon c est dommage il manque tout le code en 4D qui trusterais la 1er place … mais comme ça se voit, le perle c est pas mon truc … alors de la a contribué pour la reconnaissance de 4D :)
Bcp de 4D, des Middleware python, des applis python qt, et un peu de verilog (ignoré aussi)
La quantité de python est surévaluée, à cause de quelques anciens projets que je sauvegardais dans des repository CPOLD. Maintenant j’utilise github, je me suis embourgeoisé.
Ça détecte pas le langage haxe, et c’est bien dommage. J’en avais fait un peu pour tester.
Il faudrait faire un outil du même genre pour les graphistes :
– combien de pixels dans des jpeg, png, photoshop, … Avec des statistiques par couleurs RGB.
– combien de vecteurs dans des svg.
– combien de polygones dans des fichiers Blender/3DS
– etc.
Autre idée : le plus important, c’est pas la quantité de lignes de code, mais la quantité de temps qu’on passe dessus. Il faudrait un plugin SublimeText qui enregistre périodiquement le temps passé sur chaque fichier, les fichiers trouvés à chaque fois qu’on fait une recherche, le nombre de sauvegarde de chaque fichier, …
C’est tellement chouette les stats. Et plus c’est inutile, plus c’est indispensable.
@Khertan: comment on peut avoir 8434 lignes de make files ?
Je crains que si, par je-ne-sais-quel miracle, j’arrivais à faire tourner ce bousin sur mon windows, je n’apprenne que le seul langage de programmation avec lequel j’ai pu travailler ne soit le Code Génétique (suis-je un des rares à avoir hacker le code d’un virus* ici ^^ ?)
* de laitue ^^’
Ton honnêteté de perdra ^^
@réchèr
Pour ce qui est du temps passé à coder, si tu es sous gnome il existe une extension pour ca =) https://extensions.gnome.org/extension/425/project-hamster-extension/
Nan, c’est manuel. Il parle d’un truc automatique.
Ce serait bien cool en automatique effectivement, peut-être en 2020, mais bon ce ne sera plus utile puisque on aura nos stats affichés direct dans la rétine, juste à côté de la courbe des perfs sexuelles ;)
Dev iOS:
-------------------------------------------------------------------------------
Language files blank comment code
-------------------------------------------------------------------------------
C/C++ Header 971 13413 22002 25423
Objective C 176 5270 2976 19491
C++ 63 4015 1547 18310
Objective C++ 187 5832 2758 15761
Javascript 2 257 166 641
Python 2 144 167 308
MUMPS 1 42 0 238
Bourne Shell 2 28 19 117
CMake 4 36 11 103
HTML 1 15 0 92
make 1 7 0 48
C 1 2 7 14
-------------------------------------------------------------------------------
SUM: 1411 29061 29653 80546
-------------------------------------------------------------------------------
(http://pastebin.com/69j5J1Ds)
Y a de l’objective C++ ? Je savais même pas.
Dev web java python avec des jeux en mono et java
So je dev en python et java surtout avec des petits projets dans les langages annexes selon techno (erlang est sur représenté mais faut dl des grosses librairies pour faire des projets web).
fuuuuuuu la mise en page -_- https://gist.github.com/bussiere/d3292549dbe3a1b3c65e
Assembly, c’est le package mono, ou c’est de l’assembleur ?
`sloccount` fait un peu pareil mais pas tout à fait :
(apt-get install sloccount)
$ sloccount .
[...warning et autres trucs chiants]
SLOC Directory SLOC-by-Language (Sorted)
[...]
383 clients python=383
339 search python=339
224 docs php=184,java=40
[...]
17 templates xml=17
14 views python=14
7 installer sh=7
0 media (none)
Totals grouped by language (dominant language first):
python: 22127 (97.47%)
php: 184 (0.81%)
xml: 173 (0.76%)
sh: 170 (0.75%)
java: 40 (0.18%)
ruby: 8 (0.04%)
Total Physical Source Lines of Code (SLOC) = 22,702
Development Effort Estimate, Person-Years (Person-Months) = 5.31 (63.69)
(Basic COCOMO model, Person-Months = 2.4 * (KSLOC**1.05))
Schedule Estimate, Years (Months) = 1.01 (12.12)
(Basic COCOMO model, Months = 2.5 * (person-months**0.38))
Estimated Average Number of Developers (Effort/Schedule) = 5.26
Total Estimated Cost to Develop = $ 716,983
(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'."
en fait, ce qui serai intéressant, se serai de savoir ce qu’on a écrit, ce qu’on a copié d’ailleurs, et ce qui est généré automatiquement…
parce que la génération de doc, les autoconf, automake et autre architectures de projets auto-générés, ce n’est pas optimisés et ça écrit le code que l’on ne veut plus faire (qui écrit soit même son Makefile si le projet contient plus de 3 fichiers ?…)
mais j’adore toujours quand même vos approches et réflexions toujours constructives (même si souvent chronophage ;)
Ça dépend. Ça permet de voir aussi la quantité de boiler plate selon les technos utilisées. Par exemple, en Java tu verras souvent pas mal de XML, en C du make file, etc. C’est pas une info inintéressante je trouve.
Voilà ce que ça donne pour un dev scientifique:
Le HTML/Js c’est de la doc doxygen pour le code C, et sphinx pour python. C’est pas moi qui ait écrit tout ce C, par contre j’ai dû faire une bonne partie du python. Je ne sais pas du tout d’où sort le Fortran…
Ouai parce que 3 million de lignes de C, ça fait mal au fion quand même.
Je suis trop con, je viens de piger: dans le tas y’a des forks de numpy et scilab (d’où le fortran)… En ciblant mieux, ça donne:
J’ai 3 copies du projet qui fait 1 million de lignes de C, mais ouais, c’est notre programme principal, qui grossit depuis les années 90.
Dev Java, comme vous l’aurez compris…
http://paste.h3b.us/?aa5ab20f3f5b3a05#5iMczF/do+zp9IYVDbxM9zO6lr1MhH84QcoaGMb24IE=
Un grand débutant :
——————————————————————————-
Language files blank comment code
——————————————————————————-
XML 2 487 4 5349
Java 41 676 282 3497
C 57 538 166 3494
CSS 25 361 62 3146
HTML 41 489 118 2539
Javascript 20 177 71 993
Perl 13 54 1 235
C/C++ Header 14 32 24 151
Bourne Shell 4 26 10 107
Lua 1 1 0 23
make 1 3 0 7
Assembly 1 2 1 5
——————————————————————————-
SUM: 220 2846 739 19546
——————————————————————————-
J’ai bien la haine que le Java de la fac fasse 3 ligne de plus que le C que j'<3
(le Lua ok je sais pas d'où il vient)
Mise en page…
http://sebsauvage.net/paste/?3651fe690737baed#sHeF/rHQUwKmZBsv9Fm7r1HTC9Vk1HLThRfMm35WBxE=