为了账号安全,请及时绑定邮箱和手机立即绑定

SonarQube 搭建代码质量管理平台(二)

标签:
JavaScript

通过 SonarQube 搭建代码质量管理平台(一) 的介绍,如果每次都需要手动执行 sonar-scanner ,想想也是醉了,所以我们需要进一步完善 SonarQube 进行自动化代码分析。

从官方文档的 Scanners 部分可以看出,Scanner 支持 MSBuild、Maven、Gradle、Ant、Jenkins 等。本文将介绍使用 Jenkins 进行自动化代码分析, 测试项目的代码基于 .NET 开发,所以会用到 MSBuild 相关命令。

安装 Jenkins

根据操作系统 下载 Jenkins,我使用的是 Windows ,直接都下一步就可以了。

Windows 环境下 Jenkins 安装后默认登录身份是 “本地系统”,会无法访问,所以需要修改登录身份,我这里使用的是账户方式

webp

Jenkins 登录身份

启动成功后访问  http://localhost:8080/

Jenkins 配置 Github

  1. 在 Github 生成 Personal access tokens,设置 token 相关权限

    webp

    access token


    webp

    access token scope

  2. Jenkins 配置 GitHub Server

    Jenkins  安装后默认已包含 GitHub,在 “系统管理” => “系统设置” 中找到 Github,然后在 Credentials 处添加全局凭据,类型选 Secret text,Secret 处输入上一步生成的 access token

    webp

    GitHub Server

    webp

    Secret text

添加完成后可点击 Test connection 进行测试

如果使用的是 Gitlab,需要在 Jenkins 中安装 Gitlab 插件,全局凭据添加 GitLab API token,token 使用 Gitlab Account 下的 Private token, 其他配置基本类似

Jenkins 配置 SonarQube

  1. 在 SonarQube 中生成  Server authentication token

    登录 SonarQube 后,在 “My Account” => “Securiy” 中生成 toekn


    webp

    SonarQube token


    重新进入这个页面之前生成的 token 就看不到的,只能看到一次,我呵呵


  2. 在 Jenkins 的管理插件中安装 SonarQube Scanner 插件

  3. 配置 SonarQube Sever,这部分和配置 GitHub Server 类似,在 “系统管理” => “系统设置” 中找到 SonarQube servers
    Name:随意;
    Server URL:为启动的 SonarQube 服务地址,我这里使用本地启动的默认地址 http://localhost:9000
    Server authentication token: 输入之前生成的 token;

    webp

    SonarQube server

  4. 配置 SonarScanner for MSBuild

    在 “系统管理” => “全局工具配置” 找到 SonarScanner for MSBuild(
    测试项目是基于 .NET),官方提供了 .NET Framework 和 .NET Core 两个版本,我们可以先都加上,之后根据实际项目选择使用哪个。有两中方式配置 MSBUILD_SQ_SCANNER_HOME,可以选择自动安装或手动配置,手动配置需要单独下载,我使用的是手动配置方式

    webp

    SonarScanner for MSBuild

Jenkins 任务配置

上面是 Jenkins 的一些全局配置,下面需要对单个任务进行配置。新建一个 “构建一个自由风格的软件项目” 类型的任务 “Test”

配置项目的仓库地址,这个项目就是要进行代码分析的项目,在 Credentials 处添加凭据,这里添加一个用户名密码类型的凭据(其他类型的也可以,能访问这个仓库即可)。在添加凭据后,会自动检测是否有效,如果无效会直接出现错误提示

webp

Task Config

webp

Username with password

在 “构建” 中增加构建步骤:

webp

Build steps

  1. SonarScanner for MSBuild - Begin Analysis

    SonarScanner for MSBuild:选择基于 .NET Framework,因为 Test 项目是基于 .NET Framework;
    Project key: 在 SoanrQube 中的项目 key;
    Project name:在 SoanrQube 显示的项目名称,如果不填,则显示 Project key;
    Project version:版本号;
    Additional arguments:其他参数,比如可以设置只检测某种语言(/d:sonar.language=cs)、排除哪些文件(夹) 等,参考

  2. 执行 Windows 批处理命令

    先通过 nuget restore(如果没有安装 nuget 命令的需要提前安装) 还原依赖的 Nuget 包,然后使用 MSBuild 批处理命令重新生成项目。这一步 Build 可能会出现各种奇葩的问题,主要就是少了一些依赖包,建议在安装 Jenkins 的机器安装上 VS,然后将 MSBuild 加入环境变量,我的机器添加了两个路径:

    C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\15.0\BinC:\Program Files (x86)\NuGet
  3. SonarScanner for MSBuild - End Analysis

配置完成后保存,然后点击 “立即构建” 试试效果,构建成功后我们将通过 SonarQube UI 看到对 Test 项目的分析结果

webp

Analysis result

这就实现了将 Jenkins 与 SonarQube 关联起来,代码构建完成后会把结果发送到 SonarQube 中,我们还可以根据需要在 Jenkins 任务中设置构建执行时间,比如每天早上9点执行一次

webp

Trigger time

SonarQube 中有 Webhook 的功能,当接收到一次提交,可以将这次的分析结果发送给设置的 Webhook 地址,这样我们可以通过消息(比如短信、邮件、微信等)将有问题的分析结果及时的通知到相关负责人



作者:BeckJin
链接:https://www.jianshu.com/p/dd2b2be06d38


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消