【问题标题】:How is SLOC counted by Delphi IDE?Delphi IDE如何计算SLOC?
【发布时间】:2014-07-06 11:39:26
【问题描述】:

您在这里经常看到人们说他们有 x 百万行代码的项目。这是如何测量的?这个数字是“信息”菜单下显示的数字吗?手册说只计算可编译行(因此,没有 cmets 和空行):

源代码编译 -> 显示编译的总行数。

但手册并没有解释一段代码如 if/then/else 是如何计算的:

if B=true
then 
   for i:= 0 to 100 
    do Stuff
else ;
  1. 每条带蓝点的行都是“编译行”吗?
  2. Embarcadero 代码(RTL 和 VCL 代码)和第 3 方库也包含在计数中?
  3. (结论)有人说一个 Delphi 程序有 100 万行是什么意思?

【问题讨论】:

  • 看起来 Embarcadero 代码未计算在内。这很好。
  • 自己解决这个问题非常容易
  • 我不认为我曾经在 Stack Overflow 上看到有人谈论过他们拥有数百万行代码。你在哪里读书?如果你不清楚某人的意思,你为什么不直接要求那个人澄清?手册在哪里说只计算可编译的行? (是什么让您认为 cmets 和空行是不可编译的?编译器显然接受它们。)
  • @RobKennedy-Hi Rob。实际上,您可以在堆栈溢出时经常看到“我有 x 百万行代码程序”。这是 Mason Wheeler 的一个例子:stackoverflow.com/questions/2188479/…
  • 这里是另一个例子:stackoverflow.com/questions/2644973/…

标签: delphi code-metrics code-statistics


【解决方案1】:

Total lines 编译器告诉您正在计算单元中的行数,而不管那里有(或没有)什么代码。它甚至计算空行。开始一个新项目。编译它并记下它说的行数(我的说 42)。然后,在某处只添加一个换行符,然后再次编译。它将声称还有一行代码(43)。所以编译器似乎没有考虑这个数字的任何代码 - 只考虑实际的换行符。

事实上,如果您将主窗体单元(新项目)和项目主文件中的总行数相加,总行数将比编译器告诉您的总行数少 2(42 个中的 40 个)。因此,除了粗略估计之外,我不会相信这个数字意味着太多。

VCL、RTL 和 Indy 等库不包含在此计数中,因为它们是预编译的。您的项目可能会引用需要编译的库或外部单元,因此它也会将它们包含在计数中。

至于您提到它如何计算 if..then..else 块,请记住,您的 5 行代码可以组合成仅 1 行代码(剥离换行符),它仍然可以编译,编译器将只计算 1 行,而不是 5 行。

【讨论】:

  • 这取决于这些库的源代码是否需要编译。 VCL 和 RTL 当然不算在内,因为它们已经编译好了。
  • 我想知道一个人怎么能想出如此无用的计数 loc 的想法。并将其放入销往世界各地的产品中。
  • .. 在这种情况下,我会记下this question。有一些智力可能会有一些替代方案。
  • 故事的寓意:你不能总是相信信息,即使它是由非常可靠的来源提供给你的。
  • @FreeConsulting 我已经确认你是对的,我错了,但你继续评论它。无论如何,我将删除此对话中的所有 cmets,无需继续进行下去。
猜你喜欢
  • 1970-01-01
  • 2013-11-30
  • 2012-03-27
  • 2011-09-04
  • 2010-11-09
  • 2015-05-26
  • 1970-01-01
  • 1970-01-01
  • 2014-04-22
相关资源
最近更新 更多