使用SonarCloud对.NET Core项目进行静态代码分析

本文将介绍如何使用SonarCloud进行.NET Core项目的静态代码分析。SonarCloud是SonarQube提供的基于云的版本,特别针对于开源项目是免费的。

    首先,在sonarcloud.io创建一个账号,你可以使用Github/BitBucket/Microsoft Live账户进行注册,成功后将看到控制面板如下:

640?wx_fmt=png&wxfrom=5&wx_lazy=1

 

    接下来你需要创建一个组织。
640?wx_fmt=png&wxfrom=5&wx_lazy=1

 

    有了组织,就可以创建一个分析项目了。点击“Analyse New Project”按钮,根据向导填写必要的信息,生成一个用于运行代码分析的授权令牌,注意要安全地保存它。在下一步选择目标语言,设置好项目的代号(Project Key),点击完成后,SonarCloud会显示 一系列使用MSBuild分析运行的步骤。

640?wx_fmt=png640?wx_fmt=png640?wx_fmt=png640?wx_fmt=png

 

    完成上述步骤后,你需要下载sonar scanner for MS Build,.NET Core的版本在这里。

    此时我们需要准备一个.NET Core的应用。

  1. 首先使用"dotnet new mvc"命令创建一个ASP.NET Core MVC项目。

  2. 使用“dotnet new sln”创建sln文件。

  3. 使用“dotnet sln add HelloMVC.csproj”将MVC项目添加至sln文件。

    使用“dotnet "D:\sonar-scanner-msbuild-4.2.0.1214-netcoreapp2.0\SonarScanner.MSBuild.dll" begin /k:"HelloMVC" /d:sonar.organization="dotnetthoughts" /d:sonar.host.url="https://sonarcloud.io" /d:sonar.login="73fd8bc705804e8688b797f0e70dc6d70aa2d9c3"启动scanner。

    如果一切正常,你将看到如下的运行界面:

640?wx_fmt=png

 

    使用“dotnet build”构建应用时,能看到如下警告信息:

640?wx_fmt=png

 

    在最后运行“dotnet "D:\sonar-scanner-msbuild-4.2.0.1214-netcoreapp2.0\SonarScanner.MSBuild.dll" end /d:sonar.login="73fd8bc705804e8688b797f0e70dc6d70aa2d9c3"(注意命令中的end,和前一个命令中的begin相对应),结束代码扫描执行,并将分析结果上传到SonarCloud。再次打开SonarCloud的控制面板,点击前面创建好的项目,就能看到如下的分析结果。

640?wx_fmt=png

 

 

    如果你注意到有15个bug这样的显示,查看明细发现几乎都是JavaScript库的问题,比如Bootstrap或者JQuery,理想状态下我们是不需要分析这些脚本库的,因此我们可以这样执行SonarQube,以过滤掉不需要的文件:“dotnet "D:\sonar-scanner-msbuild-4.2.0.1214-netcoreapp2.0\SonarScanner.MSBuild.dll" begin /k:"HelloMVC" /d:sonar.organization="dotnetthoughts" /d:sonar.host.url="https://sonarcloud.io" /d:sonar.login="73fd8bc705804e8688b797f0e70dc6d70aa2d9c3" /d:sonar.exclusions="/wwwroot/lib/**"。

    再次使用“dotnet build”重新构建项目并完成扫描,项目控制面板会更新成如下所示:

640?wx_fmt=png

 

    是不是很轻松?老板再也不用喷我不管代码质量了。 :)

 

(原文:Static Code Analysis of .NET Core Projects with SonarCloud)

原文地址: http://www.cnblogs.com/BeanHsiang/p/8998461.html


.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com

640?wx_fmt=jpeg

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/321378.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

P6477-[NOI Online #2 提高组]子序列问题【线段树】

正题 题目链接:https://www.luogu.com.cn/problem/P6477 话说这是luogu的冥间数据 题目大意 nnn个数的序列,f(l,r)f(l,r)f(l,r)表示l∼rl\sim rl∼r有多少个不同的数字。 求∑l1n∑rln(f(l,r))2\sum_{l1}^n\sum_{rl}^n(f(l,r))^2l1∑n​rl∑n​(f(l,r))2 解题思路…

操作系统复习笔记 06 CPU Scheduling CPU调度

CPU的三级调度:1.高级调度(Long-term):作业调度,从外存进内存2.低级调度(Short-term):进程调度,分配处理机3.中级调度(Medium-term):对换通过多道程序设计得到CPU的最高使用率。CPU-IO脉冲周期:…

【动态规划】 石子合并问题(环形) (ssl 1597)

石子合并问题石子合并问题石子合并问题 Description 在一个圆形操场的四周摆放着n 堆石子。现要将石子有次序地合并成一堆。规定每次只能选相邻的2 堆石子合并成新的一堆,并将新的一堆石子数记为该次合并的得分。试设计一个算法,计算出将n堆石子合并成…

P6102-[EER2]谔运算【位运算】

正题 题目链接:https://www.luogu.com.cn/problem/P6102?contestId26472 题目大意 nnn个数的序列aaa,求 ∑i1n∑j1n∑k1n∑l1n(aioraj)xor(akandal)\sum_{i1}^n\sum_{j1}^n\sum_{k1}^n\sum_{l1}^n(a_i\ or\ a_j)\ xor\ (a_k\ and\ a_l)i1∑n​j1∑n​k1∑n​l1∑n…

操作系统复习笔记 07 Process Synchronization 进程同步

背景:1.对共享数据的并发访问可能导致数据的不一致性。2.要保持数据的一致性,就需要一种保证并发进程正确执行顺序机制。3.解决有界缓冲区问题的共享内存方法在count上存在竞争条件。4.进程间的制约关系:——间接制约:有些资源需要…

【动态规划】拔河比赛 (ssl 1638)

拔河比赛拔河比赛拔河比赛 Description 一个学校举行拔河比赛,所有的人被分成了两组,每个人必须(且只能够)在其中的一组,要求两个组的人数相差不能超过1,且两个组内的所有人体重加起来尽可能地接近。 In…

特长生考试相关

水一手游记 一大早起来像个那啥一样在校训石前等(旁边一群看猴子一样) 然后车上点个人就去公费旅游(半个小时车程,甚至没有饭吃) 然后到那边量完体温见了一下熟人就开始了 T1高精度,历年最难T1还要判负数然…

Build 2018,给你带来全新的开发者体验, .NET Core 3.0带来桌面支持

Build 2018 主旨演讲的主题是 Azure 云和 AI、物联网、AR等技术,以及开发者相关内容的宣布。在今天的Build大会上,微软宣布目前已有超过7亿台设备运行Windows 10系统。去年这个数字为5亿。Office 365目前每个月有1.35亿活跃的商业用户,去年为…

【动态规划】大厅安排 (ssl 1212)

大厅安排大厅安排大厅安排 Description 有一个演讲大厅需要GEORGE管理,演讲者们事先定好了需要演讲的起始时间和中止时间。GEORGE想让演讲大厅得到最大可能的使用。我们要接受一些预定而拒绝其他的预定,目标自然是使演讲者使用大厅的时间最长。为方便起…

《你必须掌握的Entity Framework 6.x与Core 2.0》书籍出版

前言到目前为止写过刚好两百来篇博客,看过我博客的读者应该大概知道我每一篇博客都沿袭着一贯的套路,从前言到话题最终到总结,本文依然是一如既往的套路,但是不是介绍技术,也可说是介绍技术,不过是介绍书中…

Loj#2035-[SDOI2016]征途【斜率优化】

正题 题目链接:https://loj.ac/problem/2035 题目大意 nnn个数字分成mmm段,要求方差最小。 解题思路 首先方差的公式∑i1n(xi−∣x∣)2\sum_{i1}^n(x_i-|x|)^2i1∑n​(xi​−∣x∣)2 其中∣x∣|x|∣x∣是不变的,定义w∣x∣w|x|w∣x∣ 设fi,jf_{i,j}fi,…

可持久化线段树小结

学了可持久化线段树有一段时间了,一直没拿出时间来整理一下,刚好今天有空,就写一写。 可持久化的含义是对于每次修改操作都将产生一个新版本的线段树,并且旧版本的线段树仍然保留可以随时访问。 基于这个目的,我们可…

【动态规划】 数字游戏 (ssl 1653)

数字游戏 题目大意: 有n个数,分别为a[1] (序号为1),a[2] (序号为2),a[3]…a[n],让你选m个数,每选一个数,就要减去已选个数(不算当前数)*b[i] (i为当前值的序号),所选数的最大值(要减去相应的b) 原题 小…

.NET Core玩转机器学习

ML.NET 专门为.NET开发者提供了一套跨平台的开源的机器学习框架。ML.NET支持.NET开发者不需要过度专业的机器学习开发经验,就能轻松地训练自己的模型,并且嵌入到自己的应用中。一切尽在.NET之中。ML.NET早期是由Microsoft Research开发,近十年…

P2900-[USACO08MAR]Land AcquisitionG【斜率优化】

正题 题目链接:https://www.luogu.com.cn/problem/P2900 题目大意 nnn块hi∗wih_i*w_ihi​∗wi​的土地,购买一组土地需要max(h)∗max(w)max(h)*max(w)max(h)∗max(w),求购买所有土地的最小费用。 解题思路 首先如果hhh和www都小于另一块土地显然是不需…

二元运算 FFT+分治

题目: 4836: [Lydsy2017年4月月赛]二元运算 Time Limit: 8 Sec Memory Limit: 128 MB Submit: 486 Solved: 162 [Submit][Status][Discuss] Description 定义二元运算 opt 满足 现在给定一个长为 n 的数列 a 和一个长为 m 的数列 b ,接下来有 q 次询问。…

【记忆化搜索】【线性化DP】滑雪 (ssl 1202/luogu 1434/pku 1088)

滑雪滑雪滑雪 ssl 1202 luogu 1434 pku 1088 题目大意: 有一个N*M的矩阵,每个位置都有一个数,可以从大的数走向小的数,问可走的路最长是多少 原题 Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激。可是为了获…

POJ2942-Knights of the Round Table【tarjan】

正题 题目链接:http://poj.org/problem?id2942 题目大意 有nnn个骑士,有mmm组讨厌关系,要求讨厌的不能坐相邻,而且要求每次会有都有奇数个人,求有多少个骑士一组会议都不能参加。 解题思路 首先构一个补图,然后求有…

UVA4671 K-neighbor substrings FFT+字符串hash

题解: 将字符串A、B中的a和b分别以1和-1表示,对字符串B进行反转。 将A和B看成多项式,求卷积,这样的话从结果区间的[lenB−1,lenA)[lenB−1,lenA)中的每一个点的值valval,(lenB−val)/2(lenB−val)/2代表当前位置的字串…

微软Build 2018展示Visual Studio功能:跨系统云编程

5 月 8 日凌晨消息,微软 Build 2018 开发者大会在今天正式来开帷幕。很明显整场发布会被分为了上下两个部分,上半场如果说是聊一些技术实现和愿景,那下半场就应该说是实战说明了。跨平台云端编程了解下微软在现场展示了 Visual Studio&#x…