首页 > 编程语言 >SonarQube扫描C#代码

SonarQube扫描C#代码

时间:2023-06-11 10:56:08浏览次数:64  
标签:MSBuild C# SonarQube 代码 扫描 SonarLint sonar

目录


SonarQube官网

SonarQube是一款静态代码质量分析工具,支持Java、Python、PHP、JavaScript、CSS等25种以上的语言,而且能够集成在IDE、Jenkins、Git等服务中,方便随时查看代码质量分析报告。

用SonarQube实现什么功能?

用SonarQube扫描C#代码并上传扫描结果到服务器。

SonarLint for Visual Studio 是什么?

SonarLint是一个IDE扩展,可以帮助您在编写代码时检测和修复质量问题。就像拼写检查器一样,SonarLint可以在提交代码之前修复缺陷。你可以直接从VS Marketplace获得它,然后它会在你编写代码时检测新的bug和质量问题(c#, VB)。. NET、JavaScript、TypeScript、C和c++)。

SonarLint官网

SonarLint for Visual Studio 2022

Git:sonarlint-visualstudio

sonarlint-visualstudio/wiki

注意:SonarLint for Visual Studio插件可以检测代码的问题,但是无法把检测报告上传服务器。

使用SonarQube扫描检测C#/.NET代码并上传到服务器

Quickstart: Analyzing .NET projects with SonarQube, MSBuild or Visual Studio Online, and third-party analyzers (StyleCop, ReSharper)

Git:sonar-scanner-msbuild

一、配置MSBuild

如下图所示,在命令行中使用 msbuild -ver 查看MSBuild的版本号,如果无法运行此命令则需要在环境变量中添加MSBuild的Bin目录。

image-20230608134336744

如下图所示,找到MSBuild的Bin目录,并添加到环境变量中。

image-20230608134518625

确保此步骤中运行

MSBuild -ver

能够正确运行并显示相应的版本信息

二、下载安装 SonarScanner for MSBuild

1、从 https://github.com/SonarSource/sonar-scanner-msbuild/releases 地址下载安装sonar-scanner-msbuild程序,解压后在环境变量中配置此程序的路径。

2、打开sonar-scanner-msbuild程序目录,如下图所示,配置sonar.host.url,sonar.login,sonar.password信息。

image-20230608140106192

3、在命令行中输入 SonarScanner.MSBuild -h 查看相应的信息,如下图所示

image-20230608135545869

确保此步骤中运行

SonarScanner.MSBuild -h

能够正确运行并显示相应信息。

至此准备工作完成,开始生成代码检测信息并上传检测报告到服务器

三、使用SonarQube分析C#代码并上传服务器

1、如下图所示进入程序目录右键菜单并选择在终端中打开

image-20230608140538252

2、如下图所示,运行

SonarScanner.MSBuild.exe begin /k:"WindowsFormsApp1" /n:"WindowsFormsApp1" /v:"1.0"

命令,出现成功标记后会在程序目录生成 .sonarqube 文件夹。
image-20230608140954207

/key(简写k):对应projectKey即项目的唯一代码,如两套源代码使用同一个projectKey那扫描的结果将混在一起,所以一个项目需要有一个单独的projectKey

/name(简写n):对应projectName即项目的名称,为项目的一个显示的名称,建立使用完整的项目名称

/version(简写v):对应projectVersion即项目的版本,项目在不同的时期版本也是不一样的,如果方便,可以在sonarQube的服务器中查看到不同的版本代码其中问题的变化

3、通过MSBuild编译项目

输入 MSBuild.exe /t:Rebuild /p:Configuration=Release 编译项目

image-20230608141713703

MSBuild命令介绍

命令 含义
MSBuild -t:Rebuild 默认为Debug模式
MSBuild -t:Rebuild -p:Configuration=Release 指定编译模式为Release
MSBuild MyApp.sln -t:Rebuild -p:Configuration=Release 指定.sln解决方案和编译模式Release

编译完成后出现如下提示
image-20230608142525809

4、上传扫描结果到服务器

运行
SonarScanner.MSBuild.exe end

命令,如下图所示

image-20230608143055432

命令运行完成后如下图所示

image-20230608143137680

5、至此扫描操作完成,扫描结果已上传到服务器可以到服务器进行查看。

Sonar系列

相关参考

标签:MSBuild,C#,SonarQube,代码,扫描,SonarLint,sonar
From: https://www.cnblogs.com/lanwah/p/17472621.html

相关文章

  • odoo context上下文用法总结
    环境odoo-14.0.post20221212.tarcontext用法总结获取上下文>>>self.env.context#返回字典数据,等价于self._context{'lang':'en_US','tz':'Europe/Brussels'}>>>self._context{'lang':'en_US',&......
  • Odoo 通过Javascript调用模型中自定义方法
    实践环境Odoo14.0-20221212(CommunityEdition)代码实现在js脚本函数中调用模型中自定义方法:this._rpc({model:'demo.wizard',//模型名称,即模型类定义中_name的值method:'action_select_records_via_checkbox',//模型中自定义名称args:['arg_value......
  • odoo16弹出对话框中显示SearchPanel
    在odoo中,有些数据模型的Search视图可能会定义关于SearchPanel的部分,但这部分定义不会在弹出对话框中显示。如员工的list视图显示如下: 但如果我们在一个挑选员工的弹出对话框中,显示是这样子的。 这样如果员工较多,我们还要进一步输入搜索条件来进行过虑,不太方便操作。那如果......
  • CryptoJS 单文件
      (function(f){if(typeofexports==="object"&&typeofmodule!=="undefined"){module.exports=f()}elseif(typeofdefine==="function"&&define.amd){define([],f)}else{varg;if(typeofwindow!=="undefined"){g=......
  • 一款能“干掉” ChatGPT 的应用「GitHub 热点速览」
    据说有了它,ChatGPT就可以靠边站了。因为Auto-GPT能更加主动地完成你给他的指定任务,不用做更多的人为干涉,它的推理能力比ChatGPT更强,有人用它解放双手做了个React网站。当然除了升级的Auto-GPT之外,还有DeepSpeed,它能极大地降低训练成本。这两个项目可是本周的明星项目,一个......
  • sb+activiti7实例<二>20230424
    一、版本问题原Activiti的TijsRademakers团队去开发Flowable框架。现Activiti7是Salaboy团队开发的,内核使用的还是Activiti6,扩展了云化。Activiti5、Activiti6代码目前由Salaboy团队代为维护,目前官宣已经暂停维护  Activiti:Activiti在目前来看有点不思进取,核心功能和内核的优......
  • 如何使用https://work.weixin.qq.com/ca/xxxxx来跳转企业微添加好友?
    工作微信是一款由腾讯公司开发和提供的企业级通信和协作平台。它是基于腾讯QQ和微信的技术基础,专为企业内部通信和协作需求而设计的。工作微信的来源可以追溯到腾讯的战略发展和市场需求。腾讯在观察到企业内部通信和协作的需求日益增长后,决定开发一款专门针对企业用户的通信平台。......
  • VS下TS前端与C#的WebApi后端配合实例
    如题。1、新建WebApi默认解决方案WebApi使用.netcore下框架默认的例子(WeatherForecast)以下代码为自动生成publicclassWeatherForecast{publicDateOnlyDate{get;set;}publicintTemperatureC{get;set;}publicintTemperatur......
  • Spring Cloud Netflix Eureka学习
    SpringCloudNetflixEureka传统的服务治理通讯协议XML-RPC->XML方法描述、方法参数->WSDL(WebServices定义语言)WebServices->SOAP(HTTP、SMTP)->文本协议(头部分、体部分)REST->通常是JSON/XML(Schema:类型、结构)->文本协议(HTTPHeader、Body)W3CSchema:xsd:string原......
  • WGLCOUD简述 - 远程实现重启和关机windows
    WGCLOUD有个功能模块叫做下发指令,可以将关机或重启的指令下发给多个主机执行,使用起来非常简单下发指令同时支持windows主机和Linux主机,其他主机也可以如下,只要选择需要执行指令的windows主机,然后填写指令shutdown-s-t60,再选择执行时间就可以了这个指令标识1分钟后进行关机等执行......