【问题标题】:How to Run SonarQube Findbugs Analysis for a project with multiple source directories如何为具有多个源目录的项目运行 SonarQube Findbugs Analysis
【发布时间】:2018-04-05 06:23:52
【问题描述】:

我有一个多模块 maven 项目,其中除了 java 文件所在的“src”之外还有源目录。

这是文件夹结构

folder1
    -pom.xml

pom.xml 包含这样定义的模块:

<modules>
    <module>module1</module>
    <module>module2</module>
    <module>module3</module>
    <module>module4</module>
    <module>module5</module>
    <module>module6</module>
    <module>module7</module>
    <module>module8</module>
    <module>module9</module>
    <module>module10</module>
</modules>

不同的模块是这样组织的:

module1
    -src
    -gen

module2
    -src

module3
    -gen

module4

module5
    -src
    -gen

因此,如您所见,有些模块/项目具有 src 或 gen 或两者兼有,或者没有。

当我运行 findbugs 分析时,它只从 'src' 中选择 java 类并跳过了 'gen' (自然作为 Maven 模型强制分析器仅从 src 中选择)

因此,在 Jenkins 作业配置中,我明确定义了如下来源:

-Dsonar.sources=src,gen
-Dsonar.exclusions=src/test/java/**

当我使用此配置运行时,对于没有 src 和 gen 的模块的分析失败。 (模块2,模块3,模块4)

那么,我该如何运行分析来选择 src 或 gen 或者如果找不到它们中的任何一个则跳过该模块?

谢谢,

罗恩

【问题讨论】:

  • 问题是你为什么要检查'gen'文件夹?如果它包含如名称所示仅生成的源代码,那么扫描它是没有意义的。在下一次构建期间,任何可能的修复都将被覆盖。你可以定义一个 sonar-project.properties 文件docs.sonarqube.org/display/SCAN/…
  • 是的@Lonzak,'gen' 包含由某些进程生成的用于维护项目结构的 java 文件 (.java)。但是由于一些内部项目要求,我们需要同时扫描“src”和“gen”。我们有 50 多个模块,因此在 sonar-project.properties 中定义所有这些模块并定义它们的源代码会很繁琐

标签: maven sonarqube findbugs sonarqube-scan


【解决方案1】:

在为 Maven 使用 SonarQube 扫描器时,您不能使用命令行指定仅适用于某些模块的属性。

在要修改源的模块中,添加pom.xml 属性。例如,在module5/pom.xml 中添加:

<properties>
  <sonar.sources>src,gen</sonar.sources>
</properties>

【讨论】:

  • 是的,持续时间,这行得通。我所做的唯一修改是 1. 有 50 个模块,所以我在 superpom.xml 中添加了这个。 2. 一些模块既没有 src 也没有 gen 或者都没有。因此,在这种情况下,我必须为这些相应的模块提供源(src 或 gen 或空),否则,这些模块的声纳分析将失败
猜你喜欢
  • 1970-01-01
  • 2015-05-22
  • 1970-01-01
  • 1970-01-01
  • 2013-01-14
  • 2023-03-16
  • 1970-01-01
  • 1970-01-01
  • 2012-01-26
相关资源
最近更新 更多