【问题标题】:How would you measure inserted / changed / removed code lines (LoC)?您将如何测量插入/更改/删除的代码行 (LoC)?
【发布时间】:2013-04-19 15:02:46
【问题描述】:

我的问题涉及 LoC 指标。我必须提供插入、更改和删除行的统计信息。我的用户使用 ClearCase 和下面基于它的示例,但是我相信我的问题是一般性的。

请查看以下示例(取自 ClearCase 文档)。它比较两个文件版本,/main/1(左侧)和/main/3(右侧)。

    ******************************** (file summary) 
    <<< file 1: util.c@@/main/1
    >>> file 2: util.c@@/main/3
    ********************************
    ----------[after 15]------|-------[inserted 16]------ (header) 
                              | char *s;        (difference) 
                              |-
    ---------[changed 18]-----|----[changed to 19-21]---- (header) 
    return ctime(&clock);     | s = ctime(&clock); (difference) 
                           -  | s[ strlen(s)-1 ] = '\0';
                              | return s;
                              |-

毫无疑问,插入了 1 行(第 16 行)。

我的问题是关于第 18 行的更改:你在这里数了多少行?

  • 3 行更改?
  • 1 行已更改?
  • 1 个 CHANGED 行和 2 个 INSERTED 行?
  • 你有别的想法吗...?

请让我知道您的想法(以及为什么...)。谢谢。

【问题讨论】:

    标签: git svn perforce clearcase lines-of-code


    【解决方案1】:

    这个例子来自cleartool diff man page,这个差异不是你通常的diff format

    对于 ClearCase:

    ---------[changed X]----------|----------[changed to Y]---------
    

    一条或多条线已就地更改。

    • X 表示第一个文件中的哪些行已更改。
    • Y 表示替换行在第二个文件中的位置。

    所以这里:

    • 1 行更改
    • 替换为 3 行

    与其他工具(如 git)使用的 diff 统一格式没有直接等效,这意味着使用默认 cleartool 格式的这个问题是特定于 ClearCase 的。

    如果 cleartool diff 使用 -diff_format 选项,这将导致以 UNIX 和 Linux diff 实用程序的样式报告标头和差异,这将提供更常见的解释的差异。


    说到 LOC 和 diff,一个很好的参考是 CLOC,这将给出一个 diff loc 专注于以下行:

    • 一样
    • 修改
    • 已添加
    • 已移除

    在你的情况下:

    • 修改了 1 行
    • 添加了 2 行

    【讨论】:

    • VonC,你知道CLOC是否可以为每个代码行单独显示,如果它被添加,修改或删除?我找不到相关的参数。谢谢!
    【解决方案2】:

    大多数 SCM 系统都允许您在文件作为预提交或提交后挂钩的一部分提交时对其进行扫描。您可以运行任何您喜欢的扫描工具并在某处记录统计信息,也许作为文件的一个属性。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-04-25
      • 2019-06-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-26
      相关资源
      最近更新 更多