当前位置:首页 > 科技  > 软件

我用这十招,减少了80%的BUG

来源: 责编: 时间:2024-04-19 09:28:58 263观看
导读前言对于大部分程序员来说,主要的工作时间是在开发和修复BUG。有可能修改了一个BUG,会导致几个新BUG的产生,不断循环。那么,有没有办法能够减少BUG,保证代码质量,提升工作效率?答案是肯定的。如果能做到,我们多出来的时间,多摸

CUx28资讯网——每日最新资讯28at.com

前言

对于大部分程序员来说,主要的工作时间是在开发和修复BUG。CUx28资讯网——每日最新资讯28at.com

有可能修改了一个BUG,会导致几个新BUG的产生,不断循环。CUx28资讯网——每日最新资讯28at.com

那么,有没有办法能够减少BUG,保证代码质量,提升工作效率?CUx28资讯网——每日最新资讯28at.com

答案是肯定的。CUx28资讯网——每日最新资讯28at.com

如果能做到,我们多出来的时间,多摸点鱼,做点自己喜欢的事情,不香吗?CUx28资讯网——每日最新资讯28at.com

这篇文章跟大家一起聊聊减少代码BUG的10个小技巧,希望对你会有所帮助。CUx28资讯网——每日最新资讯28at.com

CUx28资讯网——每日最新资讯28at.com

1.找个好用的开发工具

在日常工作中,找一款好用的开发工具,对于开发人员来说非常重要。CUx28资讯网——每日最新资讯28at.com

不光可以提升开发效率,更重要的是它可以帮助我们减少BUG。CUx28资讯网——每日最新资讯28at.com

有些好的开发工具,比如:idea中,对于包没有引入,会在相关的类上面标红。CUx28资讯网——每日最新资讯28at.com

CUx28资讯网——每日最新资讯28at.com

并且idea还有自动补全的功能,可以有效减少我们在日常开发的过程中,有些单词手动输入的时候敲错的情况发生。CUx28资讯网——每日最新资讯28at.com

2.引入Findbugs插件

Findbugs是一款Java静态代码分析工具,它专注于寻找真正的缺陷或者潜在的性能问题,它可以帮助java工程师提高代码质量以及排除隐含的缺陷。CUx28资讯网——每日最新资讯28at.com

Findbugs运用Apache BCEL 库分析类文件,而不是源代码,将字节码与一组缺陷模式进行对比以发现可能的问题。CUx28资讯网——每日最新资讯28at.com

可以直接在idea中安装FindBugs插件:CUx28资讯网——每日最新资讯28at.com

CUx28资讯网——每日最新资讯28at.com

之后可以选择分析哪些代码:CUx28资讯网——每日最新资讯28at.com

CUx28资讯网——每日最新资讯28at.com

分析结果:CUx28资讯网——每日最新资讯28at.com

CUx28资讯网——每日最新资讯28at.com

点击对应的问题项,可以找到具体的代码行,进行修复。CUx28资讯网——每日最新资讯28at.com

CUx28资讯网——每日最新资讯28at.com

Findbugs的检测器已增至300多条,被分为不同的类型,常见的类型如下:CUx28资讯网——每日最新资讯28at.com

  • Correctness:这种归类下的问题在某种情况下会导致bug,比如错误的强制类型转换等。
  • Bad practice:这种类别下的代码违反了公认的最佳实践标准,比如某个类实现了equals方法但未实现hashCode方法等。
  • Multithreaded correctness:关注于同步和多线程问题。
  • Performance:潜在的性能问题。
  • Security:安全相关。
  • Dodgy:Findbugs团队认为该类型下的问题代码导致bug的可能性很高。

3.引入CheckStyle插件

CheckStyle作为检验代码规范的插件,除了可以使用配置默认给定的开发规范,如Sun、Google的开发规范之外,还可以使用像阿里的开发规范的插件。CUx28资讯网——每日最新资讯28at.com

目前国内用的比较多的是阿里的代码开发规范,我们可以直接通过idea下载插件:CUx28资讯网——每日最新资讯28at.com

CUx28资讯网——每日最新资讯28at.com

如果想检测某个文件:CUx28资讯网——每日最新资讯28at.com

CUx28资讯网——每日最新资讯28at.com

可以看到结果:CUx28资讯网——每日最新资讯28at.com

CUx28资讯网——每日最新资讯28at.com

阿里巴巴规约扫描包括:CUx28资讯网——每日最新资讯28at.com

  • OOP规约
  • 并发处理
  • 控制语句
  • 命名规约
  • 常量定义
  • 注释规范

Alibaba Java Coding Guidelines 专注于Java代码规范,目的是让开发者更加方便、快速规范代码格式。CUx28资讯网——每日最新资讯28at.com

该插件在扫描代码后,将不符合规约的代码按 Blocker、Critical、Major 三个等级显示出来,并且大部分可以自动修复。CUx28资讯网——每日最新资讯28at.com

它还基于Inspection机制提供了实时检测功能,编写代码的同时也能快速发现问题。CUx28资讯网——每日最新资讯28at.com

4.用SonarQube扫描代码

SonarQube是一种自动代码审查工具,用于检测代码中的错误,漏洞和代码格式上的问题。CUx28资讯网——每日最新资讯28at.com

它可以与用户现有的工作流程集成,以实现跨项目分支和提取请求的连续代码检查,同时也提供了可视化的管理页面,用于查看检测出的结果。CUx28资讯网——每日最新资讯28at.com

SonarQube通过配置的代码分析规则,从可靠性、安全性、可维护性、覆盖率、重复率等方面分析项目,风险等级从A~E划分为5个等级;CUx28资讯网——每日最新资讯28at.com

同时,SonarQube可以集成pmd、findbugs、checkstyle等插件来扩展使用其他规则来检验代码质量。CUx28资讯网——每日最新资讯28at.com

CUx28资讯网——每日最新资讯28at.com

一般推荐它跟Jenkins集成,做成每天定时扫描项目中test分支中的代码问题。CUx28资讯网——每日最新资讯28at.com

5.用Fortify扫描代码

Fortify 是一款广泛使用的静态应用程序安全测试(SAST)工具。CUx28资讯网——每日最新资讯28at.com

它具有代码扫描、漏斗扫描和渗透测试等功能。它的设计目的是有效地检测和定位源代码中的漏洞。CUx28资讯网——每日最新资讯28at.com

它能帮助开发人员识别和修复代码中的安全漏洞。CUx28资讯网——每日最新资讯28at.com

Fortify的主要功能:CUx28资讯网——每日最新资讯28at.com

  • 静态代码分析:它会对源代码进行静态分析,找出可能导致安全漏洞的代码片段。它能识别多种类型的安全漏洞,如 SQL 注入、跨站脚本(XSS)、缓冲区溢出等。
  • 数据流分析:它不仅分析单个代码文件,还跟踪应用程序的数据流。这有助于找到更复杂的漏洞,如未经验证的用户输入在应用程序中的传播路径。
  • 漏洞修复建议:发现潜在的安全漏洞时,它会为开发人员提供修复建议。
  • 集成支持:它可以与多种持续集成(CI)工具(如 Jenkins)和应用生命周期管理(ALM)工具(如 Jira)集成,实现自动化的代码扫描和漏洞跟踪。
  • 报告和度量:它提供了丰富的报告功能,帮助团队了解项目的安全状况和漏洞趋势。

使用Fortify扫描代码的结果:CUx28资讯网——每日最新资讯28at.com

CUx28资讯网——每日最新资讯28at.com

一般推荐它跟Jenkins集成,定期扫描项目中test分支中的代码安全问题。CUx28资讯网——每日最新资讯28at.com

6.写单元测试

有些小伙伴可能会问:写单元测试可以减少代码的BUG?CUx28资讯网——每日最新资讯28at.com

答案是肯定的。CUx28资讯网——每日最新资讯28at.com

我之前有同事,使用的测试驱动开发模式,开发一个功能模块之前,先把单元测试写好,然后再真正的开发业务代码。CUx28资讯网——每日最新资讯28at.com

后面发现他写的代码速度很快,而且代码质量很高,是一个开发牛人。CUx28资讯网——每日最新资讯28at.com

如果你后期要做系统的代码重构,你只是重写了相关的业务代码,但业务逻辑并没有修改。CUx28资讯网——每日最新资讯28at.com

这时,因为有了之前写好的单位测试,你会发现测试起来非常方便。CUx28资讯网——每日最新资讯28at.com

可以帮你减少很多BUG。CUx28资讯网——每日最新资讯28at.com

7.功能自测

功能自测,是程序员的基本要求。CUx28资讯网——每日最新资讯28at.com

但有些程序员自测之后,BUG还是比较多,而有些程序员自测之后,BUG非常少,这是什么原因呢?CUx28资讯网——每日最新资讯28at.com

可能有些人比较粗心,有些人比较细心。CUx28资讯网——每日最新资讯28at.com

其实更重要的是测试的策略。CUx28资讯网——每日最新资讯28at.com

有些人喜欢把所有相关的功能都开发完,然后一起测试。CUx28资讯网——每日最新资讯28at.com

这种情况下,相当于一个黑盒测试,需要花费大量的时间,梳理业务逻辑才能测试完整,大部分情况下,开发人员是没法测试完整的,可能会有很多bug测试不出来。CUx28资讯网——每日最新资讯28at.com

这种做法是没有经过单元测试,直接进行了集成测试。CUx28资讯网——每日最新资讯28at.com

看似节省了很多单元测试的时间,但其实后面修复BUG的时间可能会花费更多。CUx28资讯网——每日最新资讯28at.com

比较推荐的自测方式是:一步一个脚印。CUx28资讯网——每日最新资讯28at.com

比如:你写了一个工具类的一个方法,就测试一下。如果这个方法中,调用了另外一个关键方法,我们可以先测试一下这个关键方法。CUx28资讯网——每日最新资讯28at.com

这样可以写出BUG更少的代码。CUx28资讯网——每日最新资讯28at.com

8.自动化测试

有些公司引入了自动化测试的功能。CUx28资讯网——每日最新资讯28at.com

有专门的程序,每天都会自动测试,保证系统的核心流程没有问题。CUx28资讯网——每日最新资讯28at.com

因为我们的日常开发中,经常需要调整核心流程的代码。CUx28资讯网——每日最新资讯28at.com

不可能每调整一次,都需要把所有的核心流程都测试一遍吧,这样会浪费大量的时间,而且也容易遗漏一些细节。CUx28资讯网——每日最新资讯28at.com

如果引入了自动化测试的功能,可以帮助我们把核心流程都测试一下。CUx28资讯网——每日最新资讯28at.com

避免代码重构,或者修改核心流程,测试时间不够,或者测试不完全的尴尬。CUx28资讯网——每日最新资讯28at.com

自动化测试,可以有效的减少核心流程调整,或者代码重构中的BUG。CUx28资讯网——每日最新资讯28at.com

9.代码review

很多公司都有代码review机制。CUx28资讯网——每日最新资讯28at.com

我之前也参与多次代码review的会议,发现代码review确实可以找出很多BUG。CUx28资讯网——每日最新资讯28at.com

比如:一些代码的逻辑错误,语法的问题,不规范的命名等。CUx28资讯网——每日最新资讯28at.com

这样问题通过组内的代码review一般可以检查出来。CUx28资讯网——每日最新资讯28at.com

有些国外的大厂,采用结对编程的模式。CUx28资讯网——每日最新资讯28at.com

同一个组的两个人A和B一起开发,开发完之后,A reivew B的代码,同时B review A的代码。CUx28资讯网——每日最新资讯28at.com

因为同组的A和B对项目比较熟,对对方开发的功能更有了解,可以快速找出对外代码中的一些问题。CUx28资讯网——每日最新资讯28at.com

能够有效减少一些BUG。CUx28资讯网——每日最新资讯28at.com

10.多看别人的踩坑分享

如果你想减少日常工作中的代码BUG,或者线上事故,少犯错,少踩坑。CUx28资讯网——每日最新资讯28at.com

经常看别人真实的踩坑分享,是一个非常不错的选择,可以学到一些别人的工作经验,帮助你少走很多弯路。CUx28资讯网——每日最新资讯28at.com

网上有许多博主写过自己的踩坑记录,大家可以上网搜一下。CUx28资讯网——每日最新资讯28at.com

最后说一句,本文总结了10种减少代码BUG的小技巧,但我们要根据实际情况选择使用,并非所有的场景都适合。CUx28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-84023-0.html我用这十招,减少了80%的BUG

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 用Go语言&&Redis实现分布式锁,我还是第一次

下一篇: 领域驱动设计(DDD)中的应用架构:六边形、洋葱、整洁与清晰

标签:
  • 热门焦点
  • 消息称迪士尼要拍真人版《魔发奇缘》:女主可能也找黑人演员

    8月5日消息,迪士尼确实有点忙,忙着将不少动画改成真人版,继《美人鱼》后,真人版《白雪公主》、《魔发奇缘》也在路上了。据外媒消息称,迪士尼将打造真人版
  • 破圈是B站头上的紧箍咒

    来源 | 光子星球撰文 | 吴坤谚编辑 | 吴先之每年的暑期档都少不了瞄准追剧女孩们的古偶剧集,2021年有优酷的《山河令》,2022年有爱奇艺的《苍兰诀》,今年却轮到小破站抓住了追
  • 2天涨粉255万,又一赛道在抖音爆火

    来源:运营研究社作者 | 张知白编辑 | 杨佩汶设计 | 晏谈梦洁这个暑期,旅游赛道彻底火了:有的「地方」火了——贵州村超旅游收入 1 个月超过 12 亿;有的「博主」火了&m
  • “又被陈思诚骗了”

    作者|张思齐 出品|众面(ID:ZhongMian_ZM)如今的国产悬疑电影,成了陈思诚的天下。最近大爆电影《消失的她》票房突破30亿断层夺魁暑期档,陈思诚再度风头无两。你可以说陈思诚的
  • 网红炒股不为了赚钱,那就是耍流氓!

    来源:首席商业评论6月26日高调宣布入市,网络名嘴大v胡锡进居然进军了股市。在一次财经媒体峰会上,几个财经圈媒体大佬就“胡锡进炒股是否知道认真报道”展开讨论。有
  • OPPO、vivo、小米等国内厂商Q2在印度智能手机市场份额依旧高达55%

    7月20日消息,据外媒报道,研究机构的报告显示,在全球智能手机出货量同比仍在下滑的大背景下,印度这一有潜力的市场也未能幸免,出货量同比也有下滑,多家厂
  • 华为HarmonyOS 4.0将于8月4日发布 或搭载AI大模型技术

    华为宣布HarmonyOS4.0将于8月4日正式发布。此前,华为已经针对开发者公布了HarmonyOS4.0,以便于开发者提前进行适配,也因此被曝光出了一些新系统的特性
  • iQOO Neo8 Pro评测:旗舰双芯加持 最强性能游戏旗舰

    【Techweb评测】去年10月,iQOO推出了一款Neo7手机,该机搭载了联发科天玑9000+,配备独显芯片Pro+,带来了同价位段最佳的游戏体验,一经上市便受到了诸多用
  • 苹果140W USB-C充电器:采用氮化镓技术

    据10 月 30 日 9to5 Mac 消息报道,当苹果推出新的 MacBook Pro 2021 时,该公司还推出了新的 140W USB-C 充电器,附赠在 MacBook Pro 16 英寸机型的盒子里,也支
Top