掌桥专利:专业的专利平台
掌桥专利
首页

一种代码走查方法及装置

文献发布时间:2024-04-18 19:52:40


一种代码走查方法及装置

技术领域

本发明涉及移动互联技术领域,尤其涉及一种代码走查方法及装置。

背景技术

大的软件项目的编码项目,通常需要多名员工分工实现,每个人完成自己负责的部分编码任务后,需要与他人进行交流自己所编写的代码的内容,也即代码走查(codewalkthrough)。代码走查的目的是交换有关代码是如何书写的思路。在代码走查的过程中,走查人员都应当向其他人来阐述自己的代码。

出于安全考虑,代码是不允许传输到可以连接互联网公网的计算机上,导致无法使用线上会议软件的屏幕共享来进行代码走查。目前的代码走查主要是通过相关人员聚集在一起进行线下讨论。然而,当一些走查人员无法出席线下集会时,线下的代码走查无法实现。

在大公司内部,通常也会采用公司内网进行屏幕共享以进行代码走查,然而,各走查人员所使用的计算机的屏幕大小可能不一致、显示窗口非全屏、显示分辨率不一致、代码编辑器设置的习惯(如:有些人使用黑色的背景,有些人使用白色的背景,代码字体大小和颜色)不一致等缺点,导致代码走查方式难以达到走查人员习惯的最佳显示方式。

发明内容

本发明实施例提供一种代码走查方法及装置,以解决代码走查必须线下聚集以及画面显示方式难以达到走查人员习惯的最佳显示方式的问题。

本说明书第一方面提供一种代码走查方法,包括:第一终端通过自身安装的第一代码编辑器打开目标编码项目的第一目标文件;在第一终端开启代码走查指令后,第一终端建立与参与代码走查的其他终端的socket连接;每隔预定时长和/或每将检测到窗口事件时,执行如下操作:从第一代码编辑器获取目标编码项目对应的第一DOM树以及第一代码编辑器的编码窗口当前显示的第一目标文件;从第一代码编辑器获取用户在第一代码编辑器中操作时产生的窗口事件的参数;将所述第一DOM树、所述第一目标文件和所述窗口事件的参数通过socket连接发送至其他终端,以用于其他终端在自身所安装的第二代码编辑器显示第一终端上正在操作的第一代码编辑器中的实时内容及实时操作。

在一些实施例中,所述窗口事件的参数包括以下至少一者:点击事件的点击点所在的行号及两边的字符位置、页面滚动事件的滚动速度、文本选择事件的起点及结束点所在的行号及两边的字符位置。

在一些实施例中,所述方法还包括:获取参与代码走查的第二终端通过socket发送的窗口事件的参数;第一终端根据所接收的第二终端发送的窗口事件的参数,在第一终端上复现第二终端上的操作。

在一些实施例中,第二终端通过socket发送的内容还包括:第二DOM树和第二目标文件;相应地,第一终端还根据所接收的第二终端发送的第二DOM树和第二目标文件在第一编辑器上打开所述第二目标文件。

本说明书第二方面提供一种代码走查方法,包括:在第二终端开启参与代码走查指令后,第二终端建立与发起代码走查的第一终端的socket连接;接收第一终端通过socket连接发送的目标编码项目对应的第一DOM树、第一目标文件和窗口事件的参数;根据所述第一DOM树、第一目标文件,在第二终端上安装的第二代码编辑器中显示编码文件,并根据所述窗口事件的参数在第二终端上复现第一终端上的操作。

在一些实施例中,所述方法还包括:在开启协同操作功能后,实时监测是否产生了窗口事件;当产生了窗口事件时,执行以下操作:从第二代码编辑器获取用户在第二代码编辑器中操作时产生的窗口事件的参数;将所述窗口事件的参数通过socket连接发送至第一终端。

在一些实施例中,当产生了窗口事件时,还包括:从第二代码编辑器获取第二代码编辑器上所显示的第二目标文件以及第二目标文件对应的编码项目对应的第二DOM树;在将所述窗口事件的参数通过socket连接发送至第一终端时,一并发送所述第二DOM树和所述第二目标文件。

本说明书第三方面提供一种代码走查装置,包括:打开单元,用于第一终端通过自身安装的第一代码编辑器打开目标编码项目的第一目标文件;第一建立单元,用于在第一终端开启代码走查指令后,第一终端建立与参与代码走查的其他终端的socket连接;第一获取单元、第二获取单元和第一发送单元,用于每隔预定时长和/或每将检测到窗口事件时执行操作;其中,第一获取单元,用于从第一代码编辑器获取目标编码项目对应的第一DOM树以及第一代码编辑器的编码窗口当前显示的第一目标文件;第二获取单元,用于从第一代码编辑器获取用户在第一代码编辑器中操作时产生的窗口事件的参数;第一发送单元,用于将所述第一DOM树、所述第一目标文件和所述窗口事件的参数通过socket连接发送至其他终端,以用于其他终端在自身所安装的第二代码编辑器显示第一终端上正在操作的第一代码编辑器中的实时内容及实时操作。

在一些实施例中,所述装置还包括:第三获取单元,用于获取参与代码走查的第二终端通过socket发送的窗口事件的参数;第一复现单元,用于第一终端根据所接收的第二终端发送的窗口事件的参数,在第一终端上复现第二终端上的操作。

在一些实施例中,第二终端通过socket发送的内容还包括:第二DOM树和第二目标文件;相应地,第一终端还根据所接收的第二终端发送的第二DOM树和第二目标文件在第一编辑器上打开所述第二目标文件。

本说明书第四方面提供一种代码走查装置,包括:第二建立单元,用于在第二终端开启参与代码走查指令后,第二终端建立与发起代码走查的第一终端的socket连接;第一接收单元,用于接收第一终端通过socket连接发送的目标编码项目对应的第一DOM树、第一目标文件和窗口事件的参数;第二复现单元,用于根据所述第一DOM树、第一目标文件,在第二终端上安装的第二代码编辑器中显示编码文件,并根据所述窗口事件的参数在第二终端上复现第一终端上的操作。

在一些实施例中,所述装置还包括:监测单元,用于在开启协同操作功能后,实时监测是否产生了窗口事件;第四获取单元和第二发送单元,用于当产生了窗口事件时,执行操作;其中,第四获取单元,用于从第二代码编辑器获取用户在第二代码编辑器中操作时产生的窗口事件的参数;第二发送单元,用于将所述窗口事件的参数通过socket连接发送至第一终端。

在一些实施例中,所述装置还包括:第五获取单元,用于当产生了窗口事件时,从第二代码编辑器获取第二代码编辑器上所显示的第二目标文件以及第二目标文件对应的编码项目对应的第二DOM树;所述第二发送单元在将所述窗口事件的参数通过socket连接发送至第一终端时,一并发送所述第二DOM树和所述第二目标文件。

本说明书第五方面提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现第一方面任一项所述的方法。

本说明书第六方面提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现第一方面任一项所述的方法。

本说明书第七方面提供一种计算机程序产品,所述计算机程序产品包括计算机程序,所述计算机程序被处理器执行时实现第一方面任一项所述的方法。

本说明书所提供的代码走查方法及装置,可以将第一终端中所显示的代码内容以及操作在其他终端上复现,从而使得参与代码走查的人员可以线上进行代码走查,无需线下聚集,并且允许参与代码走查的人员在任何地点参与代码走查而无需限制在公司局域网覆盖范围内;不受共享人员计算机屏幕大小、分辨率的影响,并不改变其他走查人员代码编辑器的设置习惯,让各走查人员在自己使用的计算机上用代码编辑器实时同步查看被走查人员计算机上的代码源文件。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:

图1示出了本说明书所提供的代码走查方法的应用场景示意图;

图2示出了本说明书所提供的代码走查方法中第一终端侧所执行的步骤的一种流程图;

图3示出了本说明书所提供的代码走查方法中第一终端侧所执行的步骤的另一种流程图;

图4示出了本说明书所提供的代码走查方法中第二终端侧所执行的步骤的一种流程图;

图5示出了本说明书所提供的代码走查方法中第二终端侧所执行的步骤的另一种流程图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚明白,下面结合附图对本发明实施例做进一步详细说明。在此,本发明的示意性实施例及其说明用于解释本发明,但并不作为对本发明的限定。

为解决代码走查必须线下聚集以及画面显示方式难以达到走查人员习惯的最佳显示方式的问题,本说明书提出为代码编辑器开发一个小插件,该插件通过自定义指令,实现代码共享的演示端(即下文的第一终端)与代码接收端(即下文的第二终端)实时传输代码内容,对代码块的选择操作实时传输,代码界面上下滚动操作实时传输,代码标注和修改的实时传输。

在一些实施例中,代码编辑器可以采用VS Code,这是一个跨平台源代码编辑器,开发者可以为其开发小插件来实现自定义功能。

代码编辑器里打开的源代码内容,可以通过获取DOM树的方法得到源代码的内容,再通过Scoket通讯传输给多台计算机,接收数据的计算机在获取到DOM数据后,在代码编辑器里打开并显示出源代码内容,实现内容实时显示。

代码编辑器里的用户点击、选择、滚动等操作事件,可以通过获取窗口的事件内容,再通过Scoket通讯传输给多台计算机,接收数据的计算机在获取到窗口事件内容后,在VS Code里同步事件内容,实现操作实时显示。

本说明书所提供的小插件可以直接用计算机上安装的代码编辑器同步共享,可使用代码提供的代码调用跳转、语法高亮等功能。

本发明中演示端计算机中数据捕获模块捕获的数据会实时的传输到接收端计算机上,同时接收端计算机上数据捕获模块捕获的数据,也可以由接收端计算机的操作用户主动触发,将接收端计算机上捕获的数据传递给演示端计算机,演示端计算机就会显示从接收端计算机传递过来的代码编辑器窗口数据内容。

图1示出了本说明书所提供的代码走查方法的应用场景示意图,其中,第一终端为代码走查的发起端,第二终端和第三终端表示参与第一终端所发起的代码走查的参与端,第一终端与第二终端建立socket连接,第一终端与第三终端建立socket连接,第一终端与第二终端、第三终端通过socket连接传输代码相关的内容。

图2示出了本说明书所提供的代码走查方法中第一终端侧所执行的步骤的流程图。如图2所示,第一终端所执行的步骤包括:

S11:通过自身安装的第一代码编辑器打开目标编码项目的第一目标文件。

S12:在第一终端开启代码走查指令后,第一终端建立与参与代码走查的其他终端的socket连接。

S13:判断是否达到预定时长间隔或者是否检测到窗口事件。当判断结果为是时,执行步骤S14、S15和S16。当判断结果为否时,继续检测。

这里所检测的窗口事件是通过第一终端的输入设备所产生的窗口事件。

在一个实施例中,S13可以只判断是否达到预定时长间隔,也即定期执行步骤S14、S15和S16。

S14:从第一代码编辑器获取目标编码项目对应的第一DOM树以及第一代码编辑器的编码窗口当前显示的第一目标文件。

第一DOM树包括各文件标识的树形组织方式。在一些实施例中,第一DOM树还可以包括各文件标识所表示的文件的内容。

第一目标文件是指各文件中当前正在代码编辑器的编码窗口显示的文件的内容。

S15:从第一代码编辑器获取用户在第一代码编辑器中操作时产生的窗口事件的参数。

当用户在第一代码编辑器中进行操作时,第一代码编辑器可以获取用户所执行的具体操作的参数。

在一些实施例中,所述窗口事件的参数包括以下至少一者:点击事件的点击点所在的行号及两边的字符位置、页面滚动事件的滚动速度、文本选择事件的起点及结束点所在的行号及两边的字符位置。

S16:将所述第一DOM树、所述第一目标文件和所述窗口事件的参数通过socket连接发送至其他终端,以用于其他终端在自身所安装的第二代码编辑器显示第一终端上正在操作的第一代码编辑器中的实时内容及实时操作。

这里的其他终端可以是指图1中的第二终端和第三终端。

通过上述步骤S11至S16,第一终端可以将自身屏幕上所执行的代码走查演示操作同步至其他终端。

本说明书所提供的代码走查方法,可以将第一终端中所显示的代码内容以及操作在其他终端上复现,从而使得参与代码走查的人员可以线上进行代码走查,无需线下聚集,并且允许参与代码走查的人员在任何地点参与代码走查而无需限制在公司局域网覆盖范围内;不受共享人员计算机屏幕大小、分辨率的影响,并不改变其他走查人员代码编辑器的设置习惯,让各走查人员在自己使用的计算机上用代码编辑器实时同步查看被走查人员计算机上的代码源文件。

在一些实施例中,如图3所示,第一终端所执行的代码走查方法还包括如下步骤S17和S18。

S17:获取参与代码走查的第二终端通过socket发送的窗口事件的参数。

S18:第一终端根据所接收的第二终端发送的窗口事件的参数,在第一终端上复现第二终端上的操作。

通过步骤S17和S18,第二终端在查看第一终端上进行的代码走查演示操作时,可以在第二终端上执行操作以参与代码走查,并将第二终端上执行的操作发送至第一终端,在第一终端上复现第二终端上的操作。由于步骤S11至S16能够使得第一终端上的操作同步至其他终端,因此,第二终端上的操作也会同步至除第一终端、第二终端以外的其他终端,从而被参与代码走查的所有人员看到。

在一些实施例中,第二终端通过socket发送的内容还包括:第二DOM树和第二目标文件;相应地,第一终端还根据所接收的第二终端发送的第二DOM树和第二目标文件在第一编辑器上打开所述第二目标文件。

该第二DOM树可以是与第一DOM树不同,可以是在第一DOM树基础上修改得到的,也可以是与第一DOM树完全不同的另一个编码项目对应的DOM树。

第二目标文件与第一目标文件可以标识相同,也即第二终端是对第一终端正在演示的编码文件继续演示;第二目标文件与第一目标文件也可以标识不同,也即第二终端打开了新的编码文件进行演示或者对第一终端所演示的文件进行了重命名。

通过图3所示的方法,在第一终端进行代码走查演示时,其他终端可以交互演示。

图4示出了本说明书所提供的代码走查方法中第二终端侧所执行的步骤的流程图。如图4所示,第二终端所执行的步骤包括:

S21:在开启参与代码走查指令后,建立与发起代码走查的第一终端的socket连接。

S22:接收第一终端通过socket连接发送的目标编码项目对应的第一DOM树、第一目标文件和窗口事件的参数。

S23:根据所述第一DOM树、第一目标文件,在第二终端上安装的第二代码编辑器中显示编码文件,并根据所述窗口事件的参数在第二终端上复现第一终端上的操作。

上述步骤S21至S23可以参考步骤S11至S16进行理解,不再赘述。

在一些实施例中,如图5所示,还包括如下步骤S24、S25和S26。

S24:在开启协同操作功能后,实时监测是否产生了窗口事件。当产生了窗口事件时,执行以下步骤S25和S26。否则,继续监测。

这里所检测的窗口事件是通过第二终端的输入设备所产生的窗口事件。

S25:从第二代码编辑器获取用户在第二代码编辑器中操作时产生的窗口事件的参数。

S26:将所述窗口事件的参数通过socket连接发送至第一终端。

上述步骤S24至S26可以参考步骤S17和S18进行理解,不再赘述。

在一些实施例中,当产生了窗口事件时,还包括如下步骤S27。

S27:从第二代码编辑器获取第二代码编辑器上所显示的第二目标文件以及第二目标文件对应的编码项目对应的第二DOM树。

相应地,在将所述窗口事件的参数通过socket连接发送至第一终端时,一并发送所述第二DOM树和所述第二目标文件。

上述步骤S27可以参考第一终端侧对应的解释,不再赘述。

本说明书提供一种代码走查装置,可以用于实现图2所示的方法。该装置包括打开单元、第一建立单元、第一获取单元、第二获取单元和第一发送单元。

打开单元,用于第一终端通过自身安装的第一代码编辑器打开目标编码项目的第一目标文件。

第一建立单元,用于在第一终端开启代码走查指令后,第一终端建立与参与代码走查的其他终端的socket连接。

第一获取单元、第二获取单元和第一发送单元,用于每隔预定时长和/或每将检测到窗口事件时执行操作;其中,第一获取单元,用于从第一代码编辑器获取目标编码项目对应的第一DOM树以及第一代码编辑器的编码窗口当前显示的第一目标文件;第二获取单元,用于从第一代码编辑器获取用户在第一代码编辑器中操作时产生的窗口事件的参数;第一发送单元,用于将所述第一DOM树、所述第一目标文件和所述窗口事件的参数通过socket连接发送至其他终端,以用于其他终端在自身所安装的第二代码编辑器显示第一终端上正在操作的第一代码编辑器中的实时内容及实时操作。

在一些实施例中,所述装置还包括:第三获取单元,用于获取参与代码走查的第二终端通过socket发送的窗口事件的参数;第一复现单元,用于第一终端根据所接收的第二终端发送的窗口事件的参数,在第一终端上复现第二终端上的操作。

在一些实施例中,第二终端通过socket发送的内容还包括:第二DOM树和第二目标文件;相应地,第一终端还根据所接收的第二终端发送的第二DOM树和第二目标文件在第一编辑器上打开所述第二目标文件。

本说明书提供一种代码走查装置,可以用于实现图4所示的方法。该装置包括第二建立单元、第一接收单元和第二复现单元。

第二建立单元用于在第二终端开启参与代码走查指令后,第二终端建立与发起代码走查的第一终端的socket连接。

第一接收单元用于接收第一终端通过socket连接发送的目标编码项目对应的第一DOM树、第一目标文件和窗口事件的参数。

第二复现单元用于根据所述第一DOM树、第一目标文件,在第二终端上安装的第二代码编辑器中显示编码文件,并根据所述窗口事件的参数在第二终端上复现第一终端上的操作。

在一些实施例中,所述装置还包括:监测单元,用于在开启协同操作功能后,实时监测是否产生了窗口事件;第四获取单元和第二发送单元,用于当产生了窗口事件时,执行操作;其中,第四获取单元,用于从第二代码编辑器获取用户在第二代码编辑器中操作时产生的窗口事件的参数;第二发送单元,用于将所述窗口事件的参数通过socket连接发送至第一终端。

在一些实施例中,所述装置还包括:第五获取单元,用于当产生了窗口事件时,从第二代码编辑器获取第二代码编辑器上所显示的第二目标文件以及第二目标文件对应的编码项目对应的第二DOM树;所述第二发送单元在将所述窗口事件的参数通过socket连接发送至第一终端时,一并发送所述第二DOM树和所述第二目标文件。

上述代码走查装置的描述及有益效果具体请参见对应方法的描述及有益效果。

本发明实施例还提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述代码走查方法。

本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述代码走查方法。

本发明实施例还提供一种计算机程序产品,所述计算机程序产品包括计算机程序,所述计算机程序被处理器执行时实现上述代码走查方法。

本申请技术方案中对数据的获取、存储、使用、处理等均符合国家法律法规的相关规定。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

技术分类

06120116330555