这里很简单的问题。我想添加声纳以在每个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插件来分析我的代码?
答案 0 :(得分:0)
a)我无法弄清楚插件的作用
该插件用于从代码覆盖率报告和存储库代码扫描中收集详细信息,以便分析可能的错误,重复等。您可以搜索示例声纳报告以查找所有内容如何使用settings.xml
和maven plugin
等两种方法使用maven获取这些详细信息的详细信息请参见SonarQube Scanner for Maven和
SonarQube - 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
的工件似乎已过时且无法维护。