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/op、2048 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 格式的数据。

