`
crazycow
  • 浏览: 27455 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

一个简单的在线Review工具

阅读更多
背景
这段时间,公司会议室紧张,导致我们只能在没有投影仪的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关联起来。
分享到:
评论

相关推荐

    Codereview 代码审查工具(国人开发)

    一、软件特色 功能丰富:实现文件内容、度量、命名、注释、类图、Halstead等审查。 简单易用:无需安装,直接使用,直接删除;所有操作点击完成。 直观可视:分析结果与源代码在同一界面显示对照,快速定位。 语言多样:...

    svn与review border 操作

    本文档主要描述svn 与 review border (在线代码审查工具)的下载及安装 和简单使用介绍

    git-code-review:一个简单的 git 扩展,通过跟踪自上次审查以来发生的变化来帮助进行代码审查

    事实上,它不仅仅是一个镜像origin/*分支的二级分支结构,而是一个只有在你运行git-code-review脚本时才会改变的结构。 重点是告诉您自上次运行该工具以来创建或修改了哪些分支,并为您提供应该查看的提交范围和 ...

    代码审查code review.7z

    里面有三个文档,简单的讲述了一下内容。举例实用工具。 为什么要进行Code Review?  如何做Code Review? 如何使用工具进行Code Review? CheckStyle FindBugs PMD 使用工具进行Code Review的局限性 我们可以做得...

    review:[镜像]用于处理Gerrit代码评论的工具

    git-codereview工具是用于使用Gerrit的命令行工具。 下载/安装 最简单的安装方法是运行go get -u golang.org/x/review/git-codereview 。 您还可以手动git将存储库克隆到$GOPATH/src/golang.org/x/review 。 运行...

    atom-git-review:需要一种在原子中使用Gerrit的方法。 这是一个在原子上使用git-review的插件

    我也是一个很大的Gerrit用户,我的大部分互动都是通过git-review(Openstack的另一个很棒的工具)进行的。 输入atom的git-review。 该项目的目标很简单。 让我们在atom内启用git-review的用法,因此对于正常的开发...

    Amazon Review Request Tool-1.0.19.zip

    工具,您可以一次性向买家请求亚马逊产品评论。 发货后如何要求买家反馈? 过程很简单。这就是你需要做的。 -登录您的亚马逊卖家中心帐户。 -单击我们的亚马逊评论请求chrome扩展。 -选择您选择的市场。我们的扩展...

    tensor_toolbox工具箱

    突然记起matlab没法做高维矩阵运算,简单运算的可以用for循环或者降维的技巧来实现,但是当比较复杂,特别是实现一些张量运算的时候就很麻烦,因为一些简洁的公式用一片for循环代码去实现,看上去影响以后review或...

    Amazon Review Request Tool-crx插件

    使用SellerApp的免费Amazon Review Request工具一次性生成无忧的评论请求 由SellerApp提供的免费Amazon审查请求chrome扩展程序-生成无忧的审查请求在当今的数字世界中,审查不是可选的。 买家的反馈意见会在您的企业...

    Amazon Review Export-crx插件

    这是从Amazon导出产品评论的简单可靠的工具。 适用于所有亚马逊市场!!! 获取来自全球任何亚马逊平台的评论! 筛选日期范围和星星,仅获取您想要的信息! 没有更多的剪切和粘贴评论! 现在只需几秒钟即可完成数...

    eclipse辅助工具

    eclipse 打标记注释的工具,使开发人员在大型项目开发过程中对自己修改过的代码进行标注,方便后续review使用。使用方法非常简单,ALT+E进行配置 ALT+A ALT+D 进行使用。

    付费查看JAVA源码-idea-plugin-revu:IntellijIDEA的简单团队代码审查器插件

    每个团队成员都知道更好的应用程序代码 代码变得更同质 代码通常更好,不仅因为审阅者发现了潜在的问题或改进,还因为当作者知道他们的代码将被审查时,他们会更加关注:-) 一些工具已经存在,但它们要么是商业的...

    VNC远程控制(附C++源码)

    VNC远程控制,用过都知道。。 没用过的,简单介绍一下: 1、远程登录 2、远程操作,观看 此工具乃代码review及监视极品工具。

    slack-hooks:ReviewNinja是GitHub的代码审查工具,可让您放心合并合并请求

    忍者休闲机器人一个简单的Slack Bot for 。 打算与ReviewNinja一起部署,以方便通过进行通知。学分![SAP]( ) :red_heart: 来自github团队@ sap

    book-review-app:Angular.js 和 Bootstrap 中的简单书评应用

    种子包含一个示例 AngularJS 应用程序,并预先配置为安装 Angular 框架和一堆开发和测试工具,以获得即时的 Web 开发满足感。 种子应用程序没有做太多事情,只是展示了如何将两个控制器和视图连接在一起。 入门 要...

    TYPO3评论「TYPO3 Review」-crx插件

    TYPO3审查简化TYPO3补丁的审查。 TYPO3 Review通过提供按钮来简化对TYPO3...你可以通过克隆https://github.com/Tuurlijk/TYPO3.Review并做一个简单的“流浪汉”来安装你的本地评论环境。 支持语言:English,Nederlands

    鹰图ERDAS IMAGIEN

    ERDAS IMAGINE遥感影像处理系统是一个简单易用的遥感影像处理系统。不管您处理影像的经验是否丰富,或是否有专业的技术背景,在ERDAS IMAGINE的支持下您都能快速地从影像中提取重要信息。ERDAS IMAGINE无需做格式和...

    restaurant-review-app

    在此文件夹中,启动一个简单的HTTP服务器,以在本地计算机上提供站点文件。 Python有一些简单的工具可以做到这一点,您甚至不需要了解Python。 对于大多数人来说,它已经安装在您的计算机上。 在终端中,检查您

    review_slider:使用ReactJS的简单审查滑块

    Create React App入门 你好 该项目是通过。 ... 如果您对构建工具和配置选择不满意,则可以随时eject 。 此命令将从项目中删除单个构建依赖项。 相反,它将所有配置文件和传递依赖项(webpack,Ba

Global site tag (gtag.js) - Google Analytics