java - Sonar Maven 插件在多模块 Maven 项目上比 Sonar Jenkins 或 Sonar CLI Scanner 发现更多错误

标签 java maven jenkins sonarqube sonarqube-scan

鉴于相同的代码和具有相同规则的相同 SonarQube 服务器,我在使用 mvn sonar:sonarsonar-scanner 扫描时发现的错误和漏洞数量截然不同。 code> CLI 和 sonar-project.properties 文件或 Sonar Jenkins 插件。比如,两倍多。

我在属性文件中设置了模块,在服务器上我可以看到两个扫描仪之间的代码行数是相同的。我可以在一份报告中看到测试,但不能在另一份报告中看到测试,但测试不会被计入代码行或任何错误。 Maven 发现 Jenkins 不存在的一个例子是squid:S2160,其中父类与子类属于同一模块。

我主要关心的是 Maven 发现的额外错误是否合法,特别是考虑到 Sonar 已弃用“SonarQube 分析与 Maven”构建后操作,并且推荐的 Jenkins 扫描仪在查看相同的代码。哪个扫描器是正确的,如果它是 Maven,是否仍然可以使用 Jenkins 中已弃用的步骤?

我已经使用模块对属性文件进行了匿名化,但它看起来像这样:

# Required metadata
sonar.projectKey=groupId:artifactID
sonar.projectName=My Project name
sonar.projectVersion=0.0.4-SNAPSHOT

# Comma-separated paths to directories with sources (required)
sonar.sources=coreModule/src/main/java,appModule/src/main/java
sonar.tests=coreModule/src/test/java,appModule/src/test/java

sonar.modules=core,app

core.sonar.projectBaseDir=coreModule
core.sonar.sources=src/main/java
core.sonar.projectName=My Core Module Name
app.sonar.projectBaseDir=appModule
app.sonar.sources=src/main/java
app.sonar.projectName=My App Module Name

# Language
sonar.language=java
sonar.java.source=8

# Encoding of the source files
sonar.sourceEncoding=UTF-8

最佳答案

适用于 Jenkins 的 SonarQube 扫描仪本质上是其他扫描仪的包装,以便您可以在 Jenkins 中方便地使用它们。从您问题的其余部分来看,我猜测您正在 Jenkins 中使用 SonarQube Scanner 分析构建步骤。

从您发布的属性来看,您似乎没有为 SonarQube Scanner 分析提供字节代码。如果是的话,就会有一个 sonar.java.binaries 属性。

SonarQube Scanner for Maven 发现更多问题的原因是它自动为分析提供该值。

如果您能够使用 SonarQube Scanner for Maven 进行分析,那么您应该这样做。正如您已经发现的,它“只是为您处理”大部分细节。

您在 Jenkins 中完成此操作,不是使用针对 Maven 特定构建步骤的 SonarQube Scanner,而是使用正常的 Maven 构建步骤。如上所述in the docs您将首先在“构建环境”部分中启用“准备 SonarQube 扫描仪环境”。然后您可以使用$SONAR_MAVEN_GOAL -Dsonar.host.url=$SONAR_HOST_URL进行分析。 (请注意,您可能还需要通过 -Dsonar.login 传递分析 token ,具体取决于您的项目权限。)

回答你的问题,Maven 分析发现的“额外”问题是合法的。其他分析找不到它们,因为它们是由针对字节码的规则引发的。

关于java - Sonar Maven 插件在多模块 Maven 项目上比 Sonar Jenkins 或 Sonar CLI Scanner 发现更多错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43638404/

相关文章:

java - 无法更改工具栏的颜色

apache-flex - 从 4.1.0 升级到 Flex SDK 4.5.1 会导致某些 mx 组件出现命名空间编译错误

java - Eclipse 中的 Maven 在 POM 更改时提示 "Unable to locate the Javac Compiler"

maven - SureFire JUnitCore 和 JUnit4 Runners 之间有什么区别

java - 如何在没有互联网访问权限的情况下使用 gradle?

linux - Jenkins 上带有单声道的 MSBUILD

git - Jenkins "Error cloning remote repo ' 起源 '"and "无法分配内存”

java - java.io.File 的 jar 在哪里?

java - Maven 找不到 htmlunit Artifact

java RGB颜色空间到YCrCb颜色空间转换