0

我的问题涉及 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 线?
  • 你觉得还有什么……?

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

4

2 回答 2

1

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

于 2013-04-20T19:15:12.590 回答
1

此示例来自cleartool diff 手册页,该 diff 不是您常用的diff 格式

对于 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 行
于 2013-04-19T15:30:59.347 回答