web-dev-qa-db-ja.com

svn blameの起動時のSonarQubeのエラー

最近、SonarQubeサーバーを4.5.2から5.0.1に、次に5.1にアップグレードしました(以下の編集を参照)。

突然、マルチモジュールMavenプロジェクトの分析が次のエラーで失敗しました:

[INFO] [12:02:05.045] Sensor SCM Sensor...
[INFO] [12:02:05.169] SCM provider for this project is: svn
[INFO] [12:02:05.169] Retrieve SCM blame information...
[INFO] [12:02:05.185] 650 files to be analyzed
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO]
[INFO] myproject ......................................... FAILURE [3:21.165s]
[INFO] module1 ........................................... SKIPPED
[INFO] module2 ........................................... SKIPPED
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2:42.429s
[INFO] Finished at: Thu Feb 26 11:30:01 CET 2015
[INFO] Final Memory: 73M/2020M
[DEBUG] [11:30:01.789] Executing: svn blame --xml --non-interactive -x -w src/main/Java/MyClass.Java
[ERROR] Failed to execute goal org.codehaus.mojo:sonar-maven-plugin:2.5:sonar (default-cli) on project myproject: Java.io.IOException: Cannot run progra
m "svn" (in directory "C:\somedirectory\module1"): CreateProcess error=2, The system cannot find the file specified
        at org.Apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.Java:216)
        at org.Apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.Java:153)
        at org.Apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.Java:145)
        at org.Apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.Java:84)
        at org.Apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.Java:59)
        at org.Apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.Java:183)
        at org.Apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.Java:161)
        at org.Apache.maven.DefaultMaven.doExecute(DefaultMaven.Java:317)
        at org.Apache.maven.DefaultMaven.execute(DefaultMaven.Java:152)
        at org.Apache.maven.cli.MavenCli.execute(MavenCli.Java:555)
        at org.Apache.maven.cli.MavenCli.doMain(MavenCli.Java:214)
        at org.Apache.maven.cli.MavenCli.main(MavenCli.Java:158)
        at Sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at Sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.Java:57)
        at Sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.Java:43)
        at Java.lang.reflect.Method.invoke(Method.Java:606)
        at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.Java:289)
        at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.Java:229)
        at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.Java:415)
        at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.Java:356)
Caused by: org.Apache.maven.plugin.MojoExecutionException: Java.io.IOException: Cannot run program "svn" (in directory "C:\somedirectory\module1"): CreateProcess error=2, The system cannot find the file specified
        at org.codehaus.mojo.sonar.bootstrap.ExceptionHandling.handle(ExceptionHandling.Java:41)
        at org.codehaus.mojo.sonar.bootstrap.RunnerBootstraper.execute(RunnerBootstraper.Java:139)
        at org.codehaus.mojo.sonar.SonarMojo.execute(SonarMojo.Java:138)
        at org.Apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.Java:106)
        at org.Apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.Java:208)
        ... 19 more

どういうわけか、コマンドsvnはディレクトリsrc/main/Java/MyClass.JavaにファイルC:\somedirectory\module1を見つけられませんでしたが、そのファイルは確実にそこにあります。 SonarQubeがディレクトリsvn blame --xml --non-interactive -x -w src/main/Java/MyClass.Java内のコマンドプロンプトC:\somedirectory\module1で実行しようとしているコマンドをコピーして貼り付けた場合、コマンドは正常に機能しています。

SonarQubeサーバーの[システム情報]ページの[ライブラリパス]フィールドに表示されるように、svnコマンドはPATH上で正しく機能しています。 SonarQubeサーバーは、mvn sonar:sonarが実行されたのと同じサーバーでホストされています(Windows Server 2008 R2)。

svnは、非難履歴を取得するためにSonarQubeによって起動されています。私が理解しているように、 SCMサポートに関してSonarQube 5.0でいくつかの変更が行われました (組み込みへの変更)。私の現在の回避策は、SonarQubeでSCMセンサーを無効にすることです(-Dsonar.scm.disabled=trueを使用するか、直接SonarQubeサーバーで、[設定]> [一般設定]> [SCM]の下にあります)。

SonarQube 5.0.1にアップグレードしたときにのみこの動作が発生したため、これは この質問 とは関係ありません。

使用されるJRE:1.7.0_51(64ビット)

EDIT:

SonarQube 5.1にアップグレードした後もエラーはここにありますが、メッセージは異なり、より明確です。 SVNクライアント(TortoiseSVN)を再インストールし、JenkinsとSonarQubeの両方を再起動しましたが、エラーが発生します:

SCMプロバイダーは「svn」に設定されましたが、このキーのSCMプロバイダーが見つかりませんでした。 SCMプロバイダーがインストールされていません

[ERROR] Failed to execute goal org.codehaus.mojo:sonar-maven-plugin:2.5:sonar (default-cli) on project bombardier: SCM provider was set to "svn" but no SCM provider found for this key. No SCM provider installed -> [Help 1]
org.Apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.codehaus.mojo:sonar-maven-plugin:2.5:sonar (default-cli) on project bombardier: SCM provider was set to "svn" but no SCM provider found for this key. No SCM provider installed
    at org.Apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.Java:216)
    at org.Apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.Java:153)
    at org.Apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.Java:145)
    at org.Apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.Java:84)
    at org.Apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.Java:59)
    at org.Apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.Java:183)
    at org.Apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.Java:161)
    at org.Apache.maven.DefaultMaven.doExecute(DefaultMaven.Java:317)
    at org.Apache.maven.DefaultMaven.execute(DefaultMaven.Java:152)
    at org.Apache.maven.cli.MavenCli.execute(MavenCli.Java:555)
    at org.Apache.maven.cli.MavenCli.doMain(MavenCli.Java:214)
    at org.Apache.maven.cli.MavenCli.main(MavenCli.Java:158)
    at Sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at Sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.Java:57)
    at Sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.Java:43)
    at Java.lang.reflect.Method.invoke(Method.Java:606)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.Java:289)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.Java:229)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.Java:415)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.Java:356)
Caused by: org.Apache.maven.plugin.MojoExecutionException: SCM provider was set to "svn" but no SCM provider found for this key. No SCM provider installed
    at org.codehaus.mojo.sonar.bootstrap.ExceptionHandling.handle(ExceptionHandling.Java:41)
    at org.codehaus.mojo.sonar.bootstrap.RunnerBootstraper.execute(RunnerBootstraper.Java:139)
    at org.codehaus.mojo.sonar.SonarMojo.execute(SonarMojo.Java:138)
    at org.Apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.Java:106)
    at org.Apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.Java:208)
    ... 19 more
Caused by: Java.lang.IllegalArgumentException: SCM provider was set to "svn" but no SCM provider found for this key. No SCM provider installed
    at org.sonar.batch.scm.ScmConfiguration.setProviderIfSupported(ScmConfiguration.Java:123)
    at org.sonar.batch.scm.ScmConfiguration.considerOldScmUrl(ScmConfiguration.Java:133)
    at org.sonar.batch.scm.ScmConfiguration.start(ScmConfiguration.Java:109)
    at Sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at Sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.Java:57)
    at Sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.Java:43)
    at Java.lang.reflect.Method.invoke(Method.Java:606)
    at org.picocontainer.lifecycle.ReflectionLifecycleStrategy.invokeMethod(ReflectionLifecycleStrategy.Java:110)
    at org.picocontainer.lifecycle.ReflectionLifecycleStrategy.start(ReflectionLifecycleStrategy.Java:89)
    at org.picocontainer.injectors.AbstractInjectionFactory$LifecycleAdapter.start(AbstractInjectionFactory.Java:84)
    at org.picocontainer.behaviors.AbstractBehavior.start(AbstractBehavior.Java:169)
    at org.picocontainer.behaviors.Stored$RealComponentLifecycle.start(Stored.Java:132)
    at org.picocontainer.behaviors.Stored.start(Stored.Java:110)
    at org.picocontainer.DefaultPicoContainer.potentiallyStartAdapter(DefaultPicoContainer.Java:1015)
    at org.picocontainer.DefaultPicoContainer.startAdapters(DefaultPicoContainer.Java:1008)
    at org.picocontainer.DefaultPicoContainer.start(DefaultPicoContainer.Java:766)
    at org.sonar.api.platform.ComponentContainer.startComponents(ComponentContainer.Java:91)
    at org.sonar.api.platform.ComponentContainer.execute(ComponentContainer.Java:77)
    at org.sonar.batch.scan.ScanTask.scan(ScanTask.Java:57)
    at org.sonar.batch.scan.ScanTask.execute(ScanTask.Java:45)
    at org.sonar.batch.bootstrap.TaskContainer.doAfterStart(TaskContainer.Java:135)
    at org.sonar.api.platform.ComponentContainer.startComponents(ComponentContainer.Java:92)
    at org.sonar.api.platform.ComponentContainer.execute(ComponentContainer.Java:77)
    at org.sonar.batch.bootstrap.GlobalContainer.executeTask(GlobalContainer.Java:158)
    at org.sonar.batch.bootstrapper.Batch.executeTask(Batch.Java:95)
    at org.sonar.batch.bootstrapper.Batch.execute(Batch.Java:67)
    at org.sonar.runner.batch.IsolatedLauncher.execute(IsolatedLauncher.Java:48)
    at Sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at Sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.Java:57)
    at Sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.Java:43)
    at Java.lang.reflect.Method.invoke(Method.Java:606)
    at org.sonar.runner.impl.BatchLauncher$1.delegateExecution(BatchLauncher.Java:87)
    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.codehaus.mojo.sonar.bootstrap.RunnerBootstraper.execute(RunnerBootstraper.Java:135)
    ... 22 more
15
Tunaki

SonarQube 5.1のインストール後に同じ問題が発生しました。アップデートセンターにアクセスしてください:

http:// your_domain:port/updatecenter/available

「SVN」を検索し、「インストール」をクリックします

https://docs.sonarqube.org/display/PLUG/SVN+Plugin

次のようなものが表示されます:

次のプラグインをインストールするには、SonarQubeを再起動する必要があります:sonar-scm-svn-plugin-1.0.jar

SonarQubeを再起動します。

8
vehovmar

以下のコマンドを使用して、svn関連の問題を無効にします

-Dsonar.scm.disabled=True

これはsvnを無効にします

38
Mahesh

この問題は2つの方法で解決できます。
1。 sonar.properties -Dsonar.scm.disabled = Trueを設定すると、これはsonarrunner.batソナー分析でのみ有効です。
2。他のタイプの分析を使用して行う場合、adminのデフォルトのadminでログインすると、admin/admin(username/password)となります。 http:// yourDomin:port/settings/index(eghttp: // localhost:9000/settings/index )次に、カテゴリでscmを選択し、scmセンサーをtrueに設定して無効にします。
3。または、ソナーにsvnプラグインを追加できます http:// your_domain:port/updatecenter/available admin(admin/admin)としてログインした後、使用可能なものを検索しますプラグインとsvnを選択してインストールします。

7
ramesh027

この問題が発生しました。ソナー分析を実行しているビルドマシンにSVNがアクティブにインストールされていないことが原因です。ソナーボックスが何をインストールしたかは関係ありません。 SVNのせいにする必要があるのはビルドエージェントです。

CentOSを使っていました。魔法は

Sudo yum install svn

最後のトリックは、ビルドマシンがチェックアウトにインストールしたバージョンと同じバージョンのSVNを使用していることを確認することでした。ビルドマシンがネイティブで別のバージョンを使用していた場合は、次のチェックアウトの前にも、ワークスペース全体をクリーンアップする必要がある場合があります。

最後に、SonarにもSVN資格情報が必要であることを忘れないでください!

1
Ashley Frieze

テストに使用しているのと同じように、SonarQubeプロセスに同じ環境変数があることを確認してください。

0
Telmah

Redar LinuxマシンにSonarQube 5.0.1をインストールしたばかりで、まったく同じ問題があります。

Scm statsプラグインを無効にする代わりに、svnクライアント(svnkit.x86_64)をインストールし、SCMをアクティブにしてビルドを正常に実行しました。だから私はWindowsでは、svnクライアントをインストールしてPATHに置くべきだと思います。

0
Minh-Triet LÊ