用于Gitlab CI测试覆盖率解析的正则表达式

时间:2017-02-09 02:06:10

标签: gitlab code-coverage gitlab-ci

我一直在努力寻找能够在"测试覆盖率解析中使用的正则表达式"输入" CI / CD管道"页。示例显示不一致的示例,即一些转义括号和其他不符合,百分比符号相同,一些捕获$1中的显式结果等等,这无助于帮助。无论如何,这是我的文本 - 什么是正则表达式?

CI徽章:

![coverage](https://gitlab.com/mycompany/master/badges/master/coverage.svg?job=coverage)

输出文字:

Unit test coverage:
   10.01% blocks
   10.01% lines

到目前为止尝试过:(添加斜杠只是为了表示前面的空格或正则表达式)

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

3 个答案:

答案 0 :(得分:6)

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

http://www.rubular.com/

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

enter image description here

答案 1 :(得分:1)

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

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

如果您想获取线路覆盖范围,请使用此选项:

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

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

为了将来的参考,GitLab是用Ruby编写的,所以你可以在rubular.com

的Ruby中测试这个正则表达式

答案 2 :(得分:1)

问题在于覆盖网址查询"?job = coverage"不对。至于正则表达式,我使用了:

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