Gitlab 的 Regex CI 测试覆盖解析

Regex for Gitlab CI Test coverage parsing

我一直在努力寻找适用于 "CI/CD Pipelines" 页面上的 "Test coverage parsing" 输入的正则表达式。这些示例显示不一致的示例并没有帮助,即一些转义括号和其他不转义括号,与百分比符号相同,一些捕获 </code> 中的显式结果等。无论如何,这是我的文本 - 什么正则表达式?</p> <p>CI 徽章:</p> <pre><code>![coverage](https://gitlab.com/mycompany/master/badges/master/coverage.svg?job=coverage)

输出文本:

Unit test coverage:
   10.01% blocks
   10.01% lines

到目前为止已尝试:(添加斜线只是为了代表前面的 space 或正则表达式)

/ \(\d+\.\d+\%\) blocks/
/ (\d+\.\d+\%) blocks/
/ (\d+\.\d+%) blocks/
/ (\d+\.\d+)% blocks/

这个正则表达式应该覆盖块:

^\s*(\d+(?:\.\d+)?%)\s*blocks

如果你想抓取线路覆盖,那么使用这个:

^\s*(\d+(?:\.\d+)?%)\s*lines

GitLab 会自动添加前导和尾随 /,因此您无需将它们添加到正则表达式中。

为了将来参考,GitLab 是用 Ruby 编写的,所以你可以在 Ruby 中测试这个正则表达式,在 rubular.com

问题是覆盖率 URL 查询“?job=coverage”不正确。至于正则表达式,我使用了:

\W(\d+(?:\.\d+)%)\sblocks

有一个有用的 Ruby 正则表达式网页。

http://www.rubular.com/

我的 GitLab 代码覆盖率解析并没有帮助我。我认为这是因为 GitLab 中似乎注册了一个正则表达式问题的错误。 https://gitlab.com/gitlab-org/gitlab-ce/issues/21495