如何在 SonarQube Scanner for Jenkins 中设置 sonar.projectBaseDir?

dur*_*dur 3 sonarqube sonarqube-scan

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

在这种特殊情况下,我可以更改模块的顺序,但一般来说(多个分析模块)它不起作用。所以我想解决该属性的问题sonar.projectBaseDir,请参阅高级 SonarQube 扫描仪用法

替代分析目录

如果要分析的文件不在分析开始的目录中,请使用该sonar.projectBaseDir属性将分析移动到其他目录。EG 分析从 开始jenkins/jobs/myjob/workspace,但要分析的文件位于ftpdrop/cobol/project1.

声纳项目.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
    
    Run Code Online (Sandbox Code Playgroud)

    我认为这是 SonarQube Scanner 插件中的一个错误,因为project.settings与 不兼容 sonar.projectBaseDir,请参阅高级 SonarQube Scanner 用法

    该属性project.settings可用于指定项目配置文件的路径(该选项与project.homesonar.projectBaseDir属性不兼容)。

  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
    
    Run Code Online (Sandbox Code Playgroud)
  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
    
    Run Code Online (Sandbox Code Playgroud)

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

dur*_*dur 5

我找到了一个解决方案,我必须将属性添加sonar.projectBaseDirAnalysis properties

配置:

用于 Jenkins 配置的声纳扫描仪

日志:

/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
Run Code Online (Sandbox Code Playgroud)