自笑话25起,覆盖率报告具有不同的源路径

问题描述 投票:0回答:1

我正在使用@ nrwl / nx设置和Jest运行Angular项目进行单元测试。我已配置Jest为每个应用程序和lib生成lcov文件,然后由SonarQube Scanner拾取这些文件以报告测试范围。每个库都是其自己的Sonar模块。

最近,我将Jest版本从24.1.0更新为25.1.0。从那时起,我在SonarQube中的覆盖率始终为0%,因为扫描仪无法找到文件:

WARN: Could not resolve 1 file paths in [/mnt/c/Users/Patrick/Projects/projectname/apps/projectname/../../coverage/apps/projectname/lcov.info], first unresolved path: apps/projectname/src/environments/environment.ts 

我分析了两个版本的lcov文件,并且发现生成的路径已更改。

笑话25.1(不起作用)

SF:apps/projectname/src/environments/environment.ts

笑话24.1(作品)

SF:/mnt/c/Users/Patrick/Projects/projectname/apps/projectname/src/environments/environment.ts

当我手动将其更改为以下内容时,这也起作用:

SF:src/environments/environment.ts

但是现在我有点卡住了,因为我没有找到一种方法来告诉Jest用旧的方法生成路径,也没有告诉Sonar路径现在是另一种方法了。

angular sonarqube jestjs nrwl-nx
1个回答
0
投票

我有完全一样的问题!我通过在测试执行后执行脚本解决了该问题,该脚本通过将相对路径转换为绝对路径(process.cwd())来修改lcov.info。现在,再次显示SonarQube中的CC:)

const project = `name-of-your-project`;
const file = `./${project}/jest/coverage/lcov.info`;

fs.readFile(file, 'utf8', function (err,data) {
  if (err) {
    return console.error(err);
  }
  const result = data.replace(/src/g, `${process.cwd()}/${project}/src`);

  fs.writeFile(file, result, 'utf8', function (err) {
    if (err) return console.error(err);
  });
});
© www.soinside.com 2019 - 2024. All rights reserved.