`
crazycow
  • 浏览: 27721 次
  • 性别: 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等审查。 简单易用:无需安装,直接使用,直接删除;所有操作点击完成。 直观可视:分析结果与源代码在同一界面显示对照,快速定位。 语言多样:...

    Ubuntu系统下安装Reviewboard详解

    Subversion(SVN)是一个常用的版本控制系统,Reviewboard支持与其集成。 ```bash sudo apt-get install patch subversion python-svn ``` ##### 3.5 安装Reviewboard 使用Python的包管理器pip安装Reviewboard: ``...

    股票复盘工具,简单的复盘工具

    "review1.5.0.6"可能代表该复盘工具的一个版本号,通常版本更新会带来性能优化、新功能添加或用户体验改进。用户在使用时,可以根据自身需求选择合适的版本,同时关注更新日志,了解新版本带来的变化。 总的来说,...

    Gitlab 代码 review 插件

    Gitlab 代码 review 插件是开发者们在进行代码审核时的一个强大工具,它专为内网环境下的 Gitlab 平台设计。该插件旨在优化源码浏览体验,提高团队协作效率,确保代码质量。在本文中,我们将深入探讨 Gitlab 代码 ...

    allegro 免费review 版本

    标题中的"allegro 免费review 版本"指的是该软件的一个精简版本——Allegro Free Viewer,它专为用户提供了查看和审阅电路设计的功能。 Allegro Free Viewer的主要特点包括: 1. **轻量级安装**:正如描述中提到的...

    FBX_Review_Win_64bit_1.4.1 2016.11.30最新

    标题"FBX_Review_Win_64bit_1.4.1 2016.11.30最新"表明这是针对Windows 64位系统的FBX Review工具的1.4.1版本,更新日期为2016年11月30日。这通常意味着该版本包含了一些性能改进、错误修复或者新功能,以提升用户的...

    Laravel开发-review

    4. **Eloquent ORM**:Laravel 的 Eloquent ORM 提供了一个简洁、直观的接口来操作数据库,使得数据库操作更加简单。通过定义模型,可以轻松地实现数据的增删改查。 5. **Blade 模板引擎**:Blade 是 Laravel 的...

    ReviewBoard Windows 安装包

    ReviewBoard是一款开源的代码审查工具,它为企业或团队提供了一个高效、可定制的代码审查平台。在Windows XP操作系统上安装ReviewBoard,需要完成一系列步骤,确保所有必需的软件组件正确配置。下面将详细介绍在...

    centos7下安装reviewboard.docx

    ReviewBoard是一款功能强大的开源代码审查工具,能够帮助开发团队优化代码质量、提高工作效率。本文将详细介绍如何在CentOS 7环境下安装和配置ReviewBoard,以及解决过程中可能遇到的一些常见问题。 #### 二、环境...

    CodeReview常見代碼問題

    例如,当一个变量未被初始化或数据库查询返回空结果时,如果没有妥善处理这些情况,就可能导致空指针异常或查询结果不准确等问题。 **解决方案**: - **防御式编程**:在使用任何对象之前,先检查其是否为空。可以...

    Activity review activity之间的数据传递

    在Android中,Intent不仅仅是启动一个Activity的手段,它也是数据传递的关键载体。通过Intent,我们可以将基本数据类型(如字符串、整数等)、Parcelable对象、Serializable对象以及额外的数据捆绑到Intent中,然后...

    Python库 | ReviewBoard-4.0.2.tar.gz

    ReviewBoard是一个强大的开源代码审查工具,它为开发者提供了一个方便、高效的方式来审查代码更改。这个资源,`ReviewBoard-4.0.2.tar.gz`,是一个针对Python环境的压缩包,包含了ReviewBoard的4.0.2版本。在本文中...

    VSCode代码查看工具

    VSCode(Visual Studio Code)是一款由微软开发的免费开源的代码编辑器,它以其强大的功能和高度可定制性深受开发者喜爱。...通过不断探索和定制,用户可以打造出一个完全符合个人需求的开发环境。

    git-code-review:一个简单的自定义git命令,用于生成执行代码的分支

    `git-code-review` 是一个基于 Git 的自定义命令工具,旨在简化代码审查流程,帮助开发者创建用于审查的分支。 `git-code-review` 的核心功能是生成执行代码审查的分支。通常,在传统的 Git 工作流中,开发者会在...

    Cohesive Zone Model Review

    - **裂纹扩展行为**:内聚区模型的一个重要特点是它能够捕捉到裂纹扩展的不同阶段。随着裂纹尖端位移的增加,裂纹面上的应力逐渐减小直至完全脱粘。这种行为可以通过不同形式的牵引分离曲线来表示。 #### 五、内聚...

    ReviewBot:一种用于对发布到Review Board实例的代码进行自动静态分析的工具

    3. **Review Board集成**:ReviewBot作为Review Board的一个插件,可以无缝对接其API,自动对提交到Review Board的代码变更进行分析,并将结果直接反馈到审查请求中。 4. **效率提升**:通过自动审查,ReviewBot...

    Android review Sharepreferences

    在Android应用开发中,SharedPreferences是保存轻量级数据的一个重要工具。它主要用于存储用户的一些配置信息或者简单数据,比如登录状态、应用主题设置等。在本篇内容中,我们将深入探讨SharedPreferences的工作...

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

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

    review.rar

    Matlab提供的各种工具箱和函数库使得编程和调试变得相对简单,对于初学者和专业人士来说都是一个很好的选择。 这个压缩包对学习和实践数据分析的人员来说非常有价值,不仅可以学习到具体的算法实现,还能了解到如何...

    Autodesk_FBX_Review

    6. **导出功能**:虽然主要用作查看工具,但FBX Review也可能提供简单的导出选项,让用户将当前视图或者整个模型导出为图像序列或视频,便于演示和分享。 7. **自定义设置**:用户可以根据个人需求调整视图设置,如...

Global site tag (gtag.js) - Google Analytics