如何使用Sonar Maven插件

时间:2016-12-27 08:58:45

标签: maven sonarqube-scan

这里很简单的问题。我想添加声纳以在每个Maven构建上执行。我试过了:

<plugin>
    <groupId>org.sonarsource.scanner.maven</groupId>
    <artifactId>sonar-maven-plugin</artifactId>
    <version>3.1.1</version>
</plugin>

<plugin>
    <groupId>org.codehaus.sonar</groupId>
    <artifactId>sonar-maven-plugin</artifactId>
    <version>5.1</version>
</plugin>

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>sonar-maven-plugin</artifactId>
    <version>2.7.1</version>
</plugin>

因为a)我无法弄清楚插件的作用和/或b)哪一个是当前插件。

如果我只将上述内容添加到<build> - &gt; <plugins>它没有被执行(所以插件没有默认执行)。所以我当然添加了一条<execution>指令,然后执行了Sonar,但出现以下错误信息:

<executions>
    <execution>
        <phase>prepare-package</phase>
        <goals>
            <goal>sonar</goal>
        </goals>
    </execution>
</executions>
  

无法执行目标org.sonarsource.scanner.maven:sonar-maven-plugin:3.1.1:项目org.acme.project.build上的声纳(默认):无法执行Findbugs:此项目包含Java源文件那些没有编译。

我使用哪个阶段(我尝试 validate compile test似乎并不重要 prepare-package package ,即使并非所有这些都有意义)。我确信项目中的任何地方都没有源代码生成。并且静态类编译得很好。

我认为问题可能是每个模块都会执行插件,包括父pom项目。这很奇怪,因为sonar:sonar会跳过该项目。

但是项目结构很简单,我找不到任何不寻常的东西:

<groupId>group</groupId>
<artifactId>org.acme.project.build</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>

<modules>
    <module>org.acme.project</module>
</modules>

<profiles>
    <profile>
        <id>sonar</id>
        <properties>
            <sonar.host.url>http://sonar.acme.org/</sonar.host.url>
        </properties>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.sonarsource.scanner.maven</groupId>
                    <artifactId>sonar-maven-plugin</artifactId>
                    <version>3.1.1</version>
                    <executions>
                        <execution>
                            <phase>compile</phase>
                            <goals>
                                <goal>sonar</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </build>
    </profile>
</profiles>

项目org.acme.project除了自己的工件ID和父项之外什么都没有。命令行是:mvn clean deploy -Dsonar.login=Wile.Coyote -Dsonar.password=*********** -Psonar

日志显示声纳总是在之前安装阶段执行,这当然是早期的。

那么如何使用Sonar的Maven插件来分析我的代码?

1 个答案:

答案 0 :(得分:0)

  

a)我无法弄清楚插件的作用

该插件用于从代码覆盖率报告和存储库代码扫描中收集详细信息,以便分析可能的错误,重复等。您可以搜索示例声纳报告以查找所有内容如何使用settings.xmlmaven plugin等两种方法使用maven获取这些详细信息的详细信息请参见SonarQube Scanner for MavenSonarQube - analyzing with Maven

  

b)哪一个是当前的。

maven central建议将org.codehaus.mojo的当前插件用作

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>sonar-maven-plugin</artifactId>
    <version>3.2</version>
</plugin>

已移至

<plugin>
    <groupId>org.sonarsource.scanner.maven</groupId>
    <artifactId>sonar-maven-plugin</artifactId>
    <version>3.2</version>
</plugin>

因此,理想情况下,您应该使用groupId - org.sonarsource.scanner.maven中的那个,也需要SonarQube Docs

建议

来自org.codehaus.sonar版本5.1的工件似乎已过时且无法维护。