编译有关项目的历史信息(尤其是SLOC)

时间:2009-11-20 18:24:32

标签: continuous-integration history teamcity code-metrics

我正在寻找一种工具,可以帮助我编译给定项目的某些代码指标的历史记录。

项目存储在mercurial存储库中,大约有一百个版本。我正在寻找一些东西:

  • 检查每个修订
  • 计算指标并将其存储在具有修订标识符
  • 的某处
  • 对下一个版本执行相同的操作

首先,计算SLOC就足够了,但分析测试数量,TestCoverage等也是不错的。

我知道这些事情通常由CI服务器处理,但我是这个项目的独奏,因此没有打扰设置CI服务器(我想使用TeamCity但我真的没有看到在初学者中这样做的好处)。如果我现在设置我的CI服务器,它可以处理吗?

3 个答案:

答案 0 :(得分:2)

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

 #!/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 

答案 1 :(得分:1)

你可以写一个例如

的shell脚本
  1. 检出第一个版本
  2. 在其上运行sloccount(保存输出)
  3. 查看下一个版本
  4. 重复步骤2-4
  5. 或者看看ohloh,它似乎现在已经得到了善意的支持。

    否则不知道任何支持mercurial的SCM统计工具。由于mercurial相对年轻(自2005年以来),可能需要一些时间才能支持这种“二次使用案例”。 (提示:也许你自己提供一个hgstat库,就像svn和csv一样)

答案 2 :(得分:0)

如果是我编写软件来做这种事情,我想我会将项目的度量结果转储到单个文件中,并将修订控制权转储到单个文件中。然后,“历史分析”工具必须提取该文件的旧版本,而不是必须拔出整个存储库的每个旧副本,并且每次都重新运行所有测试。