Покрытие кода SonarJS показано как 0

Я использую SonarQube 6.5 и пытаюсь импортировать файл lcov.info для покрытия кода, используя свойство sonar.javascript.lcov.reportPaths.

Моя сборка выполняется с использованием Jenkins. код развертывается и тестируется в каталоге /path/to/Deploydirectory/parent-project1/project1/, а отчеты создаются в рабочем пространстве jenkins /path/to/jenkins/workspace/BUILD_DEPLOY/parent-project1/project1/coverage.

Я использую Стамбул для покрытия кода как

"scripts": {
"coverage": "./node_modules/.bin/istanbul  cover 
             node_modules/mocha/bin/_mocha --dir=/path/to/jenkins/workspace/BUILD_DEPLOY/parent-project1/project1/coverage"

},

lcov.info генерируются, как показано ниже

         TN:
         SF:/path/to/Deploydirectory/project1/package/plugins/file1.js
         FN:11,convetUTCtoLocal
         FN:17,customCallback
         FN:26,(anonymous_3)
         FN:50,(anonymous_4)
         FN:68,(anonymous_5)
         FN:95,(anonymous_6)
         ......

При получении ошибки SonarQube

Не удалось разрешить 2 пути к файлам в [/path/to/jenkins/workspace/BUILD_DEPLOY/parent-project1/project1/coverage/lcov.info, /path/to/jenkins/workspace/BUILD_DEPLOY/parent-project2/project2/coverage/ lcov.info], первый неразрешенный путь: /path/to/Deploydirectory/parent-project1/project1/file1.js

конфигурация sonrQube

sonar.inclusions=**/*.js
sonar.scm.disabled=true
sonar.sources=$WORKSPACE
sonar.java.binaries=$WORKSPACE
sonar.projectBaseDir=/path/to

sonar.javascript.lcov.reportPaths=
/path/to/jenkins/workspace/BUILD_DEPLOY/parent-
project1/project1/coverage/lcov.info, 
/path/to/jenkins/workspace/BUILD_DEPLOY/parent- 
project2/project2/coverage/lcov.info

sonar.sourceEncoding=UTF-8

person PPB    schedule 14.08.2018    source источник


Ответы (1)


У вас может быть какое-то свойство в вашем sonar-project.properties, которое конфликтует с отчетами, возможно, проблема с путями?

Сгенерировав файл lcov.info и сообщив сонарному сканеру, где он находится, через sonar.javascript.lcov.reportPaths (список, разделенный запятыми), правильно загрузит ваше покрытие.

Учитывая случай, когда покрытие генерируется с помощью модуля nyc NPM (или istanbul в вашем случае, если создается файл lcov), сценарий покрытия и конфигурация сонара будут следующими:

package.json:

"scripts": {
    "coverage": "nyc npm test",
    "test": "mocha tests/unit/*.js"
  },

sonar-project.properties:

sonar.host.url=https://sonarqube.server
sonar.scm.disabled=true

sonar.projectKey=my-app
sonar.projectName=My App
sonar.projectVersion=1.0

sonar.language=js

sonar.sources=src

sonar.javascript.lcov.reportPaths=coverage/lcov.info
sonar.eslint.reportPaths=eslint-report.json
person yegorski    schedule 27.02.2019