背景
这段时间,公司会议室紧张,导致我们只能在没有投影仪的Telebooth里Review code, 一个人告诉大家,现在打开哪个文件,在那一行,然后大家就打开那个文件,打开那一行。
当然我们也尝试过其他工具,比如MS的NetMeeting和LotusMeeting,但要么经常掉线,要么跳帧跳得厉害。
设计
我想用一个简单的方法实现一个在线的Review的工具,只需要做到以下几点
1,Reviewee
(1)可以配置所有Reivewer的IP地址
(2)可以修改当前Review状态:开始Review和结束Review
(3)在Review的状态下,监听以下事件,并以UDP发送相关信息到所有Reviewer
(a)打开一个源文件或一个比较文件:发送文件名
(c)源文件和比较文件中的以下事件:发送文件名和文件所选中的行
a)鼠标事件
b)跳行,换页操作
(c)关闭源文件或一个比较文件 :发送文件名
2,Reviewer
(1)监听并处理相应的UDP消息:
(a)打开一个源文件或一个比较文件:打开该文件并切换到该文件
(c)源文件和比较文件中的以下事件:打开该文件并切换到该文件,选中相应行
a)鼠标事件
b)跳行,换页操作
(c)关闭源文件或一个比较文件 :关闭该文件
实现
1,由于我们的项目是使用Eclipse进行Java开发,Eclipse平台也提供了比较丰富的接口,所以这个系统在Eclipse平台上,针对于Java源文件,文本源文件,和Java比较文件。
2,这个设计的实现需要满足个条件,就是Eclipse的JavaEditor,TextEditor和CompareEditor暴露自己的控件,让你能够添加自己的事件监听器到这个控件上,当你接收到Review消息时,又能更新这些控件,这其实是破坏封装的方法,Eclipse和JDT做了很多限制。
(1)JavaEditor,不建议访问,也暴露其核心控件StyledText
(2)TextEditor,可以访问,但不暴露StyledText,没办法,只好通过扩展实现自己的TextDitor,从而访问到StyledText
(3)CompareEditor,限制访问,但可以访问其CompareEditorInput,但是也不暴露StyledText,也只好通过扩展CompareEditorInput从而拿到StyledText
3,控制控件还是直接控制控件后面的Model?本来最初的想法是
(1)Reviewee监听所有的控件事件
(2)Reviewee发送控件状态
(3)Reviewer更新控件状态
但后来发现,太多控件和控件上的事件可以改变代码的选择,后来直接改成控制控件后的Model,如果实在访问不到Model,才控制控件,这样,很多问题就绕过了。
(1)Reviewee监听主要控件事件
(2)Reviewee发送Model状态
(3)Reviewer更新Model状态
4,Reviewee和Reviewer之间的通信用最简单的UDP方式,DatagramSocket和DatagramPacket,没有用到nio的东西,也不考虑任何容错。
某些总结
1,SWT中的控件及可以在其上添加的事件监听器
(1)Widget.addListener(int, Listener) 向这个widget上添加事件监听器
(2)Widget的子类可以监听自己特有的事件,比如Control.addControlListener(ControlListener)。这其实是为了实现更具体更清楚的编程,从方法层次而不是参数层次关心事件。
(3)当在一个作为Composite的控件上添加另一个控件,当我们点击前端控件时,后端Composite控件是不会受到该点击事件的。
(4)Display.windowProc() -> Control.windowProc(),SWT控件处理OS发送给该控件(窗口)的消息。
和未来工作
1,可以将Reviewee和Reviewer之间的交互做得更明确些,比如
(1)Reviewee开始Review过程时,向某公共处注册自己的IP
(2)Reviewer打算进行Review过程,从公共处,浏览开始的Review过程,请求加入
(3)对于Jazz平台,这个公共某处可以是某个ChangeSet
2,可以将这个Review工具和WorkSpace关联起来,对于Jazz平台,可以和某个ChangeSet关联起来。
分享到:
相关推荐
一、软件特色 功能丰富:实现文件内容、度量、命名、注释、类图、Halstead等审查。 简单易用:无需安装,直接使用,直接删除;所有操作点击完成。 直观可视:分析结果与源代码在同一界面显示对照,快速定位。 语言多样:...
本文档主要描述svn 与 review border (在线代码审查工具)的下载及安装 和简单使用介绍
事实上,它不仅仅是一个镜像origin/*分支的二级分支结构,而是一个只有在你运行git-code-review脚本时才会改变的结构。 重点是告诉您自上次运行该工具以来创建或修改了哪些分支,并为您提供应该查看的提交范围和 ...
里面有三个文档,简单的讲述了一下内容。举例实用工具。 为什么要进行Code Review? 如何做Code Review? 如何使用工具进行Code Review? CheckStyle FindBugs PMD 使用工具进行Code Review的局限性 我们可以做得...
git-codereview工具是用于使用Gerrit的命令行工具。 下载/安装 最简单的安装方法是运行go get -u golang.org/x/review/git-codereview 。 您还可以手动git将存储库克隆到$GOPATH/src/golang.org/x/review 。 运行...
我也是一个很大的Gerrit用户,我的大部分互动都是通过git-review(Openstack的另一个很棒的工具)进行的。 输入atom的git-review。 该项目的目标很简单。 让我们在atom内启用git-review的用法,因此对于正常的开发...
工具,您可以一次性向买家请求亚马逊产品评论。 发货后如何要求买家反馈? 过程很简单。这就是你需要做的。 -登录您的亚马逊卖家中心帐户。 -单击我们的亚马逊评论请求chrome扩展。 -选择您选择的市场。我们的扩展...
突然记起matlab没法做高维矩阵运算,简单运算的可以用for循环或者降维的技巧来实现,但是当比较复杂,特别是实现一些张量运算的时候就很麻烦,因为一些简洁的公式用一片for循环代码去实现,看上去影响以后review或...
使用SellerApp的免费Amazon Review Request工具一次性生成无忧的评论请求 由SellerApp提供的免费Amazon审查请求chrome扩展程序-生成无忧的审查请求在当今的数字世界中,审查不是可选的。 买家的反馈意见会在您的企业...
这是从Amazon导出产品评论的简单可靠的工具。 适用于所有亚马逊市场!!! 获取来自全球任何亚马逊平台的评论! 筛选日期范围和星星,仅获取您想要的信息! 没有更多的剪切和粘贴评论! 现在只需几秒钟即可完成数...
eclipse 打标记注释的工具,使开发人员在大型项目开发过程中对自己修改过的代码进行标注,方便后续review使用。使用方法非常简单,ALT+E进行配置 ALT+A ALT+D 进行使用。
每个团队成员都知道更好的应用程序代码 代码变得更同质 代码通常更好,不仅因为审阅者发现了潜在的问题或改进,还因为当作者知道他们的代码将被审查时,他们会更加关注:-) 一些工具已经存在,但它们要么是商业的...
VNC远程控制,用过都知道。。 没用过的,简单介绍一下: 1、远程登录 2、远程操作,观看 此工具乃代码review及监视极品工具。
忍者休闲机器人一个简单的Slack Bot for 。 打算与ReviewNinja一起部署,以方便通过进行通知。学分![SAP]( ) :red_heart: 来自github团队@ sap
种子包含一个示例 AngularJS 应用程序,并预先配置为安装 Angular 框架和一堆开发和测试工具,以获得即时的 Web 开发满足感。 种子应用程序没有做太多事情,只是展示了如何将两个控制器和视图连接在一起。 入门 要...
TYPO3审查简化TYPO3补丁的审查。 TYPO3 Review通过提供按钮来简化对TYPO3...你可以通过克隆https://github.com/Tuurlijk/TYPO3.Review并做一个简单的“流浪汉”来安装你的本地评论环境。 支持语言:English,Nederlands
ERDAS IMAGINE遥感影像处理系统是一个简单易用的遥感影像处理系统。不管您处理影像的经验是否丰富,或是否有专业的技术背景,在ERDAS IMAGINE的支持下您都能快速地从影像中提取重要信息。ERDAS IMAGINE无需做格式和...
在此文件夹中,启动一个简单的HTTP服务器,以在本地计算机上提供站点文件。 Python有一些简单的工具可以做到这一点,您甚至不需要了解Python。 对于大多数人来说,它已经安装在您的计算机上。 在终端中,检查您
Create React App入门 你好 该项目是通过。 ... 如果您对构建工具和配置选择不满意,则可以随时eject 。 此命令将从项目中删除单个构建依赖项。 相反,它将所有配置文件和传递依赖项(webpack,Ba