代码之家  ›  专栏  ›  技术社区  ›  Chuck Claunch

Gitlab测试覆盖率分析失败

  •  1
  • Chuck Claunch  · 技术社区  · 6 年前

    我正在尝试让gitlab代码覆盖率解析工作正常。服务器是Gitlab 10.4.1-ee的本地实例。代码覆盖工具是 lcov 通过稍微修改的版本 this cmake文件。

    我在CI设置和gitlab CI文件中输入了regex,但都没有用。据我所知,如果没有提供,代码覆盖率甚至不会尝试解析。它只做了一件工作(数百件中的一件),再也没有(不知道为什么)。我将输出和正则表达式作为输入提供给 http://rubular.com 它的解析似乎是正确的。我还玩弄了各种迭代,在正则表达式中是否包含单引号或斜杠也没有用。我看不出我们在哪里可以得到任何调试输出或其他东西来表明这一步骤实际上已经执行了。

    项目的 CI/CD Settings &燃气轮机; Test coverage parsing 条目:

    \bOverall\D+(\d+[.]\d\%)
    

    这份工作很重要 .gitlab-ci.yml

    coverage:
      stage: build
      image: <redacted>:stable
      script:   
        - mkdir build
        - cd build
        - cmake -DCMAKE_BUILD_TYPE=Debug .. && make coverage
      coverage: '/(?m)\bOverall\D+(\d+[.]\d\%)/'
      artifacts:
        paths:
          - build/coverage/
    

    作业的相关输出:

    Overall coverage rate:
      lines......: 95.2% (749 of 787 lines)
      functions..: 96.5% (110 of 114 functions)
    Open ./coverage/index.html in your browser to view the coverage report.
    [100%] Built target coverage
    Uploading artifacts...
    build/coverage/: found 63 matching files           
    Uploading artifacts to coordinator... ok            id=20671 responseStatus=201 Created token=kRnB--qX
    Job succeeded
    
    1 回复  |  直到 6 年前
        1
  •  3
  •   Chuck Claunch    6 年前

    Turns out gitlab's coverage parser is not multi-line . 下面的regex结束了工作 lines[\.]+\: (\d+\.\d+)\% . 我的ci文件覆盖范围行最终是:

      coverage: '/lines[\.]+\: (\d+\.\d+)\%/'