用于React和Jest的Sonarqube覆盖配置

时间:2018-08-02 15:57:42

标签: reactjs sonarqube jestjs sonarjs

我在使用声纳配置时遇到问题,无法与React + Jest一起使用。

我的配置:

my_moudle.sonar.projectBaseDir=front_app my_module.sonar.javascript.file.suffixes=.js,.jsx

my_module.sonar.tests=src

my_module.sonar.test.inclusions=**/__tests__/** my_module.sonar.javascript.lcov.reportPaths=coverage/lcov.info

当前,我将src文件夹指向tests文件夹,因为我在同一项目文件夹的 tests 文件夹中为每个组件设置了一组测试。 感谢SonarJS,我对我的项目有适当的掩护,但是我不知道为什么在覆盖率度量指标中看不到单元测试的数量。 任何选中的配置都将不胜感激。

谢谢, 倒钩

1 个答案:

答案 0 :(得分:1)

SonarJS不负责单元测试报告(Relevant FAQ entry) SonarQube有责任导入单元测试报告。

我已经通过以下设置成功做到了。

首先,我们需要将笑话结果转换为sonar consumable format。为此,我使用了以下npm模块:jest-sonar-reporter

我的package.json的摘要:

"devDependencies": {
   ...
    "jest": "^21.1.0",
    "jest-sonar-reporter": "^1.3.0",
    ...
  },
  "jestSonar": {
    "sonar56x": true,
    "reportPath": "testResults",
    "reportFile": "sonar-report.xml",
    "indent": 4
  }

您现在将需要开玩笑地将此模块用作处理器,并告诉声纳扫描仪使用该模块生成的文件。说明在官方文档中。

但是,如果您使用的是create-react-app / react-scripts,则可能需要一些其他步骤,因为所有配置都不会被它们暴露。

您需要将package.json的scripts块中的测试条目修改为:

"test": "react-scripts test --env=jsdom --testResultsProcessor <pathToNodeModules/jestSonarReporter/index.js>