【问题标题】:count logical lines of code in Ubuntu计算 Ubuntu 中的逻辑代码行数
【发布时间】:2012-12-14 18:10:18
【问题描述】:

我正在开发一个 Web 应用程序,我需要能够跟踪 /var/www 目录中的 phpcsshtmlJavaScript 代码行。

但是使用代码计数器的终端行,我自然想写更多的行和间隔代码,例如:

if($var == $other)echo("hi");

将被做为:

if($var == $other)
{
    echo("hi");
}

通过这种方式,我可以在不做任何实际工作的情况下得出非常多的行数,有什么方法可以计算目录中的逻辑代码行数吗?有什么程序可以做到吗?

谢谢!

【问题讨论】:

  • 您为什么要关心代码行数,尤其是在您担心自己的指标游戏时?
  • @Pointy,项目统计数据。
  • phploc 用于 PHP 代码,可能有 JS 的等价物

标签: php javascript html css ubuntu


【解决方案1】:

请注意,“代码行”指标的意义非常可疑,您可以从找出空白行开始。

find . -name '*.php' -print0 | xargs -0 cat | egrep -v '^[ \t]*$' | wc

(例如)。

对于像 JavaScript 这样的语言,个人编码风格会对原始 LOC 产生非常重要的影响。想想有些人是这样写的:

if (testSomething()) return null;

if (somethingElse()) {
  doThis();
} else {
  doThat();
}

有些人是这样写的:

if (testSomething())
{
  return null;
}

if (somethingElse())
{
  doThis();
}
else
{
  doThat();
}

更有用的东西(尽管在我看来仍然是可疑的)是可以算作“陈述”之类的东西。当然,您需要一个能够明确理解不同语言语法的工具。

我将此统计数据称为“可疑”,因为在组织中,数字的弱本质往往会被遗忘,因为它会在一个又一个电子表格中使用。项目经理开始根据 LOC、记录的错误(也很可疑)、签入(同上)等来提取趋势,而与真实生产力的相关性如此微弱的事实就消失了。

布道结束:-)

【讨论】:

  • 所以你的脚本实际上会将这两个标记为具有相同的行数?对吗?
  • @fermionoid 不,我的不会;这就是我的观点。您需要一个能够理解 JavaScript(或 PHP 或 CSS 或 HTML 或 Ruby 或其他)语法的工具,这不是一件容易的事;实际上,您需要一个解析器,以及每种语言的解析器。即使这样,你也有一个不是超级有意义的数字,因为你不知道语句的数量与代码的实际操作现实之间的关系。
  • 当我为第一个脚本运行您的代码时,我得到了:6 13 92,第二个我得到了12 15 98,那么这些数字是什么意思?
  • wc 程序告诉您“行”、“字”和“字符”的数量。 “行”数是您要求的; “words”表示以空格分隔的字符串(我认为;类似的东西),characters 基本上表示“bytes”。
  • PS,代码格式有多重要,我的意思是,我个人喜欢在逻辑上尽可能多地编写代码,这让我感到自豪“我写了 10k 行代码” !!!
【解决方案2】:

有些程序,例如 CLOC,可以计算代码行数,不包括 cmets 和空行,但我认为它们不适用于您的示例代码。

我认为可能会为每种语言找到一些自动代码格式化程序,例如 http://jsbeautifier.org/,并测量输出中的行数(最好使用前面提到的 CLOC)。可能会减少特定程序员的编码风格对结果的影响。

【讨论】:

  • 是的,这是一个很好的建议,尽管在我已经严重衰老的情况下,我仍然认为 LOC 计数不能很好地替代直接代码审查。
【解决方案3】:

如果您想避免使用正则表达式的麻烦或实际尝试解析代码,您可以只计算分号和右大括号的数量。我的意思是,这两件事几乎总是有自己的台词。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-05-24
    • 1970-01-01
    • 2014-06-28
    • 2021-12-05
    • 2014-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多