怎样获取开源软件演化过程中某个方法的修改次数

怎样获取开源软件演化过程中某个方法的修改次数

这篇博客尝试使用markdown编辑器写一下。
在软件工程研究领域,特别是软件演化方向,经常需要对软件演化过程进行度量。不过很多情况下度量的数据并不是可以轻易获取。今天就针对标题中的简单问题具体总结一下:

这里主要参考了这篇文章:
Dit, Bogdan, et al. “A dataset from change history to support evaluation of software maintenance tasks.” Mining Software Repositories (MSR), 2013 10th IEEE Working Conference on. IEEE, 2013.

这篇文章发布了一个软件演化领域的数据集,不过同时也发布了一些小工具,可以支持我们实现上述功能。这里:
http://www.cs.wm.edu/semeru/data/msr13/ 作者们提供了数据集及工具下载链接,我们下载其中的EclipseProjects.zip,就可以使用作者们提供的小工具了。我们这里以Apache POI为例,讲讲怎么使用这些小工具。据上面这篇论文中介绍,“Benchmarks-DownloadSVNCommits”这个项目能够在规定的两个commit编号中获取需要的信息。把这个项目导入eclipse,我们主要看一下MainDownloadSVNCommits这个类,可以看到,为了获取ApachePOI的相关信息,只需要再定义一个静态方法(例如testDownloadSVNCommitsApachePOI())就可以。不过这里有个问题,怎样能知道这个项目的commit编号呢?

其实这个也很简单,我们以Tortoise SVN这个软件为例,首先把Apache POI这个项目Check Out到本地,然后右键——TortoiseSVN——Show Log,就可以看到这个项目最近100次的Commit记录了。我们可以挑选两个Commit编号,如:1685506和1685522,然后我们新定义一个静态方法:

    static void testDownloadSVNCommitsApachePOI() throws Exception
    {
        String outputFolder="TestCases/Output/ApachePOI/";

        DownloadSVNCommits downloadSVNCommits=new DownloadSVNCommits(
                "https://svn.apache.org/repos/asf/poi/trunk/",
                "1685506",
                "1685522",
                outputFolder,
                null,
                null);

        downloadSVNCommits.initializeRepository();
        downloadSVNCommits.downloadSVNCommits();

        System.out.println("The data has been saved in the folder: "+outputFolder);
    }

然后只运行这个方法,就可以看到在对应Benchmarks-DownloadSVNCommits\TestCases\Output\ApachePOI目录下生成结果了。接下来我们要进一步用这个结果:

将Benchmarks-GoldSetGeneratorFromSVNCommits这个项目导入Eclipse,简单看一下,可以发现,这个项目的输入正是前面一个项目的输出。把刚才生成的ApachePOI文件夹拷贝到下面这个目录中:Benchmarks-GoldSetGeneratorFromSVNCommits\TestCases\Input,然后在MainGoldSetsGeneratorFromSVNCommits这个类中同样新建并运行一个静态方法,然后就可以在这个目录下:
Benchmarks-GoldSetGeneratorFromSVNCommits\TestCases\Output\ApachePOI看到结果了,其中类似1685506.goldSetSVNCommit的文件,表示的是这个Commit中修改的方法(如果有修改,则会显示出来)。

基本上就是这个过程,其实很简单,但是也挺有效的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值