首页 > 解决方案 > Gitlab CI 找不到 sonarqube 覆盖率报告,在本地工作

问题描述

我有一个通过 gitlab ci 部署的 Angular 应用程序。对托管的 Sonarqube 实例的部署确实通过了,但不幸的是没有任何代码覆盖率报告出现

我的 gitlab yml 文件如下


stages:
  - test
  - deploy

unittests:
  image: markhobson/node-chrome:latest
  stage: test
  variables:
    NODE_ENV: development
  before_script:
    - npm install
  script: 
    - npm run test
    - npm run sonar


production:
  type: deploy
  stage: deploy
  image: ruby:latest
  script:
    - echo "Heroku api key = $HEROKU_API_KEY"
    - echo "Heroku appname = $HEROKU_APP_NAME"
    - apt-get update -qy
    - apt-get install -y ruby-dev
    - gem install dpl
    - dpl --provider=heroku --app=$HEROKU_APP_NAME --api-key=$HEROKU_API_KEY
  only:
    - master

而我的 sonar-project.properties 文件如下

sonar.host.url=HOSTURL

sonar.projectKey=SONARKEYNAME
sonar.login=
sonar.password=
sonar.projectName=SONARKEYNAME
sonar.gitlab.project_id=GITLABURL

sonar.typescript.lcov.reportPaths=/coverage/client/lcov.info
sonar.javascript.lcov.reportPaths=/coverage/client/lcov.info

# --- optional properties ---
sonar.projectVersion=0.0.1
sonar.exclusions=client/node_modules/**, node_modules/**
sonar.sourceEncoding=UTF-8
sonar.verbose=false
sonar.working.directory=.scannerwork

sonar.projectBaseDir=.
sonar.sources=./src/app
sonar.sourceEncoding=UTF-8

sonar.exclusions=node_modules/**,**/*.spec.ts,**/*.css
sonar.test.inclusions=**/*.spec.ts

每当我通过 CI 部署应用程序时,我都会收到以下消息:

Provided LCOV file path: coverage/client/lcov.info. Seek file with the path: /builds/USERNAME/REPONAME/coverage/client/lcov.info
No coverage information will be saved because all LCOV report files cannot be found.

有谁知道如何解决此错误以及为什么在本地运行声纳扫描时不会发生此错误(没有 CI)

标签: angularsonarqubegitlabsonarqube-scan

解决方案


经过长时间的搜索,结果发现angular.json设置中没有启用代码覆盖率。我在下面添加了以下内容"test"

          "options": {
            "codeCoverage": true,
            "main": "src/test.ts"
           }

使用 gitlab CI 正确显示覆盖范围并在本地运行命令


推荐阅读