面向云技术架构 - 痴者工良

  • 首页
  • 工良写的电子书
    • kubernetes 教程
    • 从 C# 入门 Kafka
    • 多线程和异步
    • 动态编程-反射、特性、AOP
    • 表达式树
  • 本站文章导航
  • 隐私政策
愿有人陪你颠沛流离
遇到能让你付出的事物或者人,都是一种运气。
能遇到,就该珍惜。或许你们最终没能在一起,但你会切实地感受到力量。
正因为这样,那段相遇才变得有价值,才没有辜负这世间的每一段相遇。
  1. 首页
  2. 计算机科学与软件工程
  3. 框架软件工具
  4. 正文

.NET Core 使用 Sonarqube 问题

2019年12月2日 3610点热度 3人点赞 2条评论
内容纲要

.NET Core 使用 Sonarqube 问题

运行 Sonarqube 的简单方法

docker run -d --name sonarqube -p 9000:9000 sonarqube

默认账号密码是 admim

登陆后创建项目和 token,直接按照提示选择 C#.NET。

.NET Core 项目

先运行一下命令

dotnet tool install --global dotnet-sonarscanner

.NET FX 项目

到这里下载最新版本的 工具

https://github.com/SonarSource/sonar-scanner-msbuild/releases

解压到英文目录,将目录路径复制,打开环境变量,点击 Path,添加目录。

进入 sonar 文件目录,文件如下

.
├── Newtonsoft.Json.dll
├── SonarQube.Analysis.xml
├── sonar-scanner-4.2.0.1873
│   ├── bin
│   ├── conf
│   └── lib
├── SonarScanner.MSBuild.Common.dll
├── SonarScanner.MSBuild.dll
├── SonarScanner.MSBuild.PostProcessor.dll
├── SonarScanner.MSBuild.PreProcessor.dll
├── SonarScanner.MSBuild.runtimeconfig.json
├── SonarScanner.MSBuild.Shim.dll
├── SonarScanner.MSBuild.Tasks.dll
└── SonarScanner.MSBuild.TFS.dll

如果是 .NET Core ,就使用 dotnet sonarscanner,如果 .NET Fx,就用
dotnet SonarScanner.MSBuild.dll后面带的参数一致。

执行一下命令登陆 Sonarqube

dotnet sonarscanner begin /k:"{项目名称}" /d:sonar.host.url="http://{ip地址}:9000" /d:sonar.login="{Token密钥}"
Using the .NET Core version of the Scanner for MSBuild
Pre-processing started.
Preparing working directories...
09:39:30.41  Updating build integration targets...
09:39:30.444  Fetching analysis configuration settings...
09:39:32.229  Provisioning analyzer assemblies for cs...
09:39:32.232  Installing required Roslyn analyzers...
09:39:33.903  Provisioning analyzer assemblies for vbnet...
09:39:33.904  Installing required Roslyn analyzers...
09:39:34.034  Pre-processing succeeded.

分析、编译项目

打开项目目录,执行

 dotnet build {解决方案.sln}
 或者
 dotnet build {项目.csproj}

如果后面的代码报错

No analysable projects were found. SonarQube analysis will not be performed. Check the build summary report for details.
Generation of the sonar-properties file failed. Unable to complete SonarQube analysis.
13:04:37.856  Post-processing failed. Exit code: 1

就使用

 dotnet build 

将分析结果推送到 Sonarqube

在当前项目目录下执行

dotnet sonarscanner end /d:sonar.login="{Token}"

或者

dotnet {安装目录\SonarScanner.MSBuild.dll} end /d:sonar.login="{Token}"

如果出现

SonarScanner for MSBuild 4.3.1
Using the .NET Core version of the Scanner for MSBuild
Default properties file was found at C:\Users\GW\.dotnet\tools\.store\dotnet-sonarscanner\4.3.1\dotnet-sonarscanner\4.3.1\tools\netcoreapp2.1\any\SonarQube.Analysis.xml
Loading analysis properties from C:\Users\GW\.dotnet\tools\.store\dotnet-sonarscanner\4.3.1\dotnet-sonarscanner\4.3.1\tools\netcoreapp2.1\any\SonarQube.Analysis.xml
Post-processing started.
10:01:01.135  SonarQube analysis could not be completed because the analysis configuration file could not be found: H:\MQTT\Gw.MqttService\GwMqttClient.STD\.sonarqube\conf\SonarQubeAnalysisConfig.xml.
10:01:01.138  Post-processing failed. Exit code: 1

以上三个步骤的命令都需要在下面执行。

如果根据原文档和 Sonarqube 的提示去做,可能会出现

Pre-processing started.
Preparing working directories...
09:36:45.742  Updating build integration targets...
09:36:45.769  Fetching analysis configuration settings...
09:36:47.863  Failed to request and parse 'http://localhost:9000/api/server/version': 由于目标计算机积极拒绝,无法连接。 由于目标计算机积极拒绝,无法连接。

Unhandled Exception: System.Net.WebException: 由于目标计算机积极拒绝,无法连接。 由于目标计算机积极拒绝,无法连接。 ---> System.Net.Http.HttpRequestException: 由于目标计算机积极拒绝,无法连接。 ---> System.Net.Sockets.SocketException: 由于 目标计算机积极拒绝,无法连接。
   at System.Net.Http.ConnectHelper.ConnectAsync(String host, Int32 port, CancellationToken cancellationToken)
   --- End of inner exception stack trace ---
   at System.Net.Http.ConnectHelper.ConnectAsync(String host, Int32 port, CancellationToken cancellationToken)
   at System.Threading.Tasks.ValueTask`1.get_Result()
   at System.Net.Http.HttpConnectionPool.CreateConnectionAsync(HttpRequestMessage request, CancellationToken cancellationToken)
   at System.Threading.Tasks.ValueTask`1.get_Result()
   at System.Net.Http.HttpConnectionPool.WaitForCreatedConnectionAsync(ValueTask`1 creationTask)
   at System.Threading.Tasks.ValueTask`1.get_Result()
   at System.Net.Http.HttpConnectionPool.SendWithRetryAsync(HttpRequestMessage request, Boolean doRequestAuth, CancellationToken cancellationToken)
   at System.Net.Http.RedirectHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
   at System.Net.Http.HttpClient.FinishSendAsyncUnbuffered(Task`1 sendTask, HttpRequestMessage request, CancellationTokenSource cts, Boolean disposeCts)
   at System.Net.HttpWebRequest.SendRequest()
   at System.Net.HttpWebRequest.GetResponse()
   --- End of inner exception stack trace ---
   at System.Net.HttpWebRequest.GetResponse()
   at System.Net.WebClient.GetWebResponse(WebRequest request)
   at System.Net.WebClient.DownloadBits(WebRequest request, Stream writeStream)
   at System.Net.WebClient.DownloadDataInternal(Uri address, WebRequest& request)
   at System.Net.WebClient.DownloadString(Uri address)
   at SonarScanner.MSBuild.PreProcessor.SonarWebService.<>c__DisplayClass15_0.<DownloadServerVersion>b__0()
   at SonarScanner.MSBuild.PreProcessor.SonarWebService.DoLogExceptions[T](Func1 op, String url, Action1 onError)
   at SonarScanner.MSBuild.PreProcessor.SonarWebService.DownloadServerVersion()
   at SonarScanner.MSBuild.PreProcessor.SonarWebService.GetServerVersion()
   at SonarScanner.MSBuild.PreProcessor.SonarWebService.GetProperties(String projectKey, String projectBranch)
   at SonarScanner.MSBuild.PreProcessor.TeamBuildPreProcessor.FetchArgumentsAndRulesets(ISonarQubeServer server, ProcessedArgs args, TeamBuildSettings settings, IDictionary2& serverSettings, List1& analyzersSettings)
   at SonarScanner.MSBuild.PreProcessor.TeamBuildPreProcessor.DoExecute(ProcessedArgs localSettings)
   at SonarScanner.MSBuild.BootstrapperClass.PreProcess()
   at SonarScanner.MSBuild.BootstrapperClass.Execute()
   at SonarScanner.MSBuild.Program.Execute(String[] args, ILogger logger)
   at SonarScanner.MSBuild.Program.Main(String[] args)
本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可
标签: core net sonarqube 使用 问题
最后更新:2021年2月21日

痴者工良

高级程序员劝退师

点赞
< 上一篇
下一篇 >

文章评论

  • 痴者工良

    首先要在 项目下执行 `dotnet sonarscanner begin /k:"{项目名称}" /d:sonar.host.url="http://{ip地址}:9000" /d:sonar.login="{Token密钥}"`,才能创建 .sonarqube目录

    2020年2月11日
    回复
  • razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
    取消回复

    文章目录
    • 运行 Sonarqube 的简单方法
    • 分析、编译项目
    • 将分析结果推送到 Sonarqube

    COPYRIGHT © 2022 whuanle.cn. ALL RIGHTS RESERVED.

    Theme Kratos Made By Seaton Jiang

    粤ICP备18051778号

    粤公网安备 44030902003257号