天天看点

【Teams】如何使用sonarqube(docker版)扫描dotnet core版本的Teams项目的代码质量

        作为码农,日常干得最多的事儿就是coding(小声:debugging),那完成功能后,一般流程我们需要code review(衡量代码质量的一种方式便是会议上sh*t的数量了)。那为了减少code review时被喷的次数,减小我们幼小心灵的创伤,我们最好提前消灭掉丑陋的代码。

        正好前两天阅读Teams的一款应用源代码的时候,想着能拿着它扫描一把,看会不会发现一些可以改进的地方,顺便介绍下我使用的方法和工具。

        环境准备(在Mac上操作,win上大家自行变通,玩法相通):

  1. dotnet core环境:.NET Core SDK 3.1.101
  2. visual studio code:1.44.0
  3. docker(基于docker运行sonarqube镜像):version 19.03.5, build 633a0ea(docker desktop version 2.1.0.5)
  4. java:version "13-ea" 2019-09-17

        以上便是需要的环境。接下来简单介绍下具体步骤(我们省略掉写代码的过程,直接分析代码),今天直接分析开源Teams项目lucky draw的源代码(https://github.com/Office365DevOps/lucky-draw-bot,自行克隆,如有兴趣,也可PR,欢迎大家推广使用这款Teams应用,自己用过,感觉很香)

  • 安装sonarqube的dotnet版本scanner,戳这里。确认安装成功。
    【Teams】如何使用sonarqube(docker版)扫描dotnet core版本的Teams项目的代码质量
  • docker拉取sonarqube镜像(默认latest tag就可以)
    【Teams】如何使用sonarqube(docker版)扫描dotnet core版本的Teams项目的代码质量
  • docker中运行sonarqube的镜像:
    【Teams】如何使用sonarqube(docker版)扫描dotnet core版本的Teams项目的代码质量
    网页中打开sonarqube的portal
    【Teams】如何使用sonarqube(docker版)扫描dotnet core版本的Teams项目的代码质量
  • 用户名密码都为admin,登入。
  • 【Teams】如何使用sonarqube(docker版)扫描dotnet core版本的Teams项目的代码质量
  • 点击右上角创建项目
    【Teams】如何使用sonarqube(docker版)扫描dotnet core版本的Teams项目的代码质量
  • 输入key和项目名称(这里就输入lucky-draw-bot)
    【Teams】如何使用sonarqube(docker版)扫描dotnet core版本的Teams项目的代码质量
  • 输入名称(init-token)生成token,用户后续sonarqube分析数据并上传到sonarqube的portal(localhost:8888)
    【Teams】如何使用sonarqube(docker版)扫描dotnet core版本的Teams项目的代码质量

生成token后,点击continue按钮,进入下一步,准备分析项目(大家忽略sonarqube的端口,我自己启了两个,大家玩的时候,用一个就好了),如下:

【Teams】如何使用sonarqube(docker版)扫描dotnet core版本的Teams项目的代码质量

当然这里是针对msbuild生成的脚本语句,对于我们的dotnetcore项目,使用我们第一步安装的dotnetcore版本的scanner,所以对应的语句应该依次为:

1)

dotnet-sonarscanner begin /k:"bot" /d:sonar.host.url="http://localhost:8888" /d:sonar.login="8587694913910d903290a98a75607f2e7bf1c642"
           

2) 

dotnet build
           

3) 

dotnet-sonarscanner end /d:sonar.login="8587694913910d903290a98a75607f2e7bf1c642"
           
  • run完以上语句后,刷新sonarqube的项目,则会出现对应的分析数据,包括code smells,test coverage(如果有的话),还有其他相关指标
    【Teams】如何使用sonarqube(docker版)扫描dotnet core版本的Teams项目的代码质量
    【Teams】如何使用sonarqube(docker版)扫描dotnet core版本的Teams项目的代码质量

    上面分析结果我们可以看出很多问题,及时修复。比如代码的复杂度也可以通过已有规则扫描出来(也可以自定义规则,自行某度),这样我们就可以在code review时少被diss,其实code review是大家一起审视代码,这里只是将表明显的问题提前暴露出来,及时fix,并不能完全代替code review。

    其实,通过sonarqube的scanner,会在根目录下生成一系列分析文件,也就是说,不用sonarqube也能看出来一系列warning,sonarqube的portal可以分析这些读起来不怎么友好的文件,再生成report/便于查看的形式,提高fix的效率。

    【Teams】如何使用sonarqube(docker版)扫描dotnet core版本的Teams项目的代码质量

总结:今天主要跟大家介绍这个扫描工具,日后大家如果开发Teams应用,也可以及时使用它来扫描代码质量,对日后迭代可以起到很重要的作用。后续还有什么工具可以帮助我们开发Teams应用,我也会分享出来。