Golang中GitLab正则表达式问题求助

Golang中GitLab正则表达式问题求助 以下是我的 .gitlab-ci.yml 文件中的一段内容:

benchmarks:
  stage: benchmarks
  script:
    - env ENV=DEVELOPMENT GO111MODULE=on CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go test -run=xxx -bench=. ./test/benchmarks/... -mod vendor -benchtime 100x
  coverage: '/\(statements\)\s+\d{1,3}\./'

我希望这个流水线阶段能显示数字“X ns/op”,其中 X 是基准测试判定我的代码平均花费的纳秒数。

我应该在“coverage”行使用什么正则表达式?


更多关于Golang中GitLab正则表达式问题求助的实战教程也可以访问 https://www.itying.com/category-94-b0.html

2 回复

请提供一些您想要从中提取内容的示例数据。只有这样,我们才能帮助您构建相应的正则表达式。

更多关于Golang中GitLab正则表达式问题求助的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


要提取基准测试输出中的 X ns/op 值,可以使用以下正则表达式:

/\d+\s+ns\/op/

或者更精确地匹配整个数字部分:

/\d+\s+ns\/op/

.gitlab-ci.yml 中的完整配置:

benchmarks:
  stage: benchmarks
  script:
    - env ENV=DEVELOPMENT GO111MODULE=on CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go test -run=xxx -bench=. ./test/benchmarks/... -mod vendor -benchtime 100x
  coverage: '/\d+\s+ns\/op/'

这个正则表达式会匹配类似 156 ns/op2048 ns/op 这样的输出。如果你需要捕获具体的数字值用于后续处理,可以使用分组:

coverage: '/(\d+)\s+ns\/op/'

这样 GitLab CI 会捕获括号中的数字部分。

示例基准测试输出匹配:

// go test -bench=. 输出示例:
// BenchmarkFunc-8   	  100000	     156 ns/op
// 正则表达式会匹配 "156 ns/op"

注意:GitLab CI 的 coverage 正则表达式用于从命令输出中提取覆盖率(或类似指标)数值。确保你的 go test 基准测试确实输出了 ns/op 格式的数据。

回到顶部