【问题标题】:Sonar job fails while analyzing in jenkins在詹金斯分析时声纳工作失败
【发布时间】:2017-09-02 01:23:08
【问题描述】:

我正在做一个项目,用 jenkins 中的 sonarqube 分析代码。工作空间下的项目结构为:/var/lib/jenkins/workspace/myproject-trunk-sonar/myproject/pom.xml、Module1、Module2等

我的 sonar-project.properties:

# Required metadata
sonar.projectKey=Myproject
sonar.projectName=Myproject
sonar.projectVersion=1.0

#Set modules IDs
sonar.modules=Module1, Module2
# Comma-separated paths to directories with sources (required)
sonar.sources=src/main/java

# Language
sonar.language=java

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

如果我的 pom.xml 和模块所在的 /var/lib/jenkins/workspace/myproject-trunk-sonar/myproject 下有 sonar-project.properties 文件,我会看到以下错误:

ERROR: Error during SonarQube Scanner execution
ERROR: You must define the following mandatory properties for 'Unknown': sonar.projectKey, sonar.sources
ERROR: 
ERROR: Re-run SonarQube Scanner using the -X switch to enable full debug logging.
ERROR: SonarQube scanner exited with non-zero code: 1 

如果我在 /var/lib/jenkins/workspace/myproject-trunk-sonar 下有 sonar-project.properties 文件,我会看到以下错误:

ERROR: Error during SonarQube Scanner execution
java.lang.IllegalStateException: The base directory of the module 'Module1' does not exist: /var/lib/jenkins/workspace/myproject-trunk-sonar/Module1
    at org.sonarsource.scanner.cli.Conf.setModuleBaseDir(Conf.java:180)
    at org.sonarsource.scanner.cli.Conf.loadModuleConfigFile(Conf.java:172)
    at org.sonarsource.scanner.cli.Conf.loadModulesProperties(Conf.java:137)
    at org.sonarsource.scanner.cli.Conf.loadProjectProperties(Conf.java:111)
    at org.sonarsource.scanner.cli.Conf.properties(Conf.java:59)
    at org.sonarsource.scanner.cli.Main.execute(Main.java:68)
    at org.sonarsource.scanner.cli.Main.main(Main.java:61)
ERROR: 
ERROR: Re-run SonarQube Scanner using the -X switch to enable full debug logging.

ERROR: SonarQube scanner exited with non-zero code: 1

如何让声纳扫描仪查看带有 java 代码的模块所在的目录?当我在模块所在的目录中有属性文件时,它甚至找不到属性文件并抱怨缺少必填字段。

感谢您的帮助。

【问题讨论】:

  • 如果你有一个 Maven 项目,那么你应该使用 mvn sonar:sonar 执行分析(当然是在编译之后)
  • 感谢您的快速回复。我尝试了 mvn sonar:sonar 并看到以下错误:[ERROR] Failed to execute goal org.codehaus.mojo:sonar-maven-plugin:2.0:sonar (default-cli) on project Myproject: Execution default-cli of goal org.codehaus.mojo:sonar-maven-plugin:2.0:sonar failed: A required class is missing while execution org.codehaus.mojo:sonar-maven-plugin:2.0:sonar: org/sonatype/aether/graph/DependencyFilter 谢谢寻求帮助。

标签: java maven jenkins sonarqube


【解决方案1】:

要让 maven 运行声纳分析,您必须将 sonar-maven 插件添加到您的 pom。

<pluginManagement>
    <plugins>
        ...
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>sonar-maven-plugin</artifactId>
            <version>2.2</version>
        </plugin>
    </plugins>
</pluginManagement>

并且运行设置 jenkins 以声纳目标运行 maven mvn sonar:sonar

关于模块,问题的解决将取决于代码结构。

参见此处examples of multi-modules 声纳分析。

【讨论】:

  • 感谢您的回复。我将尝试更新 sonar-maven-plugin 并查看。我现在有2.0。我尝试了声纳扫描仪的多模块方法,但无法识别属性文件。我在我最初的帖子中发布了该文件夹结构和错误,我看到当我在 2 个不同的位置拥有 soanr-project.properties 文件时。感谢您的帮助。
【解决方案2】:

在 jenkins 中执行作业后 Sonarqube 操作。忘记 sonar-project.properties。如果您的项目使用 maven 包构建良好,sonarqube 将毫无问题地对其进行分析。告诉我们。谢谢

【讨论】:

    【解决方案3】:

    感谢所有回复。我能够通过修改我的项目的目录结构来解决这个问题。我删除了目录“myproject”并将 sonar-project.properties 文件放在所有模块所在的位置,并且能够成功运行扫描仪。

    感谢您的帮助。

    【讨论】:

      猜你喜欢
      • 2015-03-19
      • 1970-01-01
      • 1970-01-01
      • 2013-05-10
      • 2021-05-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多