如何在同一项目中为 java 和 java 脚本配置 Sonarqube 扫描仪

How to configure Sonarqube scanner for java and javascript in the same project

我一直在尝试为包含 java 模块(核心)和 javascript 模块(网络)的 Maven 项目设置声纳扫描仪。

我可以获取 java 覆盖数据扫描并显示在我的本地声纳服务器上,或者 java 脚本,但不能同时获取两者。

这是我的声纳-project.properties 文件,其中 sonar.modules 属性 可以有 4 个值之一:

### below: select just one of the 4 possible values for sonar.modules
sonar.modules = core --> get java coverage data
sonar.modules = web --> get javascript coverage data
sonar.modules = core,web --> get only java coverage data
sonar.modules = web,core --> get only java coverage data

sonar.sources=src

# javascript coverage report
web.sonar.exclusions=src/main/webapp/js/lib/**/*.js
web.sonar.javascript.lcov.reportPath = test-output/coverage/lcov.info

# java coverage report
core.sonar.java.binaries = target/classes
core.sonar.java.libraries = ../web/target/scheduler-web-3.5.0-SNAPSHOT/WEB-INF/lib
core.sonar.java.test.libraries = ../web/target/scheduler-web-3.5.0-SNAPSHOT/WEB-INF/lib
core.sonar.jacoco.reportPath = target/jacoco.exec
core.sonar.junit.reportsPath = target/surefire-reports
core.sonar.jacoco.reportMissing.force.zero = true

我的解决方案的关键,基于以下已接受的答案:

<properties>
    <sonar.javascript.lcov.reportPath>test-output/coverage/lcov.info</sonar.javascript.lcov.reportPath>
</properties>

基本上声纳不知道在哪里可以找到我的 lcov 文件。

您不应使用带有专用 sonar-project.properties 文件的 SonarQube 扫描仪来 运行 您的分析 - 而是依赖 Scanner for Maven.

要了解如何做到这一点,只需看一下 SonarQube 本身(包含 Java 和 JS)是如何分析的:

  <properties>
    <!-- self-analysis -->
    <sonar.sources>src/main/js,src/main/less</sonar.sources>
    <sonar.tests>src/main/js</sonar.tests>
    <sonar.test.inclusions>src/main/js/**/__tests__/**</sonar.test.inclusions>
    <sonar.exclusions>src/main/js/libs/third-party/**/*,src/main/js/libs/require.js,src/main/js/**/__tests__/**</sonar.exclusions>
    <yarn.script>build</yarn.script>
</properties>