我正在尝试为 MSBuild 安装 SonarQube Scanner

I am trying to install SonarQube Scanner for MSBuild

我已成功设置 SonarQube 和 C# 插件。我 运行 让 Sonarqube 扫描仪工作时遇到了麻烦。

我有以下 SonarQube.Analysis.xml

<SonarQubeAnalysisProperties  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.sonarsource.com/msbuild/integration/2015/1">

  <Property Name="sonar.host.url">sonar.dnbad.nl</Property>

  <Property Name="sonar.login">...</Property>
  <Property Name="sonar.password">....</Property>

  <Property Name="sonar.verbose">true</Property>

  <!-- Required only for versions of SonarQube prior to 5.2 -->
  <!--
  <Property Name="sonar.jdbc.url">jdbc:jtds:sqlserver://mySqlServer/sonar;instance=SQLEXPRESS;SelectMethod=Cursor</Property>
  <Property Name="sonar.jdbc.username">sonar</Property>
  <Property Name="sonar.jdbc.password">sonar</Property>
  -->

</SonarQubeAnalysisProperties>

当我 运行 SonarSource-sonar-examples-3e5f679 中的示例时,我得到以下输出:

SonarQube Scanner for MSBuild 2.0
Default properties file was found at D:\ServApps\SonarQubeScannerForMSBuild\SonarQube.Analysis.xml
Loading analysis properties from D:\ServApps\SonarQubeScannerForMSBuild\SonarQube.Analysis.xml
sonar.verbose=true was specified - setting the log verbosity to 'Debug'
Pre-processing started.
Using environment variables to determine the download directory...
Preparing working directories...
Removing the existing directory: E:\test\projects\languages\csharp\ConsoleApplication1\.sonarqube
Creating directory: E:\test\projects\languages\csharp\ConsoleApplication1\.sonarqube
Creating directory: E:\test\projects\languages\csharp\ConsoleApplication1\.sonarqube\bin
SonarQube server url: sonar.dnbad.nl
Checking for updates...
Downloading SonarQube.MSBuild.Runner.Implementation.zip from sonar.dnbad.nl/static/csharp/SonarQube.MSBuild.Runner.Implementation.zip to E:\test\projects\languages\csharp\ConsoleApplication1\.sonarqube\bin\SonarQube.MSBuild.Runner.Implementation.zip

Unhandled Exception: System.Net.WebException: Could not find a part of the path 'E:\test\projects\languages\csharp\ConsoleApplication1\sonar.dnbad.nl\static\csharp\SonarQube.MSBuild.Runner.Implementation.zip'. ---> System.Net.WebException: Could not find a part of the path 'E:\test\projects\languages\csharp\ConsoleApplication1\sonar.dnbad.nl\static\csharp\SonarQube.MSBuild.Runner.Implementation.zip'. ---> System.IO.DirectoryNotFoundException: Could not find a part of the path 'E:\test\projects\languages\csharp\ConsoleApplication1\sonar.dnbad.nl\static\csharp\SonarQube.MSBuild.Runner.Implementation.zip'.
   at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
   at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
   at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, String msgPath, Boolean bFromProxy)
   at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, Boolean useAsync)
   at System.Net.FileWebStream..ctor(FileWebRequest request, String path, FileMode mode, FileAccess access, FileShare sharing, Int32 length, Boolean async)
   at System.Net.FileWebResponse..ctor(FileWebRequest request, Uri uri, FileAccess access, Boolean asyncHint)
   --- End of inner exception stack trace ---
   at System.Net.FileWebResponse..ctor(FileWebRequest request, Uri uri, FileAccess access, Boolean asyncHint)
   at System.Net.FileWebRequest.GetResponseCallback(Object state)
   --- End of inner exception stack trace ---
   at System.Net.WebClient.DownloadFile(Uri address, String fileName)
   at System.Net.WebClient.DownloadFile(String address, String fileName)
   at SonarQube.Bootstrapper.BuildAgentUpdater.TryUpdate(String hostUrl, String targetDir, ILogger logger)
   at SonarQube.Bootstrapper.Program.PreProcess(IBuildAgentUpdater updater, IBootstrapperSettings settings, ILogger logger)
   at SonarQube.Bootstrapper.Program.Execute(String[] args, IBuildAgentUpdater updater, ILogger logger)
   at SonarQube.Bootstrapper.Program.Main(String[] args)

看起来 运行ner 正在尝试创建路径,但它在路径中包含声纳 url,而不是目录 .sonarcube\bin

有什么建议吗?

您将主机名而不是 URL 传递给 sonar.host.url,因此 the scheme 的使用不明确。您应该完全定义 URL 而不是:

<Property Name="sonar.host.url">http://sonar.dnbad.nl</Property>