Erorr: покрытие кода пусто от Sonarqube + Jest + Circle-CI - PullRequest
0 голосов
/ 31 октября 2019

Сценарий

Я использую Circle-ci для запуска проверки sonarqube для покрытия кода. Приложение Node использует jest для создания файлов покрытия кода. Я столкнулся с проблемой, когда файл lcov генерируется с абсолютными путями, то есть

/home/node/app/fixtures/github.js

, когда sonarqube запускает эти файлы на самом деле в

/root/project/app/fixtures/github.js

Ошибка:

WARN: Could not resolve 9 file paths in [/home/node/app/reports/lcov.info], first unresolved path: /home/node/app/fixtures/github.js

Возможное решение?

Это разрешимо с чем-то вроде

sed -i 's#/home/node/app/##g' /home/node/app/reports/lcov.info

Я положил этот аргумент в настройках sonarqube:

     File=$(sed -i 's#/home/node/app/##g' /home/node/app/reports/lcov.info)
     -Dsonar.javascript.lcov.reportPaths=$File

, чтобы превратить их в относительные пути, но это необходимо настроить, так как изображение, в котором создается отчет lcov, может иметь любую файловую структуру.

Package.json

...
{
   "test": "./node_modules/.bin/jest -c jest.unit.config.js --coverage --forceExit",
}

Настройка шара Circle-CI:

run:
command: |
     wget https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-4.1.0.1829-linux.zip unzip sonar-scanner-cli-4.1.0.1829-linux.zip 
     export SONAR_SCANNER_OPTS="-Xmx2048m" 
     File=$(sed -i 's#/home/node/app/##g' /home/node/app/reports/lcov.info)
     ./sonar-scanner-4.1.0.1829-linux/bin/sonar-scanner -X
    -Dsonar.host.url=${SONARQUBE_URL}
    -Dsonar.login=$SONARQUBE_TOKEN 
    -Dsonar.projectKey=${CIRCLE_PROJECT_REPONAME} 
    -Dsonar.sources=. -Dsonar.sourceEncoding=US-ASCII 
    -Dsonar.exclusions=**/node_modules/** 
    -Dsonar.javascript.lcov.reportPaths=$File 
    -Dsonar.junit.reportPaths="/home/node/app/reports/junit/js-test-results.xml"
...