【问题标题】:SonarQube 5.1.2 fails to recognize relative path for sonar.sourcesSonarQube 5.1.2 无法识别 sonar.sources 的相对路径
【发布时间】:2016-02-17 16:19:14
【问题描述】:

下面是我用于 SonarQube 分析的目录结构。

我使用 SonarQube 5.0 和 C++ Community 插件版本 0.9.4 和 sonar-runner 2.4 和 sonar-project.properties 文件中提到的 sonar.sources=../CheckoutDir1。这就像一个魅力。

然后我升级到 SonarQube 5.1.2,保持 C++ Community 插件、sonar-runner 和 sonar-project.properties 文件完整。现在 sonar-runner 失败并出现以下错误:

14:18:17.531 INFO  - Base dir: D:\CheckoutDir2
14:18:17.531 INFO  - Working dir: D:\CheckoutDir2\.sonar
14:18:17.531 INFO  - Source paths: ../CheckoutDir1
.
.
.
.

    ERROR: Error during Sonar runner execution
org.sonar.runner.impl.RunnerException: Unable to execute Sonar
    at org.sonar.runner.impl.BatchLauncher$1.delegateExecution(BatchLauncher.java:91)
    at org.sonar.runner.impl.BatchLauncher$1.run(BatchLauncher.java:75)
    at java.security.AccessController.doPrivileged(Native Method)
    at org.sonar.runner.impl.BatchLauncher.doExecute(BatchLauncher.java:69)
    at org.sonar.runner.impl.BatchLauncher.execute(BatchLauncher.java:50)
    at org.sonar.runner.api.EmbeddedRunner.doExecute(EmbeddedRunner.java:102)
    at org.sonar.runner.api.Runner.execute(Runner.java:100)
    at org.sonar.runner.Main.executeTask(Main.java:70)
    at org.sonar.runner.Main.execute(Main.java:59)
    at org.sonar.runner.Main.main(Main.java:53)
Caused by: java.lang.NullPointerException
    at sun.nio.fs.WindowsPathParser.parse(WindowsPathParser.java:98)
    at sun.nio.fs.WindowsPathParser.parse(WindowsPathParser.java:77)
    at sun.nio.fs.WindowsPath.parse(WindowsPath.java:94)
    at sun.nio.fs.WindowsFileSystem.getPath(WindowsFileSystem.java:255)
    at sun.nio.fs.AbstractPath.resolve(AbstractPath.java:53)
    at org.sonar.api.batch.fs.internal.DefaultInputFile.path(DefaultInputFile.java:72)
    at org.sonar.api.batch.fs.internal.DefaultInputFile.file(DefaultInputFile.java:64)
    at org.sonar.api.batch.fs.internal.PathPattern$RelativePathPattern.match(PathPattern.java:101)
    at org.sonar.batch.scan.filesystem.LanguageDetection.isCandidateForLanguage(LanguageDetection.java:124)
    at org.sonar.batch.scan.filesystem.LanguageDetection.language(LanguageDetection.java:97)
    at org.sonar.batch.scan.filesystem.InputFileBuilder.completeAndComputeMetadata(InputFileBuilder.java:100)
    at org.sonar.batch.scan.filesystem.FileIndexer$1.call(FileIndexer.java:157)
    at org.sonar.batch.scan.filesystem.FileIndexer$1.call(FileIndexer.java:154)
    at java.util.concurrent.FutureTask.run(FutureTask.java:262)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:744)

奇怪的是,sonar-runner 中的调试参数 -X、-e、-Dsonar.verbose=true 显示除了 java.lang.NullPointerException 之外没有其他信息。

如果我提到 sonar.sources 的绝对路径,SonarQube 分析工作正常。

请建议如何解决这个问题?此外,SonarQube 5.1.2 应清楚地打印有关无法从相对路径定位 sonar.sources 的调试日志。

【问题讨论】:

    标签: sonarqube sonarqube5.1.2


    【解决方案1】:

    正如我在日志中看到的那样,sonar 正在考虑将 CheckoutDir2 作为您的基本目录, 这不正确,

    你应该设置sonar.projectBaseDir=<AbsolutePath>/ProjectName/CheckoutDir1 然后sonar.sources=. 所以现在即使 sonar-project.properties 文件与源代码不在同一目录下,它仍然可以正常工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-12-11
      • 1970-01-01
      • 1970-01-01
      • 2021-05-24
      • 2018-05-25
      • 2016-09-11
      • 2015-04-19
      相关资源
      最近更新 更多