如何在 Jenkins 的 SonarQube 扫描仪中设置 sonar.projectBaseDir?

How to set sonar.projectBaseDir in SonarQube Scanner for Jenkins?

我尝试使用 SonarQube Scanner 插件(2.5 版)在 Jenkins 中分析一个多模块项目的一个模块。不幸的是,Jenkins 选择了错误的模块作为工作目录。

在这种特殊情况下,我可以更改模块的顺序,但通常(不止一个被分析的模块)它不起作用。所以我想解决 属性 sonar.projectBaseDir 的问题,请参阅 Advanced SonarQube Scanner Usages:

Alternate Analysis Directory

If the files to be analyzed are not in the directory where the analysis starts from, use the sonar.projectBaseDir property to move analysis to a different directory. E.G. analysis begins from jenkins/jobs/myjob/workspace but the files to be analyzed are in ftpdrop/cobol/project1.

sonar-project.properties

sonar.projectBaseDir=/home/ftpdrop/cobol/project1
sonar.sources=src
sonar.cobol.copy.directories=/copy

我尝试了以下方法来将 sonar.projectBaseDir 属性 设置为正确的模块(module2 而不是 module1):

  1. sonar.projectBaseDirsonar-project.properties 文件中

    但它不起作用。 sonar-project.properties 文件中的 属性 被忽略。日志显示 属性 被 JVM 选项覆盖:

    /Users/test/jenkinsslave/tools/hudson.plugins.sonar.SonarRunnerInstallation/SonarQube_Scanner_2.8/bin/sonar-scanner -X -e -Dsonar.host.url=http://sonarqube:9090 -Dproject.settings=/Users/test/jenkinsslave/workspace/Test/module2/sonar-project.properties -Dsonar.projectBaseDir=/Users/test/jenkinsslave/workspace/Test/module1
    

    我认为这是 SonarQube Scanner 插件中的一个错误,因为 project.settingssonar.projectBaseDir 不兼容,参见 Advanced SonarQube Scanner Usages:

    The property project.settings can be used to specify the path to the project configuration file (this option is incompatible with the project.home and sonar.projectBaseDir properties).

  2. sonar.projectBaseDir 作为 JVM 选项

    但它不起作用。 属性 被忽略。日志显示 属性 被覆盖:

    /Users/test/jenkinsslave/tools/hudson.plugins.sonar.SonarRunnerInstallation/SonarQube_Scanner_2.8/bin/sonar-scanner -X -e -Dsonar.host.url=http://sonarqube:9090 -Dsonar.projectBaseDir=/Users/test/jenkinsslave/workspace/Test/module1
    
  3. sonar.projectBaseDir作为附加参数

    但它不起作用。日志显示 属性 配置了两次:

    /Users/test/jenkinsslave/tools/hudson.plugins.sonar.SonarRunnerInstallation/SonarQube_Scanner_2.8/bin/sonar-scanner -Dsonar.projectBaseDir=/Users/test/jenkinsslave/workspace/Test/module2 -X -e -Dsonar.host.url=http://sonarqube:9090 -Dsonar.projectBaseDir=/Users/test/jenkinsslave/workspace/Test/module1
    

    我认为这是 SonarQube Scanner 插件中的一个错误,因为如果已经有这样的选项,它不应该添加 sonar.projectBaseDir 选项。

我找到了解决方案,我必须添加 属性 sonar.projectBaseDir 作为 分析属性

配置:

日志:

/Users/test/jenkinsslave/tools/hudson.plugins.sonar.SonarRunnerInstallation/SonarQube_Scanner_2.8/bin/sonar-scanner -X -e -Dsonar.host.url=http://sonarqube:9090 -Dsonar.projectBaseDir=./../module2