有人实践过 Phabricator 以及 Arcanist 作为 code review 的工具么?(转)

作者:覃超
链接:http://www.zhihu.com/question/19977889/answer/13539702
来源:知乎

平时就经常实践. 整个公司的code review就是使用这个. 具体说来, 由于我的project稍微有点特殊,所以我这一年在facebook工作的时候一直在用两套Code Review工具: Facebook的Phabricator 和 Google的Gerrit (他们都是开源). 我觉得两个工具都很快,很稳定,然后都有效地提供了code review必备的功能:比如比较任意两个不同版本, 对任意一行代码来写评语, 以及可以很方便地导入和导出代码到本地机器. 用了将近一年的时间,如果我要给自己的公司选一个工具的话,我会选择Phabricator. 主要是觉得这个界面很干净, 然后配色非常好看, 整个感觉比Gerrit要现代化不少. 另外一个方便地地方,就是Gerrit上面只能看到版本做的修改,而无法直接展开整个文件(除非下载), 而这点Phabricator完成得比较好. 还有就是Phabricator上面可以发各种图片,显得气氛比较轻松. 具体你可以在http://Phabricator.com上面注册一个账户,然后去看看eprisetley的diff, 就可以大致了解这个工具的功能和特点. 最后要说的是: 这个工具现在已经开源, 并不属于Facebook, 而且开发它的首席工程师也已经离开Facebook自己创业. 在加上 AladdinZ 张超 在评论里面说的亮点: (credit属于他,而且的确也是我用后觉得有很大差别的地方) 1. Phabricator将所有文件的比较直接展开,然后放在一起,方便人阅读. 而Gerrit只有一个文件列表,然后用户需要点每一个文件,才能看到具体的修改; 2. admin的权限设置问题. 另外我还想到一点Phabractor比较人性化的地方: Phabricator还可以捆绑unit test和以及格式检查和规范的工具(e.g. JSLint), 然后用户在上传diff的时候, phab会自动用新版本的代码去跑unit tests,以及运行JSLint, 然后在code review里面就可以看到unit tests有几个failure和error,以及JSLint的报警信息. 对于Gerrit, 不知道能否类似配置一下.

著作权归作者所有。
商业转载请联系作者获得授权,非商业转载请注明出处。
作者:赵戈戈
链接:http://www.zhihu.com/question/19977889/answer/24101951
来源:知乎

从 12 年公司老东家成立创新产品团队开始到目前,Phabircator 已经从只有我们团队使用到现在老东家全面投入使用。刚开始由于是创新产品团队,不用受制于公司大环境的束缚,可以自由发挥的空间更多。由于个人比较喜欢玩工具,比如 Trac 和 Redmine 以及 Bugfree 都用过很长时间(当然从来没有觉得很满意),正当总是不满意的时候 Phabricator 进入了视线,经过一些使用和研究,我们决定将传统的 Subversion + ReviewBoard + Jenkins 切换到 Git + Phabricator 的平台上,暂时抛弃了持续集成部分,轻装简从开始了我们新的工具时代。Phabricator 最早是 Facebook 的内部审查工具,看过王淮的《打造 Facebook》都应该知道,Facebook 最厉害的工程师都需要进入工具部门去锻炼深造,所以质量就不明觉历了吧。据说后期 Phabricator 在 Facebook 资助下专心做这个,迭代和更新速度都很快,整体界面和 Facebook 的风格简直是如出一辙(就觉得 Facebook 的传统风格太像是工具了)。作为资深使用用户有资格发表点对使用 Phabricator 的一些看法:首先,Phabricator 是基于 PHP + Mysql 的,但是配置起来也不麻烦。个人也曾经贡献过一些 Bug fix,从代码上来说 Phabricator 虽然不是我的风格,但风格和写法上非常不错。所有的开发都是面向 OOP,资源的管理是分离的很清楚的,配置的管理是多重的(数据库,文件,默认)等等。高手写的代码都值得追随和拜读。所以,如果你在做 PHP 建议来读一读。其次,传统的概念上,项目、仓库和任务都是以项目为主绑定在一起的。而在在 Phabricator,所有这些都不是耦合在一起的。项目就是项目,仓库就是仓库,任务就是任务。但所有的东西都是以项目作为线索连接在一起的。一个任务可以属于多个项目,仓库的 commit 和 review 只有在提交任务的时候,可以结合进去。如果要想更好的使用仓库,比如自动 Review,审查 commit,还需要用到 Owners,根据配置,所有人会拥有仓库的审查权限,所有仓库的提交也都有 Owners 来进行审核。这种松散的组合,想必和 Facebook 内部开放协作的项目态度是有关的,对于开放的团队来说非常有好处。<img src="https://pic1.zhimg.com/c20fe9690d437e8ff9907a0a279059e8_b.jpg" data-rawwidth="940" data-rawheight="455" class="origin_image zh-lightbox-thumb" width="940" data-original="https://pic1.zhimg.com/c20fe9690d437e8ff9907a0a279059e8_r.jpg">再者,代码仓库的支持很完整。Git,Svn,HG 一个都不落下(什么,你说 CVS,那是什么)。对于仓库,Phabricator 有很好的自动检测和拉取机制,你推的代码,很快它就能收到,根据你定制的规则去指派给相应的人去审核。除了可以审核,查看代码也非常方便,甚至它本身支持了 ctags 的导入,如果你导入了 ctags ,在代码中甚至可以用 IDE 中快速定位的方式去查找代码源自哪里?高亮自然就不用说了,没有一种语言不支持的,估计新版本连自己的 Haske Lang 都支持。<img src="https://pic3.zhimg.com/ee6064b75e5dcd2246eba696d98485f6_b.jpg" data-rawwidth="1254" data-rawheight="691" class="origin_image zh-lightbox-thumb" width="1254" data-original="https://pic3.zhimg.com/ee6064b75e5dcd2246eba696d98485f6_r.jpg">然后,辅助工具也很丰富,对于开发之外的各种需求来说都可以满足。比如文档、图片审查、倒计时、问答、代码分享、投票、密钥管理、日历、聊天、文件共享简直是费尽心思。文档是代码开发的重要部分,Phabricator 采用了自己编写的 reMarkup 语法和Markdown 非常相似,但是多了表格,目录索引,引用自有文件任务等功能,使用上很快就能进入,基本不会有什么问题。简单说说图片审查,这块是我最没有想到的。不过也解决了一个我们设计的痛点。可以把设计稿提交上来给大家看,你我都可以圈圈点点,提交意见,最终定稿。否则,设计师这个跟开发同性质(需要被产品经理赶)的用户只能上 Phabricator 看任务。其它的就不多说了,基本都是字面意思,如果你有用到最好,用不到也无所谓,只是辅助。<img src="https://pic2.zhimg.com/0f7e57ef71e7c8c4836efa5a3415c9f1_b.jpg" data-rawwidth="1051" data-rawheight="662" class="origin_image zh-lightbox-thumb" width="1051" data-original="https://pic2.zhimg.com/0f7e57ef71e7c8c4836efa5a3415c9f1_r.jpg">接着,要说下命令行。Phabricator 提供了个命令行叫 arc (Arcanist),总之很方便。它有几个用处:操作数据(任务查看操作);开发辅助(gitflow 工作流,查看提交的 diff,代码检查,执行单元测试);辅助(文件分享下载、代码分享,升级)等等。对于开发来说,命令行再熟悉不过,用好这个命令行可以少上 Web 界面去操作,对工作效率的提升简直是大赞。<img src="https://pic1.zhimg.com/ce9d8f3989b61ca06eacc9cebc17cfa4_b.jpg" data-rawwidth="565" data-rawheight="354" class="origin_image zh-lightbox-thumb" width="565" data-original="https://pic1.zhimg.com/ce9d8f3989b61ca06eacc9cebc17cfa4_r.jpg">最后,Phabricator 很潮很自由。看看界面上的文字上如果你不去查查字典,估计有不少词你都不认识,应该不少是出自希腊古语。不过可以通过配置关闭使用正常点的描述。在账号系统支持上支持的很到位。Github、Facebook、Google 和公司内部的 LDAP 都能支持。Phabricator 的 API 是开放的,基于此你可以做出来很多符合自己需求的东西。Phabricator 也对邮件支持的也很到位,配置好收发邮件后,就可以像 Github 那样使用邮件来进行工作流。总之。如果你在挑选 Review 系统拿不定主意,看完就果断入了吧。这套系统是免费的开源的。就先说这么多。

著作权归作者所有。
商业转载请联系作者获得授权,非商业转载请注明出处。
作者:代绪
链接:http://www.zhihu.com/question/19977889/answer/24122118
来源:知乎

不只是适用于开发,我们产品团队也将pha用于产品文档撰写和项目进度管理pha类似markdown的语法能够很好的控制文档格式,在线编辑模式又提高了产品与技术直接文档信息同步的效率,如果很好的使用邮件订阅的功能,重要文档的修改都可以及时的告知每一个相关人员同时,task式的任务指派模式能很好的整理产品需求,将以往Excel管理feature的模式在线化,而且由于task与wiki,code review都在一个系统中,每个task的说明能够与产品技术说明直接关联,每个人都可以看到该task的相关进度对于产品经理or项目经理来说,phabricator也是非常好的选择

著作权归作者所有。
商业转载请联系作者获得授权,非商业转载请注明出处。
作者:匿名用户
链接:http://www.zhihu.com/question/19977889/answer/24066695
来源:知乎

正在使用Phabricator,我感觉它是:“真tmd的好”从抛弃jira,将redmine迁移到trac,专心折腾trac两年,再用上gitlab以后,虽然每个工具定位不同,但是总体感觉没有一个工具真的是在做“人”做的事情:
1. 沟通,Phabricator上的沟通是主对人,特别是owner这个角色,非常适用于使用快速迭代的团队。你还在用qq和邮件做报告和推进迭代?2. 合作,Trac上无法merge request,gitlab直接搬github。硬伤就不说了,问题是merge request并非是admin/master的工作,gitlab需要新开一个fork的行为,而Phabricator的audit是非常直观的:谁是owner,就都可以对此commit进行审核。3. 独立,trac和gitlab都无法对自身以外的repository进行窥探。于是我在Phabricator上将以前所有trac和gitlab的repository导入。一旦决定抛弃他们,切换到自主hosting就好。同时还支持mirror到源。4. 开放,你有新的皮肤想用?想用fontawesome?开源。自用自改。实践就是:马上部署马上尝试马上切换就可以马上开始使用Phabricator而其他沦落为bugtracing(原本是什么就是什么)。其他工具想不用想。装个trac加插件话费一个礼拜匹配版本,jira买或者用盗版,gitlab无。

 http://www.zhihu.com/question/19977889

 

时间: 2024-11-03 20:54:33

有人实践过 Phabricator 以及 Arcanist 作为 code review 的工具么?(转)的相关文章

敏捷软件开发实践-Code Review Process

介绍: 在敏捷软件开发中,从代码的产生速度上来看,要比传统Waterfall产生速度高很多.因为我们把时间安排的更加紧凑了.那么这么多的代码,如何能保证这些代码质量呢?很多人可能直接想到静态代码检测工具.没错,那些是可以定义一个代码检查规则来确保代码的质量,但是那个仅仅是从语言角度,那么逻辑是否已经最优化了?可重用性是否已经优化到极致了?这些是静态代码工具不能完成的,所以我们需要Code Review 实现方式: 对于已经在项目组很久的人来说: 虽然传统的code review就是把代码从仓库c

如何做好Code Review:思考、方法和实践

最近被要求做一个关于Code Review的讲演.首先要说明的是,我并不是太擅长开展Code Review的活动.做这个完全是因为答应了别人又不好反悔.不过在做准备的过程中还是有一些感想. 关于Code Review我所了解到的行业中最著名的是Bill Gates汇报.这是微软在软件开发过程中的一个重要环节,因为Bill Gates亲自参加而备受关注,在行业中广为流传. Ok,进入正题了. 我们面临的共同问题: 1.对于开发周期较长的软件项目,可维护差的代码对项目造成了极大的困扰 2.结构复杂的

Code Review 理论与实战

一. Code Review 简介 1 Code Review 的目的 凡事知其然还要知其所以然 , 我们首先需要知道什么是 Code Review 和我们使用它的目的是什么. Code Review 是一种用来确认方案设计和代码实现的质量保证机制,通过这个机制我们可以对代码,测试过程和注释进行检查. Code Review 主要用来在软件工程过程中改进代码质量,通过 Code Review 可以达到如下目的: 在项目早期就能够发现代码中的BUG 帮助初级开发人员学习高级开发人员的经验,达到知识

不重视 TDD 与 Code Review 的代价

近些年来,越来越多的人开始向我咨询测试驱动开发(TDD)的好处.所谓 TDD,就是在将代码进行部署之前,利用各种自动化测试来确保代码能够正常工作.在进行测试的时候,你需要寻找测试失败的地方,然后不断修改,必要的时候还需要对代码进行重写.实践证明,TDD 是软件开发过程中必不可少的一环.而且它还能够帮助企业和员工节省大量的时间. 近些年来,越来越多的人开始向我咨询测试驱动开发(TDD)的好处.所谓 TDD,就是在将代码进行部署之前,利用各种自动化测试来确保代码能够正常工作.在进行测试的时候,你需要

Code Review 程序员的寄望与哀伤

一个程序员,他写完了代码,在测试环境通过了测试,然后他把它发布到了线上生产环境,但很快就发现在生产环境上出了问题,有潜在的 bug. 事后分析,是生产环境的一些微妙差异,使得这种 bug 场景在线下测试中很难被发现.毕竟想要在测试环境完美的复制生产环境的所有情况也是不太可能的,导致出现了疏漏.对于这类情况,我们在想是否可以通过在线下做一些 Code Review(代码审查)假想线上的环境差异,通过在头脑中的假想上线运行来获得一些概念验证,这样是否能够减少上线后出现 bug 的概率呢? 感性 Co

Code Review for Vue 2.0 Preview

是的!Vue 2.0 发布了! Vue 2.0 preview 仓库在此 首先,当我第一次看到 Vue 2.0 的真面目的时候,我的内心是非常激动的 Demo 来个简单的 demo,首先把 dist/vue.js 导入到一个空白的网页里,然后写: 当然,在大家阅读下面所有的内容之前,先想象一下,这是一个运行时 min+gzip 后只有 12kb 大小的库 <script src="./dist/vue.js"></script> <div id="

聊Code review(上)

篇前的话:本文主要关注互联网应用程序如何做Code review(代码审查)方面.上篇主要描述什么是code review, 为什么要去做,主要包含哪些内容:下篇,主要讲如何组织人员做代码review,对程序员,以及团队有什么影响,重点在下篇. 从事过几年程序开发的猿猿们(注1),听过.或抱怨过: "某某系统的代码太烂"或"某某人的代码太烂".本文着重说应用软件的code review,将从这些问题去探讨:为什么要做代码review?如何去做代码review,应该注

[读后感]从Code Review 谈如何做技术

还有9个电,争取把这篇发出去,里面有太同共鸣,只不过之前没能写出来, 一是文笔有限,总结不够明确,本文至少总结出了我想总结的6个观点,看来总结能力还是要提高: 二是不确认这是对的,所以不敢贸然写出来,看来奔四的程序员都有这些共同的想法,并非我一人,还有许多人... 着实说,代码审查,以前想过,但没做过: 代码审查确实很不错,不懂开发的测试人员其实从某种角度是用于粗暴地替代代码审查, 结果可知,花在修复 Bug 上的时间要比编码时间多 N 倍, 我想我们以敏捷方式来对付它,逐层皮儿地扒着做,做完一

从 Code Review 谈如何做技术

编者注:本文来自酷壳-CoolShell.cn 的陈皓 这两天,在微博上表达了一下Code Review的重要性.因为翻看了阿里内部的Review Board上的记录,从上面发现Code Review做得好的是一些比较偏技术的团队,而偏业务的技术团队基本上没有看到Code Review的记录.当然,这并不能说没有记录他们就没有做Code Review,于是,我就问了一下以前在业务团队做过的同事有没有Code Review,他告诉我不但没有Code Review,而且他认为Code Review没