@@ -24,7 +24,6 @@ all: install search clone calc summary draw article
2424
2525install :
2626 bundle update
27- gem install volatility
2827
2928clean :
3029 rm -rf * .tex
@@ -33,66 +32,55 @@ clean:
3332 rm -rf clones
3433 cd paper; latexmk -c
3534
36- # search:
37- # ruby find-repos.rb | tee repos.txt
35+ search :
36+ ruby find-repos.rb | tee repos.txt
3837
39- # clone:
40- # while read line; do \
41- # p="clones/$${line}"; \
42- # if [ -e "$${p}/.git" ]; then \
43- # echo "$${p} already here"; \
44- # else \
45- # mkdir -p "$${p}"; \
46- # git clone --depth=1 "https://github.com/$${line}" "$${p}"; \
47- # fi \
48- # done < repos.txt
38+ clone :
39+ while read line; do \
40+ p=" clones/$$ {line}" ; \
41+ if [ -e " $$ {p}/.git" ]; then \
42+ echo " $$ {p} already here" ; \
43+ else \
44+ mkdir -p " $$ {p}" ; \
45+ git clone --depth=1 " https://github.com/$$ {line}" " $$ {p}" ; \
46+ fi \
47+ done < repos.txt
4948
50- # uncalc:
51- # find metrics -name 'scv.m' -exec rm \{} \;
52- # find metrics -name 'scv*.m' -exec rm \{} \;
49+ uncalc :
50+ rm -rf metrics
5351
54- # metrics=files bytes scv32 scv64 scv128
52+ calc :
53+ mkdir -p metrics
54+ for r in $$ (find clones/ -type directory -depth 2); do \
55+ d=" metrics/$$ {r/clones\/\//}" ; \
56+ if [ -e " $$ {d}" ]; then \
57+ echo " Dir with metrics already here: $$ {d}" ; \
58+ else \
59+ mkdir -p " $$ {d}" ; \
60+ for f in $$ (find $$ {r} -name ' *.java' ); do \
61+ m=" metrics/$$ {f/clones\/\//}.m" ; \
62+ mkdir -p $$(dirname "$${m}" ) ; \
63+ echo ' 1,1' > " $$ {m}" ; \
64+ done ; \
65+ echo " $$ (find $$ {d} -type file | wc -l) Java classes analyzed into $$ {d}" ; \
66+ fi ; \
67+ done
5568
56- # calc:
57- # for f in $$(find clones/ -type directory -depth 2); do \
58- # f=$${f/clones\/\//}; \
59- # mkdir -p "metrics/$${f}"; \
60- # p="metrics/$${f}/files.m"; \
61- # if [ ! -e "$${p}" ]; then \
62- # find "clones/$${f}" -type file -not -path '.git/*' | wc -l > "$${p}"; \
63- # fi; \
64- # p="metrics/$${f}/bytes.m"; \
65- # if [ ! -e "$${p}" ]; then \
66- # du -s -b "clones/$${f}" | awk '{ print $$1 }' > "$${p}"; \
67- # fi; \
68- # for z in 32 64 128; do \
69- # p="metrics/$${f}/scv$${z}.m"; \
70- # if [ ! -e "$${p}" ]; then \
71- # /code/volatility/bin/volatility --sectors=$${z} --home="clones/$${f}" > "$${p}"; \
72- # fi; \
73- # done; \
74- # done
69+ summary :
70+ s=" summary.csv" ; \
71+ rm -rf $$ {s}; \
72+ touch $$ {s}; \
73+ for f in $$ (find metrics -name ' *.m' ); do \
74+ cat " $$ {f}" >> $$ {s}; \
75+ done ; \
76+ echo " $$ (wc -l < $$ {s}) methods measured, the summary is in $$ {s}" ; \
7577
76- # summary:
77- # for i in ${metrics}; do \
78- # s="summary-$${i}.csv"; \
79- # rm -rf $${s}; \
80- # touch $${s}; \
81- # for f in $$(find metrics -name $${i}.m); do \
82- # cat "$${f}" >> $${s}; \
83- # done; \
84- # echo "$$(wc -l < $${s}) repos measured $${i}, summary in $${s}"; \
85- # done
78+ draw : summary.csv
79+ ruby draw.rb --summary=summary.csv > paper/graph.tex
8680
87- # draw: summary-files.csv summary-bytes.csv
88- # for z in 32 64 128; do \
89- # ruby draw.rb --yaxis=summary-scv$${z}.csv --xaxis=summary-files.csv '--xlabel=log_{10}(M_1)' > paper/files-$${z}.tex; \
90- # ruby draw.rb --yaxis=summary-scv$${z}.csv --xaxis=summary-bytes.csv '--xlabel=log_{10}(M_2)' > paper/bytes-$${z}.tex; \
91- # done
81+ paper/total.tex :
82+ rm -f paper/total.tex
83+ echo " \\ \def\\ \thetotalrepos{$$ (find metrics -name 'files.m' | wc -l)}" > paper/total.tex
9284
93- # metrics:
94- # rm -f paper/total.tex
95- # echo "\\\def\\\thetotalrepos{$$(find metrics -name 'files.m' | wc -l)}" > paper/total.tex
96-
97- article : paper/article.tex
85+ article : paper/article.tex paper/total.tex
9886 cd paper; rm -f article.pdf; latexmk -pdf article
0 commit comments