为了我的研究目的,我正在计算一些软件包的SLOC (源代码行)计数。我正在从Debian快照下载不同年份的包源。对于大多数软件包来说,SLOC的数量随着年份的增加而增加,比如2010年的Wireshark,SLOC的数量比2011年少,而且一直增长到2018年。
但对于OpenJDK 6、7和8,情况就不同了。openjdk-7的SLOC计数比openjdk-6小。openjdk-8的SLOC计数比openjdk-7小。为什么会这样呢?
Debian快照有什么问题吗?也许完整的源代码是不可用的,或者这个包一般都是这样的吗?
发布于 2018-09-02 21:09:28
如果您查看OpenJDK源代码包的内容,您将看到它们的大部分源代码都是在包内的tarball中提供的。如果您只在提取的包源上运行大卫·A·惠勒的SLOCCount,它将不会计算这些tarball中的代码,因此您将得到非常部分的计数。
要正确比较源代码大小,您需要在运行sloccount之前提取tarball。这样做可以获得以下统计数据(根据我分析过的版本):
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%)显示大小的增加(但是请注意,包的范围也随着时间的推移而变化)。
https://unix.stackexchange.com/questions/466449
复制相似问题