代码之家  ›  专栏  ›  技术社区  ›  Johannes Rudolph

编译有关项目的历史信息(特别是SLOC)

  •  0
  • Johannes Rudolph  · 技术社区  · 14 年前

    我正在寻找一个工具,可以帮助我为一个给定的项目编译特定代码度量的历史。

    这个项目存储在一个mercurial存储库中,有大约100个版本。我要找的东西是:

    • 检查每个版本
    • 计算度量并用修订的标识符将其存储在某个地方
    • 下一个版本也一样吗

    首先,计算sloc就足够了,但是分析测试、测试覆盖率等也很好。

    我知道这些事情通常是由一个CI服务器来处理的,但是我在这个项目中是独自一人,因此没有费心设置一个CI服务器(我想使用TeamCity,但在开始的时候我真的没有看到这样做的好处)。如果我现在设置了我的CI服务器,它能处理吗?

    3 回复  |  直到 14 年前
        1
  •  2
  •   Johannes Rudolph    14 年前

    根据Jitter的建议,我编写了一个在Cygwin内部运行的小bash脚本,使用sloccount计算源代码行。输出只是转储到一个文本文件:

     #!/bin/bash
    COUNT=0 #startrev
    STOPATREV = 98
    until [ $COUNT -gt $STOPATREV ]; do
            hg update -C -r $COUNT >> sloc.log # update and log
            echo "" >> sloc.log # echo a newline
            rm -r lib # dont count lib folder
            sloccount /thisIsTheSourcePath | print_sum
            let COUNT=COUNT+1
    done 
    
        2
  •  1
  •   jitter    14 年前

    你可以写一个shell脚本

    1. 签出第一个版本
    2. 运行 sloccount 打开(保存输出)
    3. 签出下一个版本
    4. 重复步骤2-4

    或查看 ohloh 到目前为止,它似乎得到了反复无常的支持。

    否则 不知道任何支持Mercurial的SCM统计工具。由于Mercurial相对年轻(自2005年以来),可能需要一段时间才能支持这种“次要用例”。(提示:可以像SVN和CSV那样自己提供一个hgstat库)

        3
  •  0
  •   T.E.D.    14 年前

    如果是我编写软件来完成这类工作,我想我会将项目的度量结果转储到一个文件中,并对其进行修订控制。然后,“历史分析”工具将不得不只提取一个文件的旧版本,而不必提取整个存储库的每个旧副本,每次都重新运行所有测试。