1

以下は、SonarQube 分析用のディレクトリ構造です。

ここに画像の説明を入力

私は SonarQube 5.0 を C++ Community プラグイン バージョン 0.9.4 で使用し、sonar-runner 2.4 を sonar.sources=../CheckoutDir1 で sonar-project.properties ファイルに記載しました。これは魅力のように機能していました。

次に、C++ コミュニティ プラグイン、sonar-runner、および sonar-project.properties ファイルをそのままにして、SonarQube 5.1.2 にアップグレードしました。現在、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)

不思議なことに、ソナー ランナーのデバッグ パラメーター -X、-e、-Dsonar.verbose=true は、java.lang.NullPointerException 以外の情報を明らかにしませんでした。

sonar.sources の絶対パスに言及すると、SonarQube 分析は正常に機能します。

この問題を解決する方法を提案してください。また、SonarQube 5.1.2 は、相対パスから sonar.sources を見つけることができないというデバッグ ログを明確に出力する必要があります。

4

1 に答える 1

0

ログでわかるように、ソナーは CheckoutDir2 をベース ディレクトリと見なしていますが、これは正しくありません。

設定する必要がsonar.projectBaseDir=<AbsolutePath>/ProjectName/CheckoutDir1ありますsonar.sources=. ので、sonar-project.properties ファイルがソース コードと同じディレクトリになくても、同じように機能します。

于 2016-08-24T17:41:47.390 に答える