持续交付 36 讲
王潇俊
携程系统研发部总监
39682 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 42 讲
开篇词 (1讲)
结束语 (1讲)
持续交付 36 讲
15
15
1.0x
00:00/00:00
登录|注册

25 | 代码静态检查实践

一款好的静态检查工具或一套好的静态检查系统,应该具备哪些特点?
为什么代码静态检查应尽量在开发前期就实施?
静态检查作为不可或缺的环节
五年来的发展实践
发布到用户验证环境(UAT)前,查看静态检查结果
在GitLab的Merge Request中增加Sonar静态检查的环节
执行相关的mvn命令,把检查结果吐到Sonar服务器上
在IDE中安装SonarLint插件
设置统一的Java检查规则
搭建Sonar服务,安装CheckStyle等插件
基于某个规则框架,编写全新的规则
从已有的规则集合中挑选团队适用的规则
采用增量形式的静态检查
提升静态检查平台的处理能力
某些规则对部分情况检查得过于苛刻
静态检查受客观情况的限制
第三方代码生成器自动产生的代码存在问题
代码规则可能不适合程序语言的多个版本
未通过静态检查的产品包不允许发布到线上或用户验证环境
静态检查在代码合入主干之前
鼓励开发人员在开发环境执行静态检查
变化:从部分实施到全体实施
大型互联网公司的持续交付实践
减少在代码逐行检查上花费的时间
帮助软件设计人员更专注于分析和解决代码设计缺陷
帮助软件开发人员自动执行静态代码分析
统计数据证明
代码静态检查的定义
思考题
总结
Sonar代码静态检查实例
如何制定规则?
如何提高静态检查的效率?
跳过检查的几类方式
设定科学的检查流程
静态代码检查近五年的发展状况
静态检查工具的优势
为什么需要代码静态检查?
代码静态检查实践

该思维导图由 AI 生成,仅供参考

你好,我是王潇俊,今天我和你分享的主题是:代码静态检查实践。
从这次分享开始,我们要正式开始分享测试管理系列这个主题了。测试管理本身是一个很大的范畴,而且和我们之前聊到过的环境、配置等关系密切。
因为这个专栏我们要解决的最主要的问题是持续交付,所以我在这个测试管理这个系列里面,不会去过多的展开测试本身的内容,而是要把重点放在与持续交付相关的三个重点上:
代码静态检查;
破坏性测试;
Mock 与回放。
这三个重点内容,我会分别用一篇文章的篇幅去解释。今天,我们就先从代码静态检查的实践开始吧。
虽然不同编程语言会使用不同的静态检查工具,但这些静态检查工具的工作原理和检查流程很类似。所以,为了更好地聚焦核心内容,我选择互联网公司常用的 Java 语言的静态检查来展开今天的分享。
如果你所在公司采用的是其他编程语言,那也没关系,相信你理解了这篇文章中关于原理、流程的内容后,也可以解决你所用具体语言的代码静态检查。如果在这个过程中,你还遇到了其他问题,欢迎你给我留言,我们一起去解决。

为什么需要代码静态检查?

代码静态检查,即静态代码分析,是指不运行被测代码,仅通过分析或检查源程序的语法、结构、过程、接口等检查程序的正确性,并找出代码中隐藏的错误和缺陷(比如参数不匹配、有歧义的嵌套语句、错误的递归、非法计算、可能出现的空指针引用等等)。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文深入探讨了代码静态检查的实践和相关工具,强调了静态检查的重要性和优势。文章首先介绍了提高静态检查效率的重要性,并提出了采用增量形式的静态检查来提升效率的建议。其次,文章讨论了制定规则的方式,包括从已有规则中挑选适用的规则和编写全新规则的方法。接着,文章通过Sonar代码静态检查实例展示了如何搭建Sonar服务并将其与实际流程结合,从而构建一套完整的代码静态检查机制。最后,文章总结了近五年国内大型互联网公司在持续交付实践中的经验,并提出了思考题,引发读者深入思考。整体而言,本文通过详细介绍了代码静态检查的实践和相关工具,为读者提供了全面的了解和实施指导。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《持续交付 36 讲》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(11)

  • 最新
  • 精选
  • 手指饼干
    第五步:在 GitLab 的 Merge Request 中增加 Sonar 静态检查的环节,包括检查状态和结果等。--请问这一步的具体思路是怎样的?

    作者回复: 提交mr之后,异步进行sonar扫描,过程中不允许接受mr,直到返回结果,允许进行操作。返回的结果可以进行判断,比如有严重问题的也不允许合并。携程的做法是记录第一次扫描的结果作为基线,之后的扫描不允许有问题的增加。gitlab需要作二次开发。目前我们也在尝试增量代码的检查,会使效率更高。

    2018-09-12
    1
  • 九脉一谷
    sonar代码走查,都有哪些指标的对代码质量具有很好的指导意义

    作者回复: 本身带有很多标准,对这些标准也有对应的分级,可以拿默认的规则适用一下的

    2018-08-31
    1
  • 怀揣梦想的学渣
    现在有了openAI的GPT-4,是不是代码检测的自动化程度会再次提高
    2023-05-06归属地:山东
  • 戴斌
    我们是在持续集成的时候使用sonar做静态检查。由于检查的时间长,已经调整为按天检查了。
    2020-03-24
    1
  • Daisy
    老师,您好!Visual studio 2017安装sonarlint插件,想配置成“编码时实时扫描”,但总是失败,请问老师有解决办法吗?
    2019-07-22
  • YoungerChina
    有没有与gerrit结合的静态检查工具,基于patch的增量检查,sonar可以吗。
    2019-02-13
  • 风雨无阻
    老师你好,您的回复我没太看明白,“已经放出来了”是什么意思?是官方放出来了?还是您在哪节课程中放出来了?还是在哪里?谢谢
    2018-09-30
  • 风雨无阻
    请问,增量检查具体是如何实现的?使用增量检查的话,sonar web 上黄颜色标识的leak部分还会有显示吗?leak period又该如何设置?
    2018-09-30
  • 风雨无阻
    请问,增量检查如何实现?如果使用增量检查,那sonar web上的新增问题部分还会有结果吗?leak period 又该如何设置?
    2018-09-30
  • 路漫漫
    Sonar 有哪些插件值得推荐?
    2018-08-30
收起评论
显示
设置
留言
11
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部