0

使用新安装的 SonarQube 5.6,我的 ANT 扫描仪svn: E170001: Authentication required for 'svn+ssh://my-server'在获取作者(责备)数据时会抱怨。

"C:\Program Files\Java\jdk1.8.0_51\bin\java" ... build.sonar.xml
[...shortened]
java.lang.IllegalStateException: Error when executing blame for file /path/to/foo.java
    at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:116)
    at org.apache.tools.ant.Task.perform(Task.java:348)
    at org.apache.tools.ant.Target.execute(Target.java:435)
    [...shortened]
Caused by: java.lang.IllegalStateException: Error when executing blame for file /path/to/foo.java
    at org.sonar.plugins.scm.svn.SvnBlameCommand.blame(SvnBlameCommand.java:102)
    [...shortened]
Caused by: org.tmatesoft.svn.core.SVNAuthenticationException: svn: E170001: Authentication required for 'svn+ssh://my-server'
    at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.authenticationFailed(SVNErrorManager.java:47)
    at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.authenticationFailed(SVNErrorManager.java:41)
    at org.tmatesoft.svn.core.internal.wc.DefaultSVNAuthenticationManager.getFirstAuthentication(DefaultSVNAuthenticationManager.java:203)

SonarQube-5.6 安装似乎很好,我在第一次扫描之前以管理员身份安装了 Java/JSON 插件。

  • 我的代码显然托管在svn+ssh://my-server/path/to/root. 那里,svnadmin --versionVersion 1.5.7 (r36142)
  • IP my-serverC:\Windows\System32\drivers\etc\hosts(我通过隧道联系服务器,我的服务器没有 DNS 条目)
  • 名为的腻子会话my-server连接成功。
  • svn up通过 TortoiseSVN v1.9.4 UI 和命令行以及 Intellij IDEA 可以正常工作。
    • 我已经缓存了我的 SVN 凭据。没有密码提示时svn up

我用

  • win10 x64
  • JDK jdk1.8.0_51(运行 ANT/build/sonarqube-ant-task-2.4.1.jar)
  • JRE 版本“1.8.0_91”(运行 SonarQube)

我已经清理C:\Users\johndoe\AppData\Roaming\Subversion并租用了密码。

任何想法如何让 tmatesoft 的 SVNKit 使用我缓存的身份验证数据?非常感谢!

4

1 回答 1

0

传递-Dsvnkit.ssh2.key=path/to/private/key指向 OpenSSH 格式的私钥文件有帮助。我将它作为 jvm arg 传递给运行包含<sonar>目标的 build.xml 的 ANT。

通过单独使用 SVNKit 1.8.12 并启用日志记录,我发现了有关私钥文件格式的投诉。

现在,我的扫描仪第一次成功运行。

值得注意的是,现在不传递正确的属性值不会破坏扫描,只是对缺少责备数据的小抱怨。但我不会对此进行调查。

于 2016-06-23T14:23:01.507 回答