译者注:由于项目时间紧,所以写出的代码就满是bug?别再找借口了,本文作者列举出了7种工具帮助你审查代码,保证代码的高质量,让我们一起看看都有哪些工具吧!以下为译文。

让我们想象一种场景,假设你是一位项目经理,你这周就要把系统提供给客户。到了周一早上,但是你团队里面95%的成员仍然昏昏欲睡。哦,你猜为什么?因为他们的代码都是bug。应该怎么做呢?

在想象一种场景,也许你是一名开发人员。现在是周一早上。你从周末开始就睡意不断,你的项目经理因为本周“不得不出货”,而你的代码却到处都是bug。的确,应该怎么做呢?

好吧,你可以从旁边的小隔间打电话给“大胡子”史蒂夫,来检查你的代码,但如果真让他来检查,可能你的键盘上面就都是他的胡渣了,你肯定不想这样。看起来你需要一个代码审查工具。你很幸运,因为我刚好在这篇文章里准备了一份工具清单。但首先我需要介绍一些背景信息。

通常我们讨论的代码审查工具有两种类型:自动和手动。前者“根据一组预定义的检查源代码的规则,生成报告”,而后者则用于“需要合作共同检查和讨论变更的场景时,而且需要将这过程的历史也存储下来以备将来参考”。(维基)这里我们将会重点介绍手工代码审查工具,所以针对我们今天提及的顶级代码审查工具,你会提供什么意见,你的最终选择又会是哪一款工具。

首先,让我们看一下Atlassian的Crucible,它是当今市场上最受欢迎的选择之一。它是一个基于web的应用程序,主要针对企业。不仅促进了异步审查和对代码的注释,而且还使得团队能够很容易地进行协作。

Crucible还集成了Atlassian的其他产品,比如Jira的bug和问题追踪功能,以及Bitbucket服务器。另外,看看Atlassian市场,你可以看到许多用于定制Crucible的附加组件。他们甚至还提供一个REST API以帮助用户构建自己的附加组件。

这里有图表和报告、内嵌注释、线程对话和可显示最近评论和审查更新的活动流。

价格也很合适:你可以免费用30天,而且有5名用户可以有机会只需10美元。

接下来是Review Board,“一个开源的、基于web的代码和文档审查工具,用于帮助公司、开源项目和其他组织保持代码的高质量,而且bug数量也会比较低。请注意,这是审查代码和文档的。这意味着你可以用它来审查任何事情。简单地将一个文件拖放到一个评审请求中,然后任何人都可以在它上面留下注释。例如,将它用于日志文件、控制台输出,甚至可以对UI和图形进行评论和评论。

Review Board有一个很高级的功能,就是差异查看器(文件比较),它允许将代码扩展到最近的函数或类,最近的代码更改,或者每次20行。它还提供了简单的注释、基于web的界面和命令行工具来简化审查请求提交过程。指示板提供了对所有审阅请求的最新概述。

Review Board是正在被几家大公司(领英、Mozilla、Yelp)免费使用。

Parasoft提供了一系列的测试工具,这些工具获得了许多好评,其中就包括支持任何语言和文件类型的Peer review。而且,当手工评审代码还不够时,它还集成了其它一些用于单元测试、端到端功能和负载测试、服务虚拟化的软件。

Parasoft中有个很棒的功能,就是工作流管理的自动化,包括准备、通知和跟踪。新的代码被自动识别,接着与指定的审阅人员匹配,然后跟踪每个评审项目的进展直到结束。开发人员只需简单地检查代码,然后根据预配置的审核人员映射关系,就可以自动地检查包,并将其分发到适当的审阅人员的集成开发工具中。这个功能很赞!支持所有常见的开发环境。

亚伯拉罕·林肯曾经说过:“合作推动创新”。哦,不,开玩笑的,这不是真的(也许他曾经说过“不要相信你在网上看到的一切”)。这实际上是Smartbear公司的Collaborator标语—Collaborator适用于所有开发工作流程的代码评审和文档评审(这是他们的另一个口号)。

所以使用这款工具,我们将得到对源代码和其他文档的同行评审,报告和度量,甜蜜的bug跟踪特性,以及大量的集成:Git,Visual Studio,Team Foundation Server。是的,几乎集成了所有的东西。它是闭源,但这很酷。前10个用户可以免费试用,之后你就得让你的老板付费了。他们也有一些知名的客户,如Adobe、甲骨文、惠普、美国银行等等。

来看看他们的流程图。来吧,我们都喜欢一个好的流程图。

IDE中的重量级作品JetBrains推出了Upsource,这是一种多语言代码审查工具。为什么通晓多国语言?下面是支持语法高亮显示的语言列表。不错,但是COBOL的支持在哪里呢?

第一件很酷的事情是让合作变得很轻松。只需发送一个URL就可以共享代码、修订、扩散、代码检查、搜索过滤器、文件,甚至代码选择。另外,开发人员可以通过插件直接从IDE中获得代码评审。它与GitHub、Jira和其他公司进行了整合,并有一些不错的分析功能。如果你已经使用了JetBrains IDE,那绝对是值得考虑的。

接下来介绍的是Reviewable,它成功吸引人们的原因不仅仅是因为开源,还因为它的logo是一个带着单眼镜的兔子。用他们的话来说,它有“比你可以摇一摇的更多的特性”——一个大胆的声明,知道那里不缺少顽强的坚持不懈的人。有几个问题是:

  • 只看你上次看的时候发生了什么变化(即使是重新建立的)
  • 立即对文件的任意两个版本进行比较,在一两个列中
  • 隐藏虚假的白只、合并或重基delta
  • 跟踪检查的文件,未回复/未解决的注释
  • 注释映射跨代码更改,永远不会消失
  • 实时更新和更多

这款工具有免费版和付费版两个版本。

最后,我们介绍Gitcolony,用它管理代码也不算太糟糕(这是他们的原句,不是我说的)。Gitcolony的特色就只有一个,就是它的pull requests功能。你可以“创建一个虚拟pull request,这样就可以边写代码边检查”。

这里的想法是,如果开发人员只需要评审小部分的代码,他们的注意力可能会更集中,可以更快的发现问题和bug。“让程序员检查10行代码,他们会发现10个问题。如果让他们检查500行,他们会说代码看起来没问题”,这句话引自他们的网站。这种说法很有道理。

如果你的项目位于多个代码库里面,那么这时候就可以体现出它的linked pull requests功能。它可以自动地将来自不同代码库的请求链接起来,但是与相同的源分支可以在评审后同时合并。其他一些亮点包括与QA的集成,关于团队性能的度量,等等。

好的,就介绍这些吧。如果你使用了这些工具中的某一种,现在就可以惬意的泡一杯咖啡,然后跟已经非常心烦意乱的项目经理说不用担心了,我们在周五就可以提供系统,而且是在周五中午

7种工具帮助你审查代码相关推荐

  1. 第一百一十八期:运行 JavaScript 代码片段的 20 种工具

    运行 JavaScript 代码片段的 20 种工具 前端日常开发中,我们使用喜爱的 IDE 调试 JavaScript 代码,比如我喜欢的代码编辑器有两个,Sublime Text 3 和 VS C ...

  2. 构建嵌入式linux系统_用于构建嵌入式Linux系统的4种工具

    构建嵌入式linux系统 Linux正在被部署到比Linus Torvalds在他的宿舍里工作的设备更多的设备中. 受支持的各种芯片架构令人震惊,并导致各种大小的设备都使用Linux. 从庞大的IBM ...

  3. 静态代码分析工具列表--常用静态代码分析工具介绍

    代码检测简介 本文是一个静态代码分析工具的清单,但是为公司产品需要付费使用.共有37个公司,有些公司包含多个工具.其中27个公司有多语言 工具,1个公司为PHP工具.2个公司为.NET工具.1个公司为 ...

  4. 五个有用的工具帮助您提高代码质量

    前言 对于开发人员而言,代码质量一直是一个非常重要的话题.高质量的代码不仅可以提高应用程序的性能,还可以减少代码错误和维护成本.然而,如何确保代码质量呢?下面介绍五个有用的工具,可以帮助您提高代码质量 ...

  5. 机器学习博士在获得学位之前需要掌握的九种工具!

    Datawhale干货 作者:Aliaksei Mikhailiuk,编辑:机器之心 无论你在创业还是在做学术研究,这些工具都将使你的技能更上一层楼. 学术界在推进技术方面发挥了巨大作用,但学术界和工 ...

  6. Python新工具:用三行代码提取PDF表格数据

    点击上方"视学算法",星标公众号 重磅干货,第一时间送达 项目作者:vinayak mehta 参与:一鸣 从 PDF 表格中获取数据是一项痛苦的工作.不久前,一位开发者提供了一个 ...

  7. 企业级自动化运维方案设计及Saltstack、Ansible等5种工具比较分析--云平台技术栈08...

    导读:之前发布了云平台技术栈(ps:点击可查看),本文主要说一下其中的服务器自动化配置! 来自:公众号talkwithtrend 1.企业运维现状与发展趋势 随着企业信息化的不断发展,运维人员需要面对 ...

  8. 一些日常工具集合(C++代码片段)

    一些日常工具集合(C++代码片段) --工欲善其事,必先利其器 尽管不会松松松,但是至少维持一个比较小的常数还是比较好的 在此之前依然要保证算法的正确性以及代码的可写性 本文依然会持久更新,因为一次写 ...

  9. 从一个提问引发到你是怎么看待编程语言是一种工具这句话的?【笔记自用】

    提问 上学期系统的学了c语言,这学期自学了java,因为学长说,语言只是工具,数据结构和算法才是核心,所以尝试用JAVA实现原来用c写的算法,之后拿给学长看,他说,你这是用JAVA的语法写c啊,,然后 ...

最新文章

  1. 10 行 Java 代码实现 LRU 缓存
  2. 一阶网络相应特性的研究_36、 用一阶系统描述的传感器,其动态响应特征的优劣也主要取决于时间常数τ,τ越大越好。( )...
  3. .NET Core 跨平台发布(dotnet publish)
  4. 工作391-选择Hbuilder x作为开发工具
  5. 微信小程序图片删除php,关于微信小程序中图片处理的问题总结
  6. 对比,还原真实的GPU池化
  7. web开发时浏览器兼容性问题汇总
  8. jQuery实现文字左右收缩效果示例
  9. 迅雷快车旋风链接转换成普通链接工具
  10. 英语口语234之每日十句口语
  11. FC总线基础知识(2)——光纤交换机
  12. 平面设计中的网格系统pdf_【200421】平面设计必看书籍超越平凡的设计平面设计中的网格系统等|电子书资源免费分享...
  13. 新增网络与信息安全​专硕!优秀双非重庆邮电大学
  14. Vue中 引入使用 vue-video-player 实现音视频播放
  15. 如何让解决devcpp编译提示main' must return 'int'?
  16. jetson nano开电源_微雪电子NVIDIA Jetson Nano人工智能开发套件AI板介绍
  17. 历年北京理工大学复试上机题
  18. MySQL查询所有子文件目录_使用File类的listFiles方法输出d盘根目录下的所有子目录和文件的完整路径名以及文件的字节数。写出相应代码。...
  19. 京东数科 Mr.AI在未来生长
  20. linux以太网(二)

热门文章

  1. 黑白激光打印机出现重影故障的原因与解决办法
  2. c语言——数字特征值题
  3. matlab 二次函数图像
  4. vue+websocket+express+mongodb实战项目(实时聊天)(一)
  5. COMSOL和Matlab联合仿真之复合材料填充建模
  6. python eel vue_张莽子—
  7. DLM learning materials
  8. riboseq的下游分析ribodiff,在R里进行GO分析和KEGG分析
  9. H5在线CAD,网页CAD,MxDraw云图平台2022.08.24更新
  10. strstr函数和strtok函数的使用