Skip to content

Instantly share code, notes, and snippets.

@mwgkgk
Forked from death/repo-stats.csv
Created January 25, 2020 07:13
Show Gist options
  • Save mwgkgk/2bbbe09c405cd17981e266e2f46e8d48 to your computer and use it in GitHub Desktop.
Save mwgkgk/2bbbe09c405cd17981e266e2f46e8d48 to your computer and use it in GitHub Desktop.
Lisp repos dataset
name author loc ndeps ndepstr ndeprepos ndeprepostr cost costtr
qtools-ui Shinmera 4579 111 250 11 150 6.421 145.421
qtools Shinmera 5315 36 219 14 147 8.685 141.685
coleslaw kingcons 1629 18 199 13 136 11.371 134.371
websocket-driver fukamachi 853 25 185 13 130 12.147 129.147
quickutil tarballs-are-good 5813 20 189 13 134 7.187 128.187
chirp Shinmera 3035 15 183 12 129 8.965 125.965
dexador N/A 2325 24 180 21 127 18.675 124.675
lack fukamachi 2831 102 180 24 127 21.169 124.169
clack fukamachi 4455 116 180 37 127 32.545 122.545
weblocks-stores html 2350 40 123 15 94 12.65 91.65
cl-feedparser TBRSS 1440 9 135 4 89 2.56 87.56
cl-htm sirherrbatka 1830 9 120 9 87 7.17 85.17
drakma-async orthecreedence 2243 12 110 10 82 7.757 79.757
mgl-mat melisgl 5922 13 110 11 82 5.078 76.078
sucle gmasching 10592 100 124 24 86 13.408 75.408
wookie orthecreedence 1895 23 104 14 76 12.105 74.105
cloture ruricolist 4847 20 109 19 77 14.153 72.153
vector-classes sirherrbatka 298 7 104 7 72 6.702 71.702
staple Shinmera 3082 29 100 15 74 11.918 70.918
fxml TBRSS 17157 51 133 18 87 0.843 69.843
weblocks skypher 24725 67 123 28 94 3.275 69.275
mgl melisgl 15781 18 114 12 84 0 68.219
http-body fukamachi 2971 14 97 11 71 8.029 68.029
Gsharp robert-strandh 9350 10 142 8 77 0 67.65
spinneret ruricolist 1999 14 103 8 69 6.001 67.001
spatial-trees rpav 1562 15 129 5 68 3.438 66.438
crane eudoxia0 1660 11 93 10 68 8.34 66.34
snooze joaotavora 2418 18 89 15 68 12.582 65.582
cl-cuda melisgl 7494 23 101 13 73 5.506 65.506
mgl-gpr melisgl 1338 3 80 2 65 0.662 63.662
numcl numcl 4460 13 99 12 67 7.54 62.54
cl-random tpapp 2566 11 79 10 64 7.434 61.434
jonathan Rudolph-Miller 1790 11 88 9 63 7.21 61.21
cl-dbi fukamachi 1327 27 87 11 62 9.673 60.673
oclcl gos-k 6492 15 92 13 67 6.508 60.508
fast-http fukamachi 4104 11 88 8 63 3.896 58.896
roan dfmorrison 10292 25 87 14 69 3.708 58.708
bknr-web hanshuebner 13897 38 98 20 72 6.103 58.103
cl-pattern arielnetworks 426 7 83 4 58 3.574 57.574
cl-syntax m2ym 180 14 81 8 57 7.82 56.82
quicklisp-controller quicklisp 13571 15 92 15 70 1.429 56.429
cl-data-structures sirherrbatka 26749 19 117 17 83 0 56.251
sxql fukamachi 3116 8 84 7 59 3.884 55.884
manifest N/A 283 8 66 8 56 7.717 55.717
pngload hackertheory 1086 8 69 6 53 4.914 51.914
restas archimag 1863 11 68 9 53 7.137 51.137
serapeum TBRSS 12984 21 97 19 64 6.016 51.016
hunchensocket capitaomorte 713 11 65 10 50 9.287 49.287
opticl slyrus 3868 11 69 9 53 5.132 49.132
sketch vydd 1545 12 63 10 48 8.455 46.455
specialized-function numcl 770 8 71 7 47 6.23 46.23
function-cache AccelerationNet 996 10 66 8 47 7.004 46.004
constantfold numcl 296 6 70 5 46 4.704 45.704
type-r guicho271828 443 4 70 3 46 2.557 45.557
specializable sbcl 2445 21 67 5 48 2.555 45.555
eazy-gnuplot guicho271828 750 6 70 5 46 4.25 45.25
type-i guicho271828 320 6 69 5 45 4.68 44.68
cl-cookie fukamachi 426 7 61 6 45 5.574 44.574
common-doc CommonDoc 2371 23 68 10 46 7.629 43.629
zacl xach 1949 20 57 17 45 15.051 43.051
Petalisp marcoheisig 9997 57 89 12 53 2.003 43.003
qt-libs Shinmera 1288 78 68 6 44 4.712 42.712
antik antik 9421 17 66 13 52 3.579 42.579
buildnode AccelerationNet 3353 19 61 12 45 8.647 41.647
green-threads thezerobit 403 4 56 3 42 2.597 41.597
cl-ana ghollisjr 20330 297 127 12 61 0 40.67
trivia guicho271828 4444 29 69 11 45 6.556 40.556
hunchentoot edicl 5793 21 61 17 46 11.207 40.207
scribble frideau 1026 7 56 6 41 4.974 39.974
inferior-shell qitab 592 9 55 8 40 7.408 39.408
commonqt commonqt 5072 24 68 10 44 4.928 38.928
rtg-math cbaggers 10163 6 67 4 49 0 38.837
cl-plplot HazenBabcock 8271 7 72 4 47 0 38.729
cl-csv AccelerationNet 1825 13 52 7 40 5.175 38.175
fare-quasiquote frideau 837 9 53 4 38 3.163 37.163
3bil2 3b 2331 17 49 16 39 13.669 36.669
pzmq orivej 1203 11 53 7 37 5.797 35.797
bknr-datastore hanshuebner 8423 40 64 14 44 5.577 35.577
curry-compose-reader-macros eschulte 38 2 44 2 34 1.962 33.962
graph eschulte 3079 5 47 5 37 1.921 33.921
meta frideau 148 1 44 1 34 0.852 33.852
ucons marcoheisig 237 2 44 2 34 1.763 33.763
fn cbaggers 424 1 44 1 34 0.576 33.576
zs3 xach 3728 6 50 6 37 2.272 33.272
cl-interpol edicl 885 4 45 3 34 2.115 33.115
cl-neo4j kraison 992 9 44 8 34 7.008 33.008
pythonic-string-reader smithzvk 49 1 44 1 33 0.951 32.951
matplotlib-cl koji-kojiro 114 5 42 4 33 3.886 32.886
micmac melisgl 1174 2 45 1 34 0 32.826
cl-async-future orthecreedence 353 4 46 3 33 2.647 32.647
toot gigamonkey 2544 12 44 12 35 9.456 32.456
cl-sdl2-ttf Failproofshark 444 11 44 8 32 7.556 31.556
sdl2kit lispgames 657 9 45 6 32 5.343 31.343
named-readtables melisgl 1686 3 44 1 33 0 31.314
glkit lispgames 1061 7 45 6 32 4.939 30.939
varjo cbaggers 18274 20 67 15 49 0 30.726
ahungry-fleece ahungry 2408 7 42 6 33 3.592 30.592
pp-toml pnathan 547 16 42 8 31 7.453 30.453
hyperluminal-db cosmos72 698 7 40 5 31 4.302 30.302
drakma edicl 1953 10 42 9 32 7.047 30.047
squirl BradWBeer 3990 6 79 2 34 0 30.01
blackbird orthecreedence 1245 4 44 3 31 1.755 29.755
fact-base inaimathi 619 4 41 4 30 3.381 29.381
cl-sdl2-image lispgames 135 4 40 4 29 3.865 28.865
cl-glfw3 AlexCharlton 1245 5 41 4 30 2.755 28.755
clws 3b 2273 7 46 7 31 4.727 28.727
mgl-pax melisgl 4859 11 44 9 33 4.141 28.141
smart-buffer fukamachi 174 6 37 5 28 4.826 27.826
time-interval slyrus 189 2 38 2 28 1.811 27.811
gpg-utilities tlikonen 1433 2 39 2 29 0.567 27.567
cl-xdg eadmund 489 11 41 9 28 8.511 27.511
cl-smtp cl-smtp 1557 5 38 5 29 3.443 27.443
trivial-main-thread Shinmera 176 3 35 3 27 2.824 26.824
parenscript vsedach 9248 6 47 5 36 0 26.752
cl4l hbcbh1999 2745 4 39 4 29 1.255 26.255
proc-parse fukamachi 796 5 36 4 27 3.204 26.204
secure-random avodonosov 49 1 35 1 26 0.951 25.951
quri fukamachi 2063 7 37 6 28 3.937 25.937
cl-yaml eudoxia0 1088 11 36 9 27 7.912 25.912
bodge-glfw borodust 116 7 37 5 26 4.884 25.884
april phantomics 5275 20 37 9 31 3.725 25.725
cl-sdl2 lispgames 2388 8 40 6 28 3.612 25.612
lla tpapp 2430 8 38 7 28 4.57 25.57
cerberus fjames86 3484 10 39 9 29 5.516 25.516
cl-async orthecreedence 4524 32 43 15 30 10.476 25.476
cl-oclapi gos-k 2536 7 38 5 28 2.464 25.464
cl-cairo2 rpav 6005 18 41 9 31 2.995 24.995
local-time dlowe-net 2453 5 38 3 27 0.547 24.547
manardb ilitirit 2155 7 35 6 26 3.845 23.845
hyperluminal-mem cosmos72 6498 8 39 7 30 0.502 23.502
clyc white-flame 12930 5 47 5 36 0 23.07
deploy Shinmera 976 5 32 5 24 4.024 23.024
parsley mfiano 151 4 31 4 23 3.849 22.849
cl-sxml eadmund 170 6 36 5 23 4.83 22.83
cl-rss kpe 225 5 29 4 23 3.775 22.775
xhtmlgen hanshuebner 325 3 36 2 23 1.675 22.675
burgled-batteries pinterface 2558 8 34 7 25 4.442 22.442
cl-random-forest masatoi 2746 8 29 7 25 4.254 22.254
cl-tls shrdlu68 4815 5 35 5 27 0.185 22.185
cl-eval-bot tlikonen 1027 5 32 5 23 3.973 21.973
cl+ssl cl-plus-ssl 3035 13 35 12 25 8.965 21.965
zip bluelisp 1190 4 31 4 23 2.81 21.81
dragons fjames86 1221 5 31 5 23 3.779 21.779
dufy privet-kitty 32281 21 106 8 54 0 21.719
cxml-stp lichteblau 5026 5 39 4 26 0 20.974
fast-websocket fukamachi 1037 7 26 4 22 2.963 20.963
cl-coroutine takagi 185 4 26 3 21 2.815 20.815
circular-streams fukamachi 192 5 26 4 21 3.808 20.808
asinine fjames86 1241 11 32 6 22 4.759 20.759
cl-freetype2 rpav 2369 9 32 7 23 4.631 20.631
plexippus-xpath gonzojive 4658 4 37 4 25 0 20.342
png-read Ramarren 742 3 29 3 21 2.258 20.258
cl-closure-template archimag 3912 9 33 8 24 4.088 20.088
xsubseq fukamachi 417 3 24 2 20 1.583 19.583
3b-dex 3b 3539 9 32 7 23 3.461 19.461
http-parse orthecreedence 714 5 29 3 20 2.286 19.286
drx fjames86 736 2 28 2 20 1.264 19.264
cl-sqlite dmitryvk 808 5 29 4 20 3.192 19.192
cl-cpus muyinliu 84 1 27 1 19 0.916 18.916
do-urlencode drdo 95 2 27 2 19 1.905 18.905
cl-reexport takagi 135 3 24 2 19 1.865 18.865
event-emitter fukamachi 144 2 23 1 19 0.856 18.856
cl-cache-tables diogoalexandrefranco 253 2 23 1 19 0.747 18.747
cl-slug EuAndreh 291 3 23 2 19 1.709 18.709
swap-bytes sionescu 364 3 28 2 19 1.636 18.636
tensorflow cungil 6378 7 37 6 25 0 18.622
cl-ptrace k-stz 1405 2 28 2 20 0.595 18.595
cl-libsvm-format masatoi 510 3 23 2 19 1.49 18.49
clip Shinmera 568 2 22 2 19 1.432 18.432
cl-enchant tlikonen 577 2 28 1 19 0.423 18.423
static-vectors sionescu 654 4 28 3 19 2.346 18.346
cl-libsvm melisgl 1742 4 28 2 20 0.258 18.258
external-program sellout 797 3 28 2 19 1.203 18.203
cl-rmath tpapp 876 1 27 1 19 0.124 18.124
cl-annot m2ym 887 3 24 2 19 1.113 18.113
cl-online-learning masatoi 2895 4 25 3 21 0.105 18.105
pounds fjames86 2019 5 28 5 20 2.981 17.981
cl-readline vindarel 1132 2 27 2 19 0.868 17.868
cl-libyaml eudoxia0 1253 3 28 2 19 0.747 17.747
cl-rdkafka SahilKang 4387 7 31 6 22 1.613 17.613
trivial-features trivial-features 488 4 27 3 18 2.512 17.512
cl-libuv orthecreedence 1547 2 27 2 19 0.453 17.453
cl-autowrap rpav 2558 11 30 7 20 4.442 17.442
simple-tasks Shinmera 569 3 21 3 18 2.431 17.431
cloakbuild lichteblau 10761 9 38 7 28 0 17.239
cl-charms HiTECNOLOGYs 1811 4 28 2 19 0.189 17.189
s-protobuf ndantam 1861 1 27 1 19 0 17.139
cl-libevent2 orthecreedence 2090 3 28 1 19 0 16.91
cl-png ljosa 2221 7 29 1 19 0 16.779
prove fukamachi 1466 9 22 6 18 4.534 16.534
claw borodust 2687 6 27 6 19 3.313 16.313
lquery Shinmera 1701 6 22 5 18 3.299 16.299
closure-common N/A 2731 2 27 2 19 0 16.269
elf eschulte 2022 12 22 9 18 6.978 15.978
fsocket fjames86 3037 2 27 2 19 0 15.963
vgplot volkers 1064 5 21 4 17 2.936 15.936
closure-html N/A 4076 2 28 2 20 0 15.924
gsll antik 36636 7 66 7 52 0 15.364
py4cl digikar99 1748 11 18 9 17 7.252 15.252
basic-binary-ipc markcox80 4804 4 29 3 20 0 15.196
snek N/A 7886 3 32 3 23 0 15.114
osicat osicat 3954 5 28 4 19 0.046 15.046
trivial-irc karvus 683 4 20 3 15 2.317 14.317
taglib mv2devnul 3932 7 23 5 18 1.068 14.068
uuid dardoria 270 2 14 2 14 1.73 13.73
cells-gtk3 Ramarren 7817 11 33 4 21 0 13.183
array-operations tpapp 937 6 19 5 14 4.063 13.063
yaclml N/A 4253 4 21 3 17 0 12.747
archive sharplispers 1268 3 17 3 14 1.732 12.732
cl-conspack conspack 1268 8 15 7 14 5.732 12.732
cxml N/A 9368 11 34 3 22 0 12.632
monkeylib-html gigamonkey 382 6 13 6 13 5.618 12.618
cl-fad edicl 972 6 17 5 13 4.028 12.028
cl-num-utils tpapp 3997 7 21 6 16 2.003 12.003
monkeylib-text-languages gigamonkey 303 2 12 2 12 1.697 11.697
trivial-file-size ruricolist 123 7 12 6 11 5.877 10.877
monkeylib-text-output gigamonkey 216 4 11 4 11 3.784 10.784
cl-progress-bar sirherrbatka 227 2 11 2 11 1.773 10.773
retrospectiff slyrus 2391 8 14 7 13 4.609 10.609
montezuma sharplispers 12544 11 32 5 23 0 10.456
cl-ftp pinterface 628 3 13 2 11 1.372 10.372
clss Shinmera 677 2 14 2 11 1.323 10.323
monkeylib-json gigamonkey 243 2 10 2 10 1.757 9.757
data-sift archimag 288 6 14 5 10 4.712 9.712
cl-routes archimag 797 5 11 4 10 3.203 9.203
3bmd 3b 1993 15 13 5 11 3.007 9.007
array-utils Shinmera 362 2 13 1 9 0.638 8.638
more-conditions scymtym 1395 5 11 4 10 2.605 8.605
glsl-toolkit Shirakumo 2419 4 14 4 11 1.581 8.581
arnesi AccelerationNet 7511 7 20 4 16 0 8.489
pathname-utils Shinmera 862 2 13 1 9 0.138 8.138
plump Shinmera 2073 5 14 2 10 0 7.927
trivial-channels rpav 112 2 8 2 8 1.888 7.888
3d-matrices Shinmera 2134 4 14 3 10 0.866 7.866
modularize-hooks Shinmera 177 4 8 4 8 3.823 7.823
safe-queue deadtrickster 218 2 8 2 8 1.782 7.782
bt-semaphore rmoritz 226 3 9 2 8 1.774 7.774
iolib sionescu 14306 44 38 9 22 0 7.694
3d-vectors Shinmera 1328 3 13 2 9 0.672 7.672
universal-config Shinmera 534 2 11 2 8 1.466 7.466
monkeylib-parser gigamonkey 1715 2 9 2 9 0.285 7.285
trivial-lazy dsorokin 54 1 7 1 7 0.946 6.946
cl-heredoc e-user 180 2 8 1 7 0.82 6.82
arrow-macros hipeta 251 3 8 2 7 1.749 6.749
idna antifuchs 252 1 7 1 7 0.748 6.748
numpy-file-format marcoheisig 277 1 7 1 7 0.723 6.723
generators AccelerationNet 282 5 8 4 7 3.718 6.718
pack soemraws 343 2 7 2 7 1.657 6.657
cl-ansi-text pnathan 344 6 8 3 7 2.656 6.656
cl-slice tpapp 386 5 8 4 7 3.614 6.614
lisp-namespace guicho271828 395 4 8 3 7 2.605 6.605
cl-geometry vydd 1402 5 11 3 8 1.598 6.598
modularize-interfaces Shinmera 484 5 8 4 7 3.516 6.516
introspect-environment Bike 586 3 8 2 7 1.414 6.414
colorize redline6561 1685 3 8 3 8 1.315 6.315
clnuplot clnuplot 703 4 7 4 7 3.297 6.297
monkeylib-utilities gigamonkey 871 2 7 2 7 1.129 6.129
optima m2ym 1883 8 13 4 8 2.117 6.117
lass Shinmera 906 4 8 3 7 2.094 6.094
ubiquitous Shinmera 1028 2 8 1 7 0 5.972
agnostic-lizard mraskin 2063 2 8 2 8 0 5.937
clos-fixtures eudoxia0 122 1 6 1 6 0.878 5.878
ieee-floats marijnh 142 2 7 1 6 0.858 5.858
cl-prevalence 40ants 2227 4 9 3 8 0.773 5.773
cl-keras-seq2seq-demo digikar99 281 4 6 4 6 3.719 5.719
parachute Shinmera 2354 6 12 3 8 0.646 5.646
protobuf brown 2374 11 13 4 8 1.626 5.626
generic-comparability pnathan 447 4 7 2 6 1.553 5.553
stmx cosmos72 10522 9 17 6 16 0 5.478
chanl zkat 1525 4 8 2 7 0.475 5.475
3bst 3b 1610 2 7 2 7 0.39 5.39
split-sequence sharplispers 632 2 7 1 6 0.368 5.368
pddl-tools N/A 1659 10 9 2 7 0.341 5.341
collectors AccelerationNet 874 5 7 4 6 3.126 5.126
cl-permutation tarballs_are_good 2486 8 9 5 7 2.514 4.514
stefil stefil 1569 5 7 4 6 2.431 4.431
let-plus tpapp 608 4 6 3 5 2.392 4.392
cl-irregsexp cl-irregsexp 1611 3 7 2 6 0.389 4.389
cl-colors tpapp 1667 4 7 3 6 1.333 4.333
bitio psilord 811 1 5 1 5 0.189 4.189
bordeaux-threads sionescu 1844 3 7 2 6 0.156 4.156
Eclector robert-strandh 4996 12 14 5 9 0.004 4.004
definitions Shinmera 1085 3 5 3 5 1.915 3.915
fare-mop frideau 96 2 4 2 4 1.904 3.904
cl-lex djr7C4 214 1 7 1 4 0.786 3.786
postmodern marijnh 11279 35 23 9 15 0 3.721
cffi N/A 14334 24 27 9 18 0 3.666
symbol-munger AccelerationNet 341 4 5 3 4 2.659 3.659
fast-io rpav 524 4 5 3 4 2.476 3.476
fiveam sionescu 1585 4 6 3 5 1.415 3.415
cl-base64 kpe 620 3 5 2 4 1.38 3.38
usocket usocket 6721 6 12 4 10 0 3.279
log4cl sharplispers 8821 9 13 4 12 0 3.179
quicklisp-slime-helper quicklisp 65 2 3 2 3 1.935 2.935
trivial-raw-io redline6561 103 2 3 2 3 1.897 2.897
cl-wav RobBlackwell 149 2 3 2 3 1.851 2.851
form-fiddle Shinmera 202 1 3 1 3 0.798 2.798
parse-float soemraws 263 3 4 2 3 1.737 2.737
documentation-utils-extensions sirherrbatka 269 1 3 1 3 0.731 2.731
cl-algebraic-data-type tarballs-are-good 321 2 3 2 3 1.679 2.679
mathkit lispgames 424 2 3 2 3 1.576 2.576
cl-typesetting mbattyani 4456 7 8 3 7 0 2.544
cl-json hankhero 3482 2 7 1 6 0 2.518
modularize Shinmera 516 1 3 1 3 0.484 2.484
float-features Shinmera 533 1 3 1 3 0.467 2.467
cl-cont cl-cont 1639 4 5 3 4 1.361 2.361
yason hanshuebner 694 2 3 2 3 1.306 2.306
moptilities gwkkwg 800 4 4 3 3 2.2 2.2
cl-mlep fzalkow 27121 4 39 3 29 0 1.879
cl-riff RobBlackwell 183 1 2 1 2 0.817 1.817
lisp-interface-library fare 6225 8 9 7 8 0.775 1.775
random brown 270 7 4 2 2 1.73 1.73
defpackage-plus rpav 273 1 2 1 2 0.727 1.727
monkeylib-binary-data gigamonkey 283 1 2 1 2 0.717 1.717
pileup nikodemus 1285 3 4 2 3 0.715 1.715
sycamore ndantam 4302 2 9 2 6 0 1.698
documentation-utils Shinmera 302 3 3 2 2 1.698 1.698
cl-aco jorgetavares 1308 6 4 3 3 1.692 1.692
xml-emitter VitoVan 317 3 3 2 2 1.683 1.683
opticl-core slyrus 396 1 2 1 2 0.604 1.604
cl-digikar-utilities digikar99 459 1 2 1 2 0.541 1.541
cl-unicode edicl 1604 5 7 2 3 0.396 1.396
cl-who edicl 700 2 3 1 2 0.3 1.3
vecto xach 2769 4 7 3 4 0.231 1.231
cl-kanren cage 1769 4 4 2 3 0.231 1.231
esrap scymtym 4948 3 7 2 6 0 1.052
asdf-package-system asdf 9 1 1 1 1 0.991 0.991
stealth-mixin robert-strandh 54 1 1 1 1 0.946 0.946
trivial-macroexpand-all cbaggers 59 1 1 1 1 0.941 0.941
trivial-arguments Shinmera 81 1 1 1 1 0.919 0.919
lparallel lmj 8108 5 10 3 9 0 0.892
fiveam-asdf N/A 125 1 1 1 1 0.875 0.875
getopt kpe 190 2 2 1 1 0.81 0.81
fare-memoization frideau 220 2 2 1 1 0.78 0.78
trivial-timeout gwkkwg 247 2 2 1 1 0.753 0.753
madeira-port nikodemus 263 2 2 1 1 0.737 0.737
s-xml-rpc ambrevar 1267 2 2 2 2 0.733 0.733
monkeylib-test-framework gigamonkey 276 1 1 1 1 0.724 0.724
cl-custom-hash-table metawilm 342 2 2 1 1 0.658 0.658
LispQR mare5x 1404 1 2 1 2 0 0.596
filtered-functions pcostanza 411 1 1 1 1 0.589 0.589
trivial-backtrace gwkkwg 438 2 2 1 1 0.562 0.562
zpng xach 442 1 1 1 1 0.558 0.558
linear-programming neil-lindquist 2493 4 3 3 3 0.507 0.507
anaphora tokenrove 612 2 2 1 1 0.388 0.388
Cluffer robert-strandh 1640 12 10 2 2 0.36 0.36
trivial-garbage trivial-garbage 659 2 2 1 1 0.341 0.341
cl-variates cl-variates 710 2 2 1 1 0.29 0.29
cl-marshal wlbr 727 2 2 1 1 0.273 0.273
trivial-shell gwkkwg 803 2 2 1 1 0.197 0.197
md5 pmai 833 1 1 1 1 0.167 0.167
chunga edicl 883 1 1 1 1 0.117 0.117
cl-heap TheRiver 954 2 2 1 1 0.046 0.046
mcclim robert-strandh 111217 146 129 24 68 0 0
gendl gendl 107616 55 63 16 41 0 0
lispbuilder lispbuilder 52225 101 71 8 28 0 0
cl-opengl 3b 30682 15 34 3 23 0 0
incudine titola 44588 28 32 7 22 0 0
portableaserve N/A 22561 13 26 7 20 0 0
magicl rigetticomputing 120914 16 31 4 20 0 0
babel cl-babel 25092 7 27 4 18 0 0
clsql kpe 24519 26 26 5 17 0 0
shop3 shop-planner 192394 33 21 7 14 0 0
ironclad N/A 39229 7 13 5 12 0 0
metatilities gwkkwg 12389 6 9 5 8 0 0
valtan cxxxr 39519 2 8 2 5 0 0
cl-pdf mbattyani 6099 4 5 3 4 0 0
screamer-plus N/A 6416 1 4 1 4 0 0
cl-mathstats gwkkwg 6815 4 5 3 4 0 0
shcl bradleyjensen 13775 4 4 4 4 0 0
cl-ppcre edicl 5756 6 7 2 3 0 0
cl-containers gwkkwg 7697 5 4 3 3 0 0
language-codes Shinmera 8427 1 3 1 3 0 0
screamer nikodemus 8573 3 4 2 3 0 0
fset N/A 11963 4 3 3 3 0 0
fare-utils frideau 2162 3 3 2 2 0 0
sb-cga nikodemus 3118 1 2 1 2 0 0
pg pg 3153 2 2 2 2 0 0
contextl pcostanza 3154 3 2 2 2 0 0
kmrcl kpe 4845 3 3 2 2 0 0
weyl OdonataResearchLLC 18409 3 3 2 2 0 0
clx sharplispers 30780 4 3 2 2 0 0
cl-dot michaelw 1038 1 1 1 1 0 0
cover pfdietz 1140 2 2 1 1 0 0
clump robert-strandh 1152 5 4 1 1 0 0
rove fukamachi 1248 1 1 1 1 0 0
puri kpe 1523 2 2 1 1 0 0
metabang-bind gwkkwg 1586 2 2 1 1 0 0
nibbles sharplispers 1622 2 2 1 1 0 0
iterate iterate 1817 2 2 1 1 0 0
metatilities-base gwkkwg 2276 2 2 1 1 0 0
xecto pkhuong 2604 1 1 1 1 0 0
cl-vectors fjolliton 2667 4 3 1 1 0 0
Concrete-Syntax-Tree robert-strandh 2706 7 4 1 1 0 0
cl-store skypher 2760 2 2 1 1 0 0
minheap sfrank 2769 2 2 1 1 0 0
sclf Ferada 2833 1 1 1 1 0 0
sequence-iterators sequence-iterators 2844 5 4 1 1 0 0
cl-gd edicl 2873 2 2 1 1 0 0
core-gp jorgetavares 2908 2 2 1 1 0 0
flexi-streams edicl 3605 2 2 1 1 0 0
alexandria alexandria 4907 2 2 1 1 0 0
cells kennytilton 5055 1 1 1 1 0 0
ltk herth 5783 3 2 1 1 0 0
gbbopen N/A 32293 1 1 1 1 0 0
quicklisp-projects quicklisp 0 0 0 0 0 0 0
trivial-cltl2 Zulu-Inuoe 37 0 0 0 0 0 0
monkeylib-macro-utilities gigamonkey 41 0 0 0 0 0 0
f-underscore bpm 53 0 0 0 0 0 0
asdf-flv didierverna 54 0 0 0 0 0 0
asdf-system-connections gwkkwg 61 0 0 0 0 0 0
lw-compat pcostanza 62 0 0 0 0 0 0
trivial-indent Shinmera 66 0 0 0 0 0 0
structy-defclass cbaggers 86 0 0 0 0 0 0
trivial-mimes Shinmera 87 0 0 0 0 0 0
csv equwal 103 0 0 0 0 0 0
glass fjames86 105 0 0 0 0 0 0
vas-string-metrics vsedach 123 1 1 0 0 0 0
cl-tga fisxoj 132 0 0 0 0 0 0
monkeylib-pathnames gigamonkey 148 0 0 0 0 0 0
priority-queue dsorokin 163 0 0 0 0 0 0
global-vars lmj 187 1 1 0 0 0 0
vom orthecreedence 187 0 0 0 0 0 0
pipes kpe 193 0 0 0 0 0 0
trivial-utf-8 trivial-utf-8 234 1 1 0 0 0 0
lambda-fiddle Shinmera 242 0 0 0 0 0 0
trivial-types m2ym 242 0 0 0 0 0 0
pretty-function nallen05 250 0 0 0 0 0 0
zcdb xach 283 0 0 0 0 0 0
css-lite paddymul 297 0 0 0 0 0 0
unit-test hanshuebner 324 0 0 0 0 0 0
s-sysdeps svenvc 327 0 0 0 0 0 0
cl-general-accumulator tlikonen 334 0 0 0 0 0 0
cl-tsplib jorgetavares 335 0 0 0 0 0 0
string-case pkhuong 335 0 0 0 0 0 0
st-json marijnh 350 0 0 0 0 0 0
fare-csv frideau 374 0 0 0 0 0 0
utility terminal625 390 0 0 0 0 0 0
parse-number sharplispers 394 1 1 0 0 0 0
acclimation robert-strandh 408 0 0 0 0 0 0
rfc2388 jdz 455 0 0 0 0 0 0
computable-reals tarballs-are-good 500 0 0 0 0 0 0
rt kpe 530 0 0 0 0 0 0
cl-just-getopt-parser tlikonen 541 0 0 0 0 0 0
trivial-gray-streams trivial-gray-streams 545 1 1 0 0 0 0
deflate pmai 608 0 0 0 0 0 0
unix-opts mrkkrp 659 1 1 0 0 0 0
cl-decimals tlikonen 661 0 0 0 0 0 0
parse-js marijnh 669 0 0 0 0 0 0
queues oconnore 724 0 0 0 0 0 0
mini-gp jorgetavares 727 1 1 0 0 0 0
acute-terminal-control N/A 794 0 0 0 0 0 0
cl-quickcheck mcandre 835 0 0 0 0 0 0
cl-svg wmannis 867 0 0 0 0 0 0
zpb-exif xach 878 0 0 0 0 0 0
salza2 xach 911 0 0 0 0 0 0
defstar eeeickythump 919 0 0 0 0 0 0
complex Shinmera 996 0 0 0 0 0 0
dissect Shinmera 1027 0 0 0 0 0 0
clazy clazy 1048 0 0 0 0 0 0
black-tie aerique 1107 0 0 0 0 0 0
binary-types Ferada 1119 0 0 0 0 0 0
terminfo npatrick04 1127 0 0 0 0 0 0
cl-html-parse gwkkwg 1171 0 0 0 0 0 0
s-xml s-xml 1212 2 1 0 0 0 0
utils-kt kennytilton 1214 0 0 0 0 0 0
misc-extensions misc-extensions 1237 0 0 0 0 0 0
maxpc eugeneia 1358 1 1 0 0 0 0
cl-yacc jech 1389 0 0 0 0 0 0
cl-randist lvaruzza 1403 0 0 0 0 0 0
trees froydnj 1498 1 1 0 0 0 0
skippy xach 1613 0 0 0 0 0 0
parse-declarations parse-declarations 1628 0 0 0 0 0 0
cl-jpeg sharplispers 1834 0 0 0 0 0 0
lisp-unit OdonataResearchLLC 1873 0 0 0 0 0 0
zpb-ttf xach 1952 0 0 0 0 0 0
closer-mop pcostanza 1963 0 0 0 0 0 0
chipz sharplispers 2599 0 0 0 0 0 0
arboreta-wasm Arboreta 3044 0 0 0 0 0 0
protest phoe 3162 0 0 0 0 0 0
portable-threads binghe 3302 1 1 0 0 0 0
regex michaelw 3458 0 0 0 0 0 0
uffi kpe 3907 1 1 0 0 0 0
lift gwkkwg 8064 2 1 0 0 0 0
series N/A 8873 1 1 0 0 0 0
paiprolog quek 9894 1 1 0 0 0 0
glsl-spec cbaggers 10955 1 1 0 0 0 0
cl-competitive privet-kitty 12708 0 0 0 0 0 0
sapaclisp N/A 14886 0 0 0 0 0 0
ansi-test ansi-test 133802 1 1 0 0 0 0
maxima-code N/A 377517 10 1 0 0 0 0
(defpackage #:snippets/repo-stats
(:use #:cl)
(:import-from
#:com.gigamonkeys.json
#:parse-json)
(:import-from
#:sb-ext
#:run-program)
(:export
#:walk
#:csv))
(in-package #:snippets/repo-stats)
(defvar *repo-filespec*
"/home/death/quicklisp/third-party/*")
(defstruct repo
name
author
loc
systems
deps)
(defun walk ()
(let* ((dirs (directory *repo-filespec*))
(repos (make-hash-table :test 'equalp))
(n (length dirs)))
(format t "Scanning ~D directories.~%" n)
(loop for i upfrom 0
for dir in dirs
do (let ((*default-pathname-defaults* dir)
(name (car (last (pathname-directory dir)))))
(setf (gethash name repos)
(make-repo :name name
:author (author)
:loc (loc)
:systems (systems)
:deps (deps)))
(when (zerop (mod i (truncate n 20)))
(write-char #\.)
(force-output))))
repos))
(defun author ()
(with-input-from-string (in (git "remote" "-v"))
(let ((line (read-line in nil nil)))
(cond ((null line) :na)
((search "fatal:" line) :na)
((between line "github.com/" "/"))
((between line "gitlab.common-lisp.net/" "/"))
((between line "gitlab.com/" "/"))
((between line "notabug.org/" "/"))
((between line "bitbucket.org/" "/"))
((search "adeht" line) :na)
((search ":death" line) :na)
((search "kpe.io" line) "kpe")
((search "lichteblau.com" line) "lichteblau")
(t :na)))))
(defun loc ()
(let ((json (parse-json
(string-trim '(#\Space #\Newline)
(run "cloc" "." "--json")))))
(loop for (key1 val1) on json by #'cddr
when (equal key1 "Lisp")
do (loop for (key2 val2) on val1 by #'cddr
when (equal key2 "code")
do (return-from loc val2))))
0)
(defun between (string prefix suffix)
(let ((pos (search prefix string)))
(when pos
(let ((pos2 (search suffix string :start2 (+ pos (length prefix)))))
(when pos2
(subseq string (+ pos (length prefix)) pos2))))))
(defun git (&rest args)
(apply #'run "git" args))
(defun systems ()
(mapcar #'dep-name (asd-items "defsystem ")))
(defun deps ()
(mapcar #'dep-name (apply #'append (asd-items ":depends-on"))))
(defun asd-items (indicator)
(let ((asd-files (directory (merge-pathnames "**/*.asd")))
(result '()))
(dolist (asd-file asd-files)
(push (ignore-errors (asd-items-1 asd-file indicator)) result))
(apply #'append result)))
(defun asd-items-1 (asd-file indicator)
(with-open-file (stream asd-file :direction :input)
(loop with pos = 0
with depth = 0
with in-string = nil
with items = '()
for line = (read-line stream nil nil)
while line
do (dotimes (i (length line))
(let ((char (char line i)))
(cond ((char= char #\")
(cond ((not in-string)
(setf in-string t))
((and (plusp i) (char= (char line (1- i)) #\\)))
(in-string
(setf in-string nil))))
((char= char #\()
(unless in-string
(incf depth)))
((char= char #\))
(unless in-string
(decf depth)
(when (minusp depth)
(warn "~S: Negative depth in line ~S; setting to zero." asd-file line)
(setf depth 0))))
((char= char (char indicator 0))
(when (and (not in-string)
(= depth 1))
(let ((m (mismatch line indicator :start1 i)))
(when (or (not m) (= m (+ i (length indicator))))
(when (or (zerop i) (find (char line (1- i)) '(#\Space #\( #\Tab #\:)))
(let ((old-pos (file-position stream)))
(file-position stream (+ pos i (length indicator)))
(push (read stream) items)
(file-position stream old-pos)))))))
((char= char #\;)
(unless in-string
(return))))))
(setf pos (file-position stream))
finally (return items))))
(defun run (program &rest args)
(with-output-to-string (out)
(run-program program
args
:search t
:directory *default-pathname-defaults*
:output out
:error :output
:wait t)))
(defun csv (repos &key warnings)
(cond ((not warnings)
(handler-bind ((warning #'muffle-warning))
(csv repos :warnings t)))
(t
(format t "name,author,loc,ndeps,ndepstr,ndeprepos,ndeprepostr,cost,costtr~%")
(let ((index (systems-index repos)))
(loop for repo being each hash-value of repos
do (format t "~A,~A,~A,~A,~A,~A,~A,~A,~A~%"
(csv-field (repo-name repo))
(csv-field (repo-author repo))
(repo-loc repo)
(length (repo-deps repo))
(length (tr-deps repo index))
(length (deps-as-repos repo index))
(length (tr-deps-as-repos repo index))
(cost repo index)
(tr-cost repo index)))))))
(defun csv-field (x)
(cond ((not (stringp x)) "N/A")
((find #\, x) (format nil "~S" x))
(t x)))
(defun systems-index (repos)
(let ((systems (make-hash-table :test 'equalp)))
(loop for repo being each hash-value of repos
do (dolist (system (repo-systems repo))
(setf (gethash system systems) repo)))
systems))
(defun tr-deps (repo index)
(let ((visited (make-hash-table :test 'equalp))
(agenda (repo-deps repo)))
(loop while agenda
do (let ((dep (pop agenda)))
(unless (gethash dep visited)
(setf (gethash dep visited) t)
(let ((dep-repo (gethash dep index)))
(if (null dep-repo)
(warn "~S: Can't find dep repo for dep ~S." (repo-name repo) dep)
(progn
;; (format t "Adding ~S from ~A.~%"
;; (repo-deps dep-repo)
;; (repo-name dep-repo))
(setf agenda (append (repo-deps dep-repo) agenda))))))))
(loop for dep being each hash-key of visited
collect dep)))
(defun dep-name (dep)
(etypecase dep
(string dep)
(symbol (string dep))
((cons (eql :version) t) (dep-name (second dep)))
((cons (eql :feature) t) (dep-name (third dep)))
((cons (eql :require) t) (dep-name (second dep)))))
(defun cost (repo index)
(let ((L (or (repo-loc repo) 0))
(Lj 1000)
(D (length (deps-as-repos repo index))))
(float (max 0.0 (- D (/ L Lj))))))
(defun tr-cost (repo index)
(let ((L (or (repo-loc repo) 0))
(Lj 1000)
(D (length (tr-deps-as-repos repo index))))
(float (max 0.0 (- D (/ L Lj))))))
(defun deps-as-repos (repo index)
(remove repo
(remove-duplicates
(mapcar (lambda (dep) (or (gethash dep index) dep))
(repo-deps repo))
:test #'equalp)))
(defun tr-deps-as-repos (repo index)
(remove repo
(remove-duplicates
(mapcar (lambda (dep) (or (gethash dep index) dep))
(tr-deps repo index))
:test #'equalp)))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment