您将如何测量插入/更改/删除的代码行(LoC)?

时间:2013-04-19 15:02:47

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

我的问题涉及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行是INSERTED(第16行)。

我的问题是指第18行的变化:你在这里算了多少行?

  • 3条线路变了?
  • 1 CHANGED line?
  • 1条CHANGED线和2条INSERTED线?
  • 你觉得别的什么......?

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

2 个答案:

答案 0 :(得分: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和差异来说,一个很好的参考是 CLOC ,这将提供一个 diff loc 专注于以下行:

  • 相同
  • 修饰
  • 加入
  • 移除

在你的情况下:

  • 1行修改
  • 添加了2行

答案 1 :(得分:1)

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

相关问题