从github提取测试相关的提交信息
项目描述
Github测试提交报告
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 上提交一个问题。或者,甚至更好的是,尝试在拉取请求中修复它。
致谢
Reinout van Rees 开发了这个程序。
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 的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | cbbfa730d605be136a73f09b88295dce94b139e6080a7def042dd346f073d28f |
|
MD5 | 8cf4b480993897a98af5c6a74f09eda6 |
|
BLAKE2b-256 | 8ebef85f59e503a9dbc63fb64ad27a19697ca04e42a173e83e8b8cc267ba34fe |