我可以使用git log计算每个人的新JUnit测试数吗?

时间:2017-08-25 14:09:49

标签: git

我有什么方法可以找到谁使用@Test或类似内容提交了包含git log的最多行?

1 个答案:

答案 0 :(得分:0)

我编写了这个简短的python脚本,它在python代码库中寻找类似的模式:

import collections
import subprocess


lines_by_author = collections.defaultdict(int)


for line in subprocess.check_output((
    'git', 'log', '-G', '^def test', '--format=%ae %h',
)).decode().splitlines():
    email, h = line.split()
    for line in subprocess.check_output((
        'git', 'show', h,
    )).decode().splitlines():
        if line.startswith('+def test'):
            lines_by_author[email] += 1
        elif line.startswith('-def test'):
            lines_by_author[email] += 1

import pprint
pprint.pprint(sorted(lines_by_author.items(), key=lambda kv: -1 * kv[1]))

通过将参数更改为@Test和两个-G来电,可以修改脚本以查找startswith()

它将产生如下输出:

$ python3 tests_by_user.py
[('user1@example.com', 1351),
 ('user2@example.com', 129),
 ('user3@example.com', -5)]