【问题标题】:How can I scan a multi module maven project with sonar?如何使用声纳扫描多模块 Maven 项目?
【发布时间】:2020-12-11 03:27:54
【问题描述】:

我有一个多模块 maven 项目,当我尝试运行声纳扫描时,只运行了 3 个模块中的 1 个。我有一个带有以下模块的父 Pom

  <modules>
    <module>core</module>
     <module>Infra</module>
    <module>web</module>
 </modules>

网络模块是扫描中的唯一覆盖范围。它与包含主类的模块相同。我该怎么做才能获得所有模块?

编辑:

    <!-- Sonar -->
    <sonar.java.coveragePlugin>jacoco</sonar.java.coveragePlugin>
    <sonar.dynamicAnalysis>reuseReports</sonar.dynamicAnalysis>
    <sonar.jacoco.reportPath>${project.basedir}/target/jacoco.exec</sonar.jacoco.reportPath>
    <sonar.language>java</sonar.language>

我的父 POM 属性中有上述内容

   <plugin>
            <groupId>org.jacoco</groupId>
            <artifactId>jacoco-maven-plugin</artifactId>
            <version>0.7.9</version>
            <configuration>
                <destFile>${sonar.jacoco.reportPath}</destFile>
                <append>true</append>
            </configuration>
            <executions>
                <execution>
                    <id>agent</id>
                    <goals>
                        <goal>prepare-agent</goal>
                    </goals>
                    <configuration>
                        <propertyName>jaCoCoArgLine</propertyName>
                        <destFile>${sonar.jacoco.reportPath}</destFile>
                    </configuration>
                </execution>
                <execution>
                    <id>report-aggregate</id>
                    <phase>verify</phase>
                    <goals>
                        <goal>report-aggregate</goal>
                    </goals>
                    <configuration>
                        <dataFile>${project.basedir}/target/jacoco-unit.exec</dataFile>
                         <outputDirectory>${project.build.directory}/jacoco-report</outputDirectory>
                    </configuration>
                </execution>
            </executions>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <!-- The configuration seems to be required for test coverage to work -->
            <configuration>
                <argLine>${argLine}</argLine>
            </configuration>
        </plugin>

这在父 POM 属性中。

这是用于运行声纳的命令

   mvn -e org.sonarsource.scanner.maven:sonar-maven-plugin:${config.sonarMavenPluginVersion}:sonar 

  -Dsonar.host.url=${config.sonarHostUrl} 
   -Dsonar.login=${config.sonarLogin} 

【问题讨论】:

  • 如何执行扫描?哪些模块上的哪些命令?
  • 我没有看到有关如何执行扫描的信息。对于 Maven,这很容易,简单的 mvn sonar:sonar -Dsonar.host.url=... -Dsonar.login=... 就足够了(see docs。我认为您应该从头开始创建配置,因为您定义了 4 个 SonarQube 参数,并且所有这些参数都已弃用/删除(例如 sonar.language)。
  • @agabrys 已更新。这有帮助吗?

标签: maven sonarqube pom.xml


【解决方案1】:

这是我为使其正常工作所做的:

  1. 在父 pom 的 build 部分中添加了 jacoco 插件

  2. 将以下内容添加到我的 maven settings.xml 文件中(我在本地运行 sonarqube):

    &lt;sonar.host.url&gt;http://localhost:9000&lt;/sonar.host.url&gt;

    &lt;sonar.login&gt;whatever credential you are using for login token &lt;/sonar.login&gt;

  3. 确保先运行mvn clean install,然后运行mvn sonar:sonar

【讨论】:

    猜你喜欢
    • 2013-03-21
    • 2019-10-27
    • 2016-05-03
    • 2018-04-23
    • 2014-12-23
    • 2021-02-23
    • 2019-03-09
    • 2019-07-02
    • 2016-12-01
    相关资源
    最近更新 更多