跳转到主要内容

从github提取测试相关的提交信息

项目描述

Github测试提交报告

https://travis-ci.org/nens/githubinfo.png?branch=master

Githubinfo是一个查询一个或多个组织的github API并快速报告上周提交的测试提交数量的脚本。

当然,它是可调整的,这是必要的,因为我放了一些公司默认值在里面 :-)

它只是一个简单的单个命令,输出看起来像这样

$ testcommitinfo
loading project neerslagradar-site
loading project ...
...

We want more and better testing. For a quick and dirty quantity
indication ('more'), here are the commits that have the string
'test' in of of the commit's touched filenames.

Period: 8 days.
Github organizations that I queried: ddsc, lizardsystem, nens

Projects sorted by amount of commits with tests
-----------------------------------------------

lizard-neerslagradar: 11 (25%)
lizard-progress: 3 (9%)
radar: 1 (33%)
...

Committers sorted by amount of commits with tests
-------------------------------------------------

Reinout van Rees: 12 (11%)
Remco Gerlich: 3 (6%)
Arjan Verkerk: 2 (8%)
...

您可以通过传递-h--help来获取使用信息,例如如何增加日志级别或如何获取版本号。

目标

我写这个脚本是因为我们想在Nelen & Schuurmans改进我们的开发流程。我们希望有更多的测试。所以我写了一个脚本

  • 它查询一个或多个组织(或个人账户)的github API。

  • 它查询那里的项目,查找上周的提交(可配置)。

  • 对于每个提交,它简单地检查提交中是否有包含test的完整路径的文件名。如果有,则该提交被认为是“测试提交”。

  • 对于每个项目,它统计提交数和测试提交数。

  • 对每个提交者也是如此。

最后,您会得到一个按提交数排序的项目和提交者列表。

风险:你得到你衡量的东西

该指标不完整且不精确。当有人提到“代码覆盖率”时,开始拿起火炬和长柄叉的人现在也会这么做。我的回答:滚开。

  • 您可以识别那些从不测试的同事。您可以教育他们。我可以借用那把长柄叉吗?

  • 您可以识别质量有所提高的项目。

  • 您识别出那些因截止日期而明显存在问题的项目,如果您自己需要使用它们,这些项目可能会在未来给您带来麻烦。

  • 您识别出那些与您合作时能提升项目质量的同事。

有很多事情您都没有测量。但是,那些不关心测试的人也不会在测试文件中添加空行,以便至少将一些测试提交归功于自己 :-)

配置

以下为默认设置,显然非常以我公司为中心。

SETTINGS = {
    'auth': None,  # Set it to ['username', 'very_secret'].
    'days': 7,
    'organizations': [
        'ddsc',
        'lizardsystem',
        'nens',
        ],
    'extra_projects': [
        # ('organization', 'project'),
        ('reinout', 'buildout'),
        ('reinout', 'django-rest-framework'),
        ('reinout', 'serverinfo'),
        ('reinout', 'z3c.dependencychecker'),
        ('rvanlaar', 'djangorecipe'),
        ('zestsoftware', 'zest.releaser'),
        ],
    }

要自定义它,请在工作目录中添加一个 settings.json 文件。您放入那里的任何内容都将用来覆盖默认的 SETTINGS 字典。确保它格式正确为 JSON,即字符串周围带有双引号。例如:

{"auth": ["reinout", "nogal_geheim"],
 "days": 8,
 "organizations": ["lizardsystem"],
 "extra_projects": []}
auth

用户名/密码列表。当您需要访问一些私有项目时使用。请注意,当您登录时,您将获得更高的 API 使用限制。

days

要报告的天数。默认为一周。

organizations

要查询的 GitHub 组织或个人账户列表。这是 URL 中 https://github.com/organization/project 后跟 github.com 的第一部分。

extra_projects

可选的 ["organization", "project"] 列表。对于那些您组织外的同事大量工作且对您至关重要的少量额外项目。例如,我在这里列出了 zc.buildout 和 zest.releaser。

请注意,只有提交到您自己组织的人的提交会被计入这些额外项目。这样,列表就不会被污染。

要验证您的设置,您可以调用 testcommitinfo --show-config,它将按 testcommitinfo 看到的打印配置。

与您的系统集成

也许您想将其输出包含在某些仪表板中?或者您想从中生成一个漂亮的 HTML 页面?

对于这些用例,您可以导出一个包含收集到的项目和用户信息的 JSON 文件。通过 --json-output 命令行选项传递 JSON 文件名,您将拥有所需的一切。

有问题?

有时 GitHub API 会间歇性失败。代码中有一些“再试一次”的 if/else 语句,可以解决大多数问题。每次我发现一个新的问题,我都会添加一些代码来解决它。

所以如果您有问题,您可以尝试再次运行它,大多数情况下都会正常运行。

如果您有一个真正的错误,您可以让我 (reinout@vanrees.org) 看一下。或者,更好的是,在 https://github.com/nens/githubinfo/issues 上提交一个问题。或者,甚至更好的是,尝试在拉取请求中修复它。

致谢

githubinfo 的变更日志

1.1 (2013-04-02)

  • 添加了将结果导出到 JSON 文件的可选功能。如果您想自己格式化输出,例如创建一个 HTML 页面,这很有用。

  • 添加了通过 argparse 进行参数解析。**警告**:这至少需要 python 2.7。我想这应该不是问题。至少现在 -h 给出了正确的用法信息!

  • 添加了 githubinfo.__version__ 属性。

1.0.1 (2013-04-02)

  • 小的 README 修复:示例配置文件中的引号错误。感谢 Maximilien Riehl 发现它!

1.0 (2013-04-01)

  • 将适当的文档和使用说明添加到 README 中。

  • 检测 doctests,也是如此。对于 .rst.txt 文件,我们在提交的补丁中搜索 >>>,这是 doctest 提交的一个很好的指示。我需要这个来检测 zc.buildout 中的经过良好测试的提交。

  • 同时加载分支中的提交。

  • 为除主要项目外的额外项目添加了选项。只有来自我们主要组织的提交者提交的提交才会被计数。

  • 从 github 组织中提取测试提交信息。

  • 使用 nensskel 1.30.dev0 创建了初始项目结构。

项目详情


下载文件

下载您平台上的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。

源分发

githubinfo-1.1.zip (32.4 kB 查看散列)

上传时间

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面