出于研究目的,我正在计算某些包的 SLOC(源代码行)计数。我正在从 Debian 快照下载不同年份的软件包源。对于大多数软件包,SLOC 数量逐年增加,例如 Wireshark,2010 年 SLOC 比 2011 年少,但更多,并且一直增加到 2018 年。
但对于 OpenJDK 6、7 和 8,情况有所不同。openjdk-7
的 SLOC 数量比 少openjdk-6
。openjdk-8
的 SLOC 数量比 少openjdk-7
。为什么会这样呢?
Debian 快照有问题吗?也许完整的源代码不可用,或者这个包通常是这样的?
答案1
如果您查看 OpenJDK 源代码包的内容,您会发现它们的大部分源代码都包含在包内的 tarball 中。如果你跑David A. Wheeler 的 SLOCCount仅在提取的包源上,它不会计算这些 tarball 中的代码,因此您将获得非常部分的计数。
为了正确比较源代码大小,您需要在运行之前提取 tarball sloccount
。这样做会给出以下统计数据(在我分析的版本上):
openjdk-6 openjdk-7 openjdk-8
java: 2860304 (68.33%) 3232714 (72.32%) 3601973 (67.00%)
cpp: 648574 (15.49%) 671628 (15.03%) 892040 (16.59%)
ansic: 584813 (13.97%) 466742 (10.44%) 374378 (6.96%)
sh: 49935 (1.19%) 45608 (1.02%) 32891 (0.61%)
xml: 23937 (0.57%) 25927 (0.58%) 456037 (8.48%)
objc: 13062 (0.29%) 13557 (0.25%)
asm: 14125 (0.34%) 11555 (0.26%) 3508 (0.07%)
perl: 2258 (0.05%) 1220 (0.03%) 198 (0.00%)
pascal: 1089 (0.03%)
awk: 631 (0.02%) 687 (0.02%) 367 (0.01%)
python: 310 (0.01%) 310 (0.01%) 800 (0.01%)
haskell: 195 (0.00%) 195 (0.00%)
sed: 172 (0.00%)
cs: 72 (0.00%) 72 (0.00%) 72 (0.00%)
ruby: 44 (0.00%) 44 (0.00%)
jsp: 24 (0.00%) 24 (0.00%) 24 (0.00%)
csh: 3 (0.00%) 3 (0.00%) 3 (0.00%)
显示大小增加(但请注意,包的范围也随着时间而变化)。