代码处理方法、装置、电子设备及存储介质与流程

专利2024-05-08  77



1.本发明涉及计算机技术领域,尤其涉及一种代码处理方法、装置、电子设备及存储介质。


背景技术:

2.随着计算机技术的快速发展,各种开发语言逐渐增多。比如,谷歌开发的计算机编程语言dart,其被用于web、服务器、移动应用和物联网等领域的开发。还有开源的构建用户界面(user interface,ui)的工具包flutter,其可以帮助开发人员通过一套代码库高效构建多平台应用,支持移动、web、桌面和嵌入式平台。随之发展起来的是fair代码,fair是为flutter设计的动态化框架,通过fair编译工具对原生dart源文件的自动转化,可以使项目获得动态更新微件(widget)的能力。
3.那么,在开发人员进行代码编写时,如何有效地对代码文件进行语法检测,降低代码编写难度,提高开发效率,是本领域技术人员急需解决的技术问题。


技术实现要素:

4.本发明实施例提供一种代码处理方法、装置、电子设备及存储介质,以降低代码编写难度,提高开发效率。
5.为解决上述技术问题,本发明提供如下技术方案:
6.第一方面,提供一种代码处理方法,应用于云编辑器服务端,所述代码处理方法包括:
7.接收云编辑器客户端发送的代码更新请求,所述代码更新请求中携带用户输入的目标代码内容;
8.基于所述目标代码内容,更新目标代码文件;
9.对所述目标代码文件进行语法检测,获得语法检测结果;
10.将所述语法检测结果返回给所述云编辑器客户端,以通过所述云编辑器客户端输出所述语法检测结果。
11.在本发明的一种具体实施方式中,所述语法检测结果包括第一语法检测结果,所述对所述目标代码文件进行语法检测,获得语法检测结果,包括:
12.利用检测插件对所述目标代码文件进行语法检测,确定可替换为语法糖的代码及相应的语法糖描述信息,获得所述第一语法检测结果。
13.在本发明的一种具体实施方式中,所述利用检测插件对所述目标代码文件进行语法检测,确定可替换为语法糖的代码及相应的语法糖描述信息,获得所述第一语法检测结果,包括:
14.利用检测插件将所述目标代码文件进行树化处理,获得抽象语法树;
15.利用所述检测插件遍历所述抽象语法树,确定可替换为语法糖的代码及相应的语法糖描述信息,获得所述第一语法检测结果。
16.在本发明的一种具体实施方式中,所述抽象语法树包括类节点、方法节点、条件节点,所述利用所述检测插件遍历所述抽象语法树,确定可替换为语法糖的代码及相应的语法糖描述信息,获得所述第一语法检测结果,包括:
17.利用所述检测插件对所述抽象语法树按照所述类节点、所述方法节点和所述条件节点的顺序进行遍历,确定可替换为语法糖的代码及相应的语法糖描述信息,获得所述第一语法检测结果。
18.在本发明的一种具体实施方式中,所述利用所述检测插件对所述抽象语法树按照所述类节点、所述方法节点和所述条件节点的顺序进行遍历,确定可替换为语法糖的代码及相应的语法糖描述信息,获得所述第一语法检测结果,包括:
19.利用所述检测插件对所述抽象语法树的所述类节点进行遍历;
20.针对遍历到的每个所述类节点,确定当前类节点中是否存在插件检测注解;
21.如果存在所述插件检测注解,则对所述当前类节点下的所述方法节点进行遍历;
22.针对遍历到的每个所述方法节点,确定当前方法节点中是否存在创建界面元素描述和配置方法;
23.如果存在所述创建界面元素描述和配置方法,则对所述当前方法节点下的所述条件节点进行遍历;
24.针对遍历到的每个所述条件节点,确定当前条件节点中是否存在if条件语句;
25.如果存在所述if条件语句,则将所述if条件语句对应的代码确定为可替换为语法糖的代码;
26.对所述当前条件节点中的条件内容进行遍历,并确定遍历到的每个所述条件内容对应的语法糖描述信息;
27.将对所述抽象语法树遍历后得到的可替换为语法糖的代码以及相应的语法糖描述信息进行汇总,获得所述第一语法检测结果。
28.在本发明的一种具体实施方式中,所述确定遍历到的每个所述条件内容对应的语法糖描述信息,包括:
29.针对遍历到的每个所述条件内容,如果当前条件内容存在包含二进制运算符的表达式,则根据所述包含二进制运算符的表达式对应的第一语法糖,确定所述当前条件内容对应的语法糖描述信息;
30.如果所述当前条件内容存在调用包含方法的对象,且所述对象的数据类型为列表类型,则根据所述列表类型对应的第二语法糖,确定所述当前条件内容对应的语法糖描述信息;
31.如果所述当前条件内容存在除所述包含二进制运算符的表达式和所述调用包含方法的对象且所述对象的数据类型为列表类型外的其他内容,则根据预设的第三语法糖,确定所述当前条件内容对应的语法糖描述信息。
32.在本发明的一种具体实施方式中,所述利用检测插件对所述目标代码文件进行语法检测,确定可替换为语法糖的代码及相应的语法糖描述信息,获得所述第一语法检测结果,包括:
33.通过分析服务将所述目标代码文件的路径发送给检测插件,以使所述检测插件对所述目标代码文件进行语法检测,确定可替换为语法糖的代码及相应的语法糖描述信息,
得到所述第一语法检测结果;
34.接收所述分析服务返回的所述检测插件的所述第一语法检测结果。
35.在本发明的一种具体实施方式中,所述语法检测结果包括第二语法检测结果,所述对所述目标代码文件进行语法检测,获得语法检测结果,包括:
36.利用分析服务对所述目标代码文件进行基础语法检测,获得所述第二语法检测结果。
37.在本发明的一种具体实施方式中,在所述获得语法检测结果之后,还包括:
38.对所述语法检测结果进行缓存处理。
39.在本发明的一种具体实施方式中,所述将所述语法检测结果返回给所述云编辑器客户端,包括:
40.在接收到所述云编辑客户端发送的结果获取请求的情况下,将缓存的所述语法检测结果返回给所述云编辑器客户端。
41.在本发明的一种具体实施方式中,在所述对所述语法检测结果进行缓存处理之后,还包括:
42.在所述目标代码文件有更新的情况下,重复执行所述对所述目标代码文件进行语法检测,获得语法检测结果的步骤;
43.对缓存的所述语法检测结果进行更新。
44.第二方面,提供一种代码处理装置,运行于云编辑器服务端,所述代码处理装置包括:
45.接收单元,用于接收云编辑器客户端发送的代码更新请求,所述代码更新请求中携带用户输入的目标代码内容;
46.第一更新单元,用于基于所述目标代码内容,更新目标代码文件;
47.获得单元,用于对所述目标代码文件进行语法检测,获得语法检测结果;
48.返回单元,用于将所述语法检测结果返回给所述云编辑器客户端,以通过所述云编辑器客户端输出所述语法检测结果。
49.第三方面,提供一种电子设备,包括:处理器、存储器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如第一方面所述的代码处理方法的步骤。
50.第四方面,提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如第一方面所述的代码处理方法的步骤。
51.第五方面,提供一种计算机程序产品,所述计算机程序产品包括计算机指令,所述计算机指令存储在计算机可读存储介质中,且适于由处理器读取并执行,以使得具有所述处理器的电子设备执行如第一方面所述的代码处理方法的步骤。
52.应用本发明实施例所提供的技术方案,云编辑器服务端在接收到云编辑器客户端发送的代码更新请求时,基于代码更新请求中携带的用户输入的目标代码内容,更新目标代码文件,对目标代码文件进行语法检测,获得语法检测结果,将语法检测结果返回给云编辑器客户端,云编辑器客户端可以将语法检测结果输出给用户,进而用户根据语法检测结果即可确定是否要对编写的代码进行相应修改。通过云编辑器服务端与云编辑器客户端的交互,可以有效地对代码文件进行语法检测,减小代码编译时的报错概率,降低代码编写难
度,提高开发效率。
53.应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本发明。
附图说明
54.图1为本发明实施例中一种代码处理方法的实施流程图;
55.图2为本发明实施例中一种语法检测过程示意图;
56.图3为本发明实施例中代码处理具体过程示意图;
57.图4为本发明实施例中一种代码处理装置的结构示意图;
58.图5为本发明实施例中一种电子设备的结构示意图。
具体实施方式
59.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
60.本发明的核心是提供一种代码处理方法,该方法可以应用于云编辑器服务端,云编辑器服务端可以与云编辑器客户端交互,获得用户通过云编辑器客户端输入的目标代码内容,并向云编辑器客户端返回相应的语法检测结果。
61.云编辑器服务端在接收到云编辑器客户端发送的代码更新请求时,基于代码更新请求中携带的用户输入的目标代码内容,更新目标代码文件,对目标代码文件进行语法检测,获得语法检测结果,将语法检测结果返回给云编辑器客户端,云编辑器客户端可以将语法检测结果输出给用户,用户根据语法检测结果即可确定是否要对编写的代码进行相应修改。通过云编辑器服务端与云编辑器客户端的交互,可以有效地对代码文件进行语法检测,减小代码编译时的报错概率,降低代码编写难度,提高开发效率。
62.参见图1所示,为本发明实施例所提供的一种代码处理方法的实施流程图,该方法可以包括以下步骤:
63.s110:接收云编辑器客户端发送的代码更新请求。
64.代码更新请求中携带用户输入的目标代码内容。
65.在本发明实施例中,云编辑器客户端可以为用户提供代码编写界面,用户通过代码编写界面在云编辑器客户端中进行代码编写。云编辑器客户端可以对用户的输入操作进行检测,当检测到用户对完成输入控件的选择操作时,认为用户完成输入操作,可以将携带用户输入的目标代码内容的代码更新请求发送给云编辑器服务端。或者,云编辑器客户端在检测到用户的输入操作空闲时长达到设定的一个时长阈值时,认为用户完成输入操作,可以将携带用户输入的目标代码内容的代码更新请求发送给云编辑器服务端。本发明云编辑器客户端还可以通过其它任意方式触发发送代码更新请求,例如,在检测到用户输入的字符数量大于预设数量时,将携带用户输入的目标代码内容的代码更新请求发送给云编辑器服务端。
66.云编辑器服务端接收到云编辑器客户端发送的代码更新请求后,即可获得该代码
更新请求中携带的用户输入的目标代码内容。
67.s120:基于目标代码内容,更新目标代码文件。
68.用户通过云编辑器客户端可以对已有代码文件进行代码编写,输入目标代码内容,还可以新建代码文件进行代码编写,输入目标代码内容。云编辑器服务端在接收到云编辑器客户端发送的代码更新请求时,即可获得用户输入的目标代码内容。
69.云编辑器服务端基于目标代码内容,可以更新目标代码文件。目标代码文件是用户输入的目标代码内容所针对的代码文件。代码更新请求中还可以携带目标代码内容在目标代码文件中的偏移信息,云编辑器服务端根据该偏移信息可以确定目标代码内容在目标代码文件中的位置,从而对目标代码文件进行更新。
70.如果目标代码内容是在已有代码文件基础上进行的编写,则云编辑器服务端得到目标代码内容后,在文件库中查找到该已有代码文件,将查找到的已有代码文件确定为目标代码文件,然后将目标代码文件中与目标代码内容相对应部分进行更新即可。
71.如果目标代码内容是在新建代码文件基础上进行的编写,则云编辑器服务端得到目标代码内容后,在文件库中保存包含目标代码内容的新建代码文件,将该新建代码文件确定为目标代码文件。其中,新建代码文件可以由用户创建,也可以由云编辑器服务端基于代码更新请求中的代码创建。
72.云编辑器服务端在接收到云编辑器客户端发送的代码更新请求后,基于代码更新请求中携带的用户输入的目标代码内容,更新目标代码文件,可以保证云编辑器服务端中代码文件中代码与云编辑器客户端的代码的一致性。
73.s130:对目标代码文件进行语法检测,获得语法检测结果。
74.云编辑器服务端接收到云编辑器客户端发送的代码更新请求,并基于代码更新请求中携带的目标代码内容,更新目标代码文件后,可以对目标代码文件进行语法检测。如可以根据目标代码文件包含的语法类型,使用各语法类型对应的语法检测规则进行语法检测。
75.可以理解的是,一个代码文件中不同位置的代码可能存在一定的依赖关系,如果单纯对代码文件中的部分代码进行语法检测,将无法得到准确的语法检测结果。本发明实施例在获得目标代码内容后,并不是直接对目标代码内容进行语法检测,而是对目标代码内容所基于的目标代码文件进行语法检测,可以得到更为准确的语法检测结果。
76.s140:将语法检测结果返回给云编辑器客户端,以通过云编辑器客户端输出语法检测结果。
77.云编辑器服务端对目标代码文件进行语法检测,获得语法检测结果后,可以将语法检测结果返回给云编辑器客户端。云编辑器客户端可以将语法检测结果输出给用户,用户根据语法检测结果即可确定是否要修改相应代码。
78.应用本发明实施例所提供的方法,云编辑器服务端在接收到云编辑器客户端发送的代码更新请求时,基于代码更新请求中携带的用户输入的目标代码内容,更新目标代码文件,对目标代码文件进行语法检测,获得语法检测结果,将语法检测结果返回给云编辑器客户端,云编辑器客户端可以将语法检测结果输出给用户,进而用户根据语法检测结果即可确定是否要对编写的代码进行相应修改。通过云编辑器服务端与云编辑器客户端的交互,可以有效地对代码文件进行语法检测,减小代码编译时的报错概率,降低代码编写难
度,提高开发效率。
79.在本发明的一个实施例中,语法检测结果可以包括第一语法检测结果,对目标代码文件进行语法检测,获得语法检测结果,可以包括以下步骤:
80.利用检测插件对目标代码文件进行语法检测,确定可替换为语法糖的代码及相应的语法糖描述信息,获得第一语法检测结果。
81.语法糖(syntactic sugar),也称为糖衣语法,指计算机语言中添加的某种语法,这种语法对语言的功能并没有影响,但是更方便使用。通常来说使用语法糖能够增加代码的可读性,从而减少代码编译出错的概率。
82.在本发明实施例中,可以预先获得针对语法糖的检测插件,在云编辑器服务端根据预设的模板要求配置检测插件的相关信息,提供针对语法糖的语法检测能力。比如检测插件为fair插件,可以用于针对fair语法糖的语法检测。即可以通过模版代码引用检测插件,在工程项目创建时将模版代码复制到用户工程目录下,在远程仓库拉取依赖的检测插件代码,将拉取到的检测插件代码下载到云编辑器服务端的本地缓存中。
83.以检测插件为fair插件为例,可以在云编辑器服务端的模版工程pubspec.yaml中配置fair插件所在的远程仓库的路径,在云编辑器服务端的模版工程analysis_options.yaml中配置fair插件的名称。
84.执行flutter pub get之后,会将远程仓库中的fair插件代码拉取到云编辑器服务端的本地缓存,云编辑器服务端中的dart服务(dart server)启动时会检测analysis_options.yaml中配置的fair插件的名称,将fair插件的文件夹复制到云编辑器服务端中的/users/用户名/.dartserver/.plugin_manager/文件夹下,并执行plugin.dart文件内的main()方法。至此完成fair插件的前置工作流程。
85.云编辑器服务端利用检测插件对目标代码文件进行语法检测,可以确定出可替换为语法糖的代码及相应的语法糖描述信息,进而获得第一语法检测结果。语法糖描述信息可以包括可替换为语法糖的代码替换为相应语法糖代码的替换提示信息以及相应语法糖代码信息。
86.获得第一语法检测结果后,可以将第一语法检测结果返回给云编辑器客户端,通过云编辑器客户端输出第一语法检测结果,这样方便用户了解到编写代码中哪些代码可替换为语法糖,并在用户指向相应代码时可以查看到相应的语法糖描述信息,用户根据语法糖描述信息可以确定是否对相应代码进行修改及如何使用相应的语法糖替换当前代码。可以有效规范用户对语法糖的使用,可以减小代码编译时的报错概率,降低代码编写难度,提高开发效率。
87.在本发明的一个实施例中,利用检测插件对目标代码文件进行语法检测,确定可替换为语法糖的代码及相应的语法糖描述信息,获得第一语法检测结果,可以包括以下步骤:
88.步骤一:利用检测插件将目标代码文件进行树化处理,获得抽象语法树;
89.步骤二:利用检测插件遍历抽象语法树,确定可替换为语法糖的代码及相应的语法糖描述信息,获得第一语法检测结果。
90.为方便描述,将上述两个步骤结合起来进行说明。
91.在本发明实施例中,云编辑器服务端基于目标代码内容,更新目标代码文件后,可
以利用检测插件将目标代码文件进行树化处理,获得抽象语法树。抽象语法树(abstract syntax tree,ast),是源代码语法结构的一种抽象表示,以树状的形式表现编程语言的语法结构,树上的每个节点都表示源代码中的一种结构。
92.利用检测插件可以对抽象语法树的各节点进行遍历。如果检测插件为fair插件,则可以通过继承class_fairvisitor extends recursiveastvisitor,实现遍历能力。遍历后,可以确定可替换为语法糖的代码及相应的语法糖描述信息,获得第一语法检测结果。
93.可以预先设定可替换为语法糖的代码的代码特征。在对抽象语法树的各节点进行遍历时,可以根据遍历到的各节点对应的代码的代码特征,确定哪些代码是可替换为语法糖的代码,并根据代码内容,确定相应的语法糖描述信息。
94.将目标代码文件进行树化处理,再对获得的抽象语法树进行遍历,可以提高语法检测效率。
95.在本发明的一个实施例中,抽象语法树包括类节点、方法节点、条件节点,利用检测插件遍历抽象语法树,确定可替换为语法糖的代码及相应的语法糖描述信息,获得第一语法检测结果,可以包括以下步骤:
96.利用检测插件对抽象语法树按照类节点、方法节点和条件节点的顺序进行遍历,确定可替换为语法糖的代码及相应的语法糖描述信息,获得第一语法检测结果。
97.在本发明实施例中,抽象语法树可以包括类节点、方法节点、条件节点,方法节点为类节点的叶子节点,条件节点为方法节点的叶子节点。利用检测插件将目标代码文件进行树化处理,获得抽象语法树后,进一步可以利用检测插件对抽象语法树按照类节点、方法节点和条件节点的顺序进行遍历,确定可替换为语法糖的代码及相应的语法糖描述信息,获得第一语法检测结果。
98.按照类节点、方法节点和条件节点的顺序对抽象语法树进行有序遍历,可以避免漏检情况的发生,提高语法检测效率。
99.在本发明的一个实施例中,利用检测插件对抽象语法树按照类节点、方法节点和条件节点的顺序进行遍历,确定可替换为语法糖的代码及相应的语法糖描述信息,获得第一语法检测结果,可以包括以下步骤:
100.第一个步骤:利用检测插件对抽象语法树的类节点进行遍历;
101.第二个步骤:针对遍历到的每个类节点,确定当前类节点中是否存在插件检测注解;
102.第三个步骤:如果存在插件检测注解,则对当前类节点下的方法节点进行遍历;
103.第四个步骤:针对遍历到的每个方法节点,确定当前方法节点中是否存在创建界面元素描述和配置方法;
104.第五个步骤:如果存在创建界面元素描述和配置方法,则对当前方法节点下的条件节点进行遍历;
105.第六个步骤:针对遍历到的每个条件节点,确定当前条件节点中是否存在if条件语句;
106.第七个步骤:如果存在if条件语句,则将if条件语句对应的代码确定为可替换为语法糖的代码;
107.第八个步骤:对当前条件节点中的条件内容进行遍历,并确定遍历到的每个条件
内容对应的语法糖描述信息;
108.第九个步骤:将对抽象语法树遍历后得到的可替换为语法糖的代码以及相应的语法糖描述信息进行汇总,获得第一语法检测结果。
109.为方便描述,将上述几个步骤结合起来进行说明。
110.如图2所示,云编辑器服务端利用检测插件对目标代码文件进行树化处理,获得抽象语法树后,进一步可以利用检测插件对抽象语法树的类节点进行遍历。
111.抽象语法树可以有多个类节点。针对遍历到的每个类节点,可以确定当前类节点中是否存在插件检测注解,如@fairpatch注解。当前类节点为当前操作所针对的类节点。
112.如果当前类节点中存在插件检测注解,则表示需要进行针对语法糖的语法检测,可以继续对当前类节点下的方法节点进行遍历。每个类节点下可以有多个方法节点。如果当前类节点中不存在插件检测注解,则表示不需要进行针对语法糖的语法检测,可以忽略当前类节点及其下各节点。
113.针对遍历到的每个方法节点,可以确定当前方法节点中是否存在创建界面元素描述和配置方法,即build方法,build方法用于创建微件(widget),widget在flutter中的含义是对元素(element)的描述和配置。当前方法节点为当前操作所针对的方法节点。
114.如果当前方法节点中存在创建界面元素描述和配置方法,则可以进一步对当前方法节点下的条件节点进行遍历。如果当前方法节点中不存在创建界面元素描述和配置方法,则可以忽略当前方法节点及其下各节点。
115.针对遍历到的每个条件节点,可以确定当前条件节点是否存在if条件语句。当前条件节点为当前操作所针对的条件节点。
116.如果当前条件节点存在if条件语句,则可以将if条件语句对应的代码确定为可替换为语法糖的代码。进而可以对当前条件节点中的条件内容,即condition内容进行遍历,并确定遍历到的每个条件内容对应的语法糖描述信息。
117.具体的,针对遍历到的每个条件内容,如果当前条件内容存在包含二进制运算符的表达式,则可以根据包含二进制运算符的表达式对应的第一语法糖,确定当前条件内容对应的语法糖描述信息;如果当前条件内容存在调用包含方法的对象,且对象的数据类型为列表类型,则可以根据列表类型对应的第二语法糖,确定当前条件内容对应的语法糖描述信息;如果当前条件内容存在除包含二进制运算符的表达式和调用包含方法的对象且对象的数据类型为列表类型外的其他内容,则可以根据预设的第三语法糖,确定当前条件内容对应的语法糖描述信息。
118.当前条件内容是指当前操作所针对的条件内容。
119.上述过程可以按照递进顺序进行。
120.可以先确定当前条件内容是否存在包含二进制运算符的表达式,即当前条件内容是否存在binary内容,如果存在包含二进制运算符的表达式,则可以根据包含二进制运算符的表达式对应的第一语法糖,确定当前条件内容对应的语法糖描述信息。包含二进制运算符的表达式对应的第一语法糖可以预先设定,如可以为sugar.ifequalbool,即可以得到sugar.ifequalbool描述信息。
121.如果当前条件内容不存在包含二进制运算符的表达式,则可以确定当前条件内容是否存在调用包含方法的对象,即当前条件内容是否存在contains方法调用内容。如果存
在调用包含方法的对象,且对象的数据类型为列表类型,则可以根据列表类型对应的第二语法糖,确定当前条件内容对应的语法糖描述信息。列表类型对应的第二语法糖可以预先设定,如可以为sugar.ifrange,即可以得到sugar.ifrange描述信息。
122.如果当前条件内容不存在调用包含方法的对象或存在调用包含方法的对象但对象的数据类型不是列表类型,即存在除包含二进制运算符的表达式和调用包含方法的对象且对象的数据类型为列表类型外的其他内容,则可以根据预设的第三语法糖,确定当前条件内容对应的语法糖描述信息。第三语法糖是预先设定的,如可以为sugar.ifequal,即可以得到sugar.ifequal描述信息。
123.云编辑器服务端利用检测插件对抽象语法树按照上述过程进行遍历,可以得到多条可替换为语法糖的代码以及相应的语法糖描述信息,将得到的可替换为语法糖的代码以及相应的语法糖描述信息进行汇总,可以获得较为完整的第一语法检测结果。
124.在本发明的一个实施例中,利用检测插件对目标代码文件进行语法检测,确定可替换为语法糖的代码及相应的语法糖描述信息,获得第一语法检测结果,可以包括以下步骤:
125.步骤一:通过分析服务将目标代码文件的路径发送给检测插件,以使检测插件对目标代码文件进行语法检测,确定可替换为语法糖的代码及相应的语法糖描述信息,得到第一语法检测结果;
126.步骤二:接收分析服务返回的检测插件的第一语法检测结果。
127.为方便描述,将上述两个步骤结合起来进行说明。
128.在本发明实施例中,云编辑器服务端可以部署分析服务,如analysis server,其为开源的为dart/flutter代码提供代码分析和检测的服务。
129.云编辑器服务端在基于目标代码内容,更新目标代码文件之后,可以与分析服务同步代码,分析服务可以将目标代码文件的路径发送给检测插件,检测插件通过目标代码文件的路径可以获取到目标代码文件,对目标代码文件进行语法检测,确定可替换为语法糖的代码及相应的语法糖描述信息,得到第一语法检测结果,然后将第一语法检测结果包装成可与分析服务通信的数据格式返回给分析服务。分析服务再将检测插件的第一语法检测结果返回给云编辑器服务端。
130.云编辑器服务端、分析服务和检测插件之间可以通过套接字(socket)通信进行交互。
131.在本发明实施例中,如果检测插件为fair插件,其可以是利用analysis server开放的serverplugin进行定制开发的。
132.具体的,可以通过以下步骤开发fair插件:
133.1)进行fair插件注册;
134.2)继承serverplugin,实现定制化插件,包括自定义插件名称、版本号以及要被插件所检测的代码文件范围。
135.具体的,fair插件可以通过以下步骤运行:
136.3)接收analysis server回调的代码内容有变化的代码文件的路径;
137.4)监听analysis server的分析结果,analysis server会将代码文件转换成多个编译单元,每个编译单元包含对应代码的信息,比如代码行号、列号、内容等,将语法检测结
果结合对应代码的信息,拼接成能够回传给analysis server的信息;
138.5)将语法检测结果回传给analysis server。
139.云编辑器服务端通过分析服务与检测插件交互,方便获取第一语法检测结果。
140.在本发明的一个实施例中,在获得语法检测结果之后,该方法还可以包括以下步骤:
141.对语法检测结果进行缓存处理。
142.云编辑器服务端对目标代码文件进行语法检测,在获得语法检测结果后,可以对语法检测结果进行缓存处理。以在需要将语法检测结果返回给云编辑器客户端时可以从缓存中读取相应的语法检测结果。
143.在本发明的一个实施例中,将语法检测结果返回给云编辑器客户端,可以包括以下步骤:
144.在接收到云编辑器客户端发送的结果获取请求的情况下,将缓存的语法检测结果返回给云编辑器客户端。
145.用户通过云编辑器客户端进行代码编写,在编译之前想要得到语法检测结果,可以通过云编辑器客户端向云编辑器服务端发送结果获取请求。云编辑器服务端在接收到云编辑器客户端发送的结果获取请求的情况下,可以将缓存的语法检测结果返回给云编辑器客户端。这样云编辑器客户端可以将语法检测结果输出给用户,用户根据语法检测结果可以确定是否要对相应代码进行修改,修改后再对代码进行编译,将有效减小编译报错概率。
146.当然,云编辑器服务端在检测到缓存的语法检测结果未更新的时长达到设定的一个时长阈值时,可以认为用户已完成代码编写,可以将缓存的语法检测结果返回给云编辑器客户端,以及时输出给用户,方便用户的进一步操作。
147.在本发明的一个实施例中,在对语法检测结果进行缓存处理之后,该方法还可以包括以下步骤:
148.在目标代码文件有更新的情况下,重复执行对目标代码文件进行语法检测,获得语法检测结果的步骤;
149.对缓存的语法检测结果进行更新。
150.可以理解的是,用户通过云编辑器客户端进行代码编写可以是一个持续的过程,在一个时间段内,云编辑器服务端可能会接收到云编辑器客户端发送的多个代码更新请求。比如,在时间点a,云编辑器服务端接收到云编辑器客户端发送的代码更新请求,该代码更新请求中携带用户输入的代码内容a,在时间点b,云编辑器服务端接收到云编辑器客户端发送的代码更新请求,该代码更新请求中携带用户输入的代码内容b。其中,代码内容a和代码内容b均为针对目标代码文件进行编写的代码。
151.云编辑器服务端每接收到云编辑器客户端发送的代码更新请求,均会基于代码更新请求中携带的目标代码内容,更新目标代码文件。即如上例中,在时间点a,云编辑器服务端会基于代码内容a更新目标代码文件,在时间点b,云编辑器服务端会基于代码内容b再次更新目标代码文件。
152.在目标代码文件有更新的情况下,可以对目标代码文件进行语法检测,获得第一语法检测结果。只要目标代码文件有更新,就会对目标代码文件进行语法检测,这样将得到多个语法检测结果。
153.每得到新的语法检测结果,即对缓存的语法检测结果进行更新,使得缓存的语法检测结果总是对应于最后更新的目标代码文件,这样返回给云编辑器客户端的语法检测结果总是最新的,是与用户最新输入的代码内容相对应的,有助于提高用户的开发效率。
154.在本发明的一个实施例中,语法检测结果可以包括第二语法检测结果,对目标代码文件进行语法检测,获得语法检测结果,可以包括以下步骤:
155.利用分析服务对目标代码文件进行基础语法检测,获得第二语法检测结果。
156.在本发明实施例中,云编辑器服务端在更新目标代码文件之后,可以向分析服务同步代码,分析服务可以对目标代码文件进行变量大小写是否正确、代码拼写是否正确等基础语法检测,如进行dart/flutter语法检测,得到第二语法检测结果返回给云编辑器服务端。
157.云编辑器服务端获得第二语法检测结果后,将第二语法检测结果返回给云编辑器客户端,进而云编辑器客户端可以将第二语法检测结果输出给用户,用户根据第二语法检测结果可以了解到代码错误并进行修改。
158.云编辑器服务端利用分析服务对目标代码文件进行基础语法检测可以实时进行,得到的第二语法检测结果可以为同步检测结果,及时返回给云编辑器客户端,方便用户及时了解到编写的代码中存在的问题。
159.为方便理解,以图3所示的代码处理具体过程为例,对本发明实施例进行说明。
160.云编辑器客户端检测到用户输入的目标代码内容后,向云编辑器服务端发送代码更新请求,代码更新请求中携带目标代码内容;
161.云编辑器服务端基于目标代码内容,更新目标代码文件;
162.云编辑器服务端通过socket通信向分析服务同步代码;
163.分析服务将目标代码文件的路径发送给检测插件;
164.检测插件将目标代码文件进行树化处理,对获得的抽象语法树进行遍历,确定可替换为语法糖的代码及相应的语法糖描述信息,得到第一语法检测结果;
165.检测插件将第一语法检测结果包装成可与分析服务通信的数据格式返回给分析服务;
166.分析服务通过socket通信将第一语法检测结果返回给云编辑器服务端;
167.云编辑器服务端缓存第一语法检测结果;
168.云编辑器客户端向云编辑器服务端发送结果获取请求;
169.云编辑器服务端将缓存的第一语法检测结果返回给云编辑器客户端;
170.云编辑器客户端刷新界面,输出第一语法检测结果,提示用户将相应代码按照语法糖描述信息进行修改;
171.另外,云编辑器服务端通过socket通信向分析服务同步代码后,分析服务对目标代码文件进行基础语法检测,得到第二语法检测结果;
172.分析服务通过socket通信将第二语法检测结果返回给云编辑器服务端;
173.云编辑器服务端将第二语法检测结果返回给云编辑器客户端;
174.云编辑器客户端刷新界面,输出第二语法检测结果,提示用户修改相应代码。
175.本发明实施例中,云编辑器服务端利用检测插件对目标代码文件进行语法检测,确定可替换为语法糖的代码及相应的语法糖描述信息,利用分析服务对目标代码文件进行
基础语法检测,并将语法检测结果返回给云编辑器客户端,方便用户及时进行代码修改,提高用户开发效率,可以有效较少用户编写代码时编译报错的概率,而且利用检测插件进行语法检测,可以对用户编写的代码中使用的语法糖进行约束。
176.相应于上述的方法实施例,本发明实施例还提供了一种代码处理装置,运行于云编辑器服务端,下文描述的代码处理装置与上文描述的代码处理方法可相互对应参照。
177.参见图4所示,代码处理装置400可以包括以下单元:
178.接收单元410,用于接收云编辑器客户端发送的代码更新请求,代码更新请求中携带用户输入的目标代码内容;
179.第一更新单元420,用于基于目标代码内容,更新目标代码文件;
180.获得单元430,用于对目标代码文件进行语法检测,获得语法检测结果;
181.返回单元440,用于将语法检测结果返回给云编辑器客户端,以通过云编辑器客户端输出语法检测结果。
182.应用本发明实施例所提供的装置,在接收到云编辑器客户端发送的代码更新请求时,基于代码更新请求中携带的用户输入的目标代码内容,更新目标代码文件,对目标代码文件进行语法检测,获得语法检测结果,将语法检测结果返回给云编辑器客户端,云编辑器客户端可以将语法检测结果输出给用户,进而用户根据语法检测结果即可确定是否要对编写的代码进行相应修改。通过与云编辑器客户端的交互,可以有效地对代码文件进行语法检测,减小代码编译时的报错概率,降低代码编写难度,提高开发效率。
183.在本发明的一种具体实施方式中,语法检测结果包括第一语法检测结果,获得单元430,用于:
184.利用检测插件对目标代码文件进行语法检测,确定可替换为语法糖的代码及相应的语法糖描述信息,获得第一语法检测结果。
185.在本发明的一种具体实施方式中,获得单元430,用于:
186.利用检测插件将目标代码文件进行树化处理,获得抽象语法树;
187.利用检测插件遍历抽象语法树,确定可替换为语法糖的代码及相应的语法糖描述信息,获得第一语法检测结果。
188.在本发明的一种具体实施方式中,抽象语法树包括类节点、方法节点、条件节点,获得单元430,用于:
189.利用检测插件对抽象语法树按照类节点、方法节点和条件节点的顺序进行遍历,确定可替换为语法糖的代码及相应的语法糖描述信息,获得第一语法检测结果。
190.在本发明的一种具体实施方式中,获得单元430,用于:
191.利用检测插件对抽象语法树的类节点进行遍历;
192.针对遍历到的每个类节点,确定当前类节点中是否存在插件检测注解;
193.如果存在插件检测注解,则对当前类节点下的方法节点进行遍历;
194.针对遍历到的每个方法节点,确定当前方法节点中是否存在创建界面元素描述和配置方法;
195.如果存在创建界面元素描述和配置方法,则对当前方法节点下的条件节点进行遍历;
196.针对遍历到的每个条件节点,确定当前条件节点中是否存在if条件语句;
197.如果存在if条件语句,则将if条件语句对应的代码确定为可替换为语法糖的代码;
198.对当前条件节点中的条件内容进行遍历,并确定遍历到的每个条件内容对应的语法糖描述信息;
199.将对抽象语法树遍历后得到的可替换为语法糖的代码以及相应的语法糖描述信息进行汇总,获得第一语法检测结果。
200.在本发明的一种具体实施方式中,获得单元430,用于:
201.针对遍历到的每个条件内容,如果当前条件内容存在包含二进制运算符的表达式,则根据包含二进制运算符的表达式对应的第一语法糖,确定当前条件内容对应的语法糖描述信息;
202.如果当前条件内容存在调用包含方法的对象,且对象的数据类型为列表类型,则根据列表类型对应的第二语法糖,确定当前条件内容对应的语法糖描述信息;
203.如果当前条件内容存在除包含二进制运算符的表达式和调用包含方法的对象且对象的数据类型为列表类型外的其他内容,则根据预设的第三语法糖,确定当前条件内容对应的语法糖描述信息。
204.在本发明的一种具体实施方式中,获得单元430,用于:
205.通过分析服务将目标代码文件的路径发送给检测插件,以使检测插件对目标代码文件进行语法检测,确定可替换为语法糖的代码及相应的语法糖描述信息,得到第一语法检测结果;
206.接收分析服务返回的检测插件的第一语法检测结果。
207.在本发明的一种具体实施方式中,语法检测结果包括第二语法检测结果,获得单元430,用于:
208.利用分析服务对目标代码文件进行基础语法检测,获得第二语法检测结果。
209.在本发明的一种具体实施方式中,代码处理装置400还包括缓存单元,用于:
210.在获得语法检测结果之后,对语法检测结果进行缓存处理。
211.在本发明的一种具体实施方式中,返回单元440,用于:
212.在接收到云编辑客户端发送的结果获取请求的情况下,将缓存的语法检测结果返回给云编辑器客户端。
213.在本发明的一种具体实施方式中,代码处理装置400还包括重复控制单元和第二更新单元;
214.重复控制单元,用于在对语法检测结果进行缓存处理之后,在目标代码文件有更新的情况下,重复执行对目标代码文件进行语法检测,获得语法检测结果的步骤;
215.第二更新单元,用于对缓存的语法检测结果进行更新。
216.关于上述实施例中的装置,其中各个单元执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
217.相应于上面的方法实施例,本发明实施例还提供了一种电子设备,包括:处理器,存储器,存储在存储器上并可在处理器上运行的计算机程序,该计算机程序被处理器执行时实现上述代码处理方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
218.如图5所示,为电子设备的一种结构示意图,电子设备可以包括:处理器510、存储器511、通信接口512和通信总线513。处理器510、存储器511、通信接口512均通过通信总线513完成相互间的通信。
219.在本发明实施例中,处理器510可以为中央处理器(central processing unit,cpu)、特定应用集成电路、数字信号处理器、现场可编程门阵列或者其他可编程逻辑器件等。
220.处理器510可以调用存储器511中存储的计算机程序,具体的,处理器510可以执行代码处理方法的实施例中的操作。
221.存储器511中用于存放一个或者一个以上程序,程序可以包括程序代码,程序代码包括计算机操作指令,在本发明实施例中,存储器511中至少存储有用于实现以下功能的程序:
222.接收云编辑器客户端发送的代码更新请求,代码更新请求中携带用户输入的目标代码内容;
223.基于目标代码内容,更新目标代码文件;
224.对目标代码文件进行语法检测,获得语法检测结果;
225.将语法检测结果返回给云编辑器客户端,以通过云编辑器客户端输出语法检测结果。
226.在一种可能的实现方式中,存储器511可包括存储程序区和存储数据区,其中,存储程序区可存储操作系统,以及至少一个功能(比如请求接收功能、语法检测功能)所需的应用程序等;存储数据区可存储使用过程中所创建的数据,如代码文件数据、检测结果数据等。
227.此外,存储器511可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件或其他易失性固态存储器件。
228.通信接口512可以为通信单元的接口,用于与其他设备或者系统连接。
229.当然,需要说明的是,图5所示的结构并不构成对本发明实施例中电子设备的限定,在实际应用中电子设备可以包括比图5所示的更多或更少的部件,或者组合某些部件。
230.本发明实施例还提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现上述代码处理方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。其中,计算机可读存储介质,如只读存储器(read-only memory,简称rom)、随机存取存储器(random access memory,简称ram)、磁碟或者光盘等。
231.此外,本发明实施例还提供了一种计算机程序产品或计算机程序,该计算机程序产品或者计算机程序可以包括计算机指令,该计算机指令可以存储在计算机可读存储介质中。电子设备的处理器从计算机可读存储介质读取该计算机指令,处理器可以执行该计算机指令,使得该计算机设备执行前文所对应实施例中代码处理方法的描述,因此,这里将不再进行赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。对于本发明所涉及的计算机程序产品或者计算机程序实施例中未披露的技术细节,请参照本发明方法实施例的描述。
232.需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排
他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
233.通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
234.上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,均属于本发明的保护之内。
235.本领域普通技术人员可以意识到,结合本发明实施例中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
236.所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
237.在本发明所提供的实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
238.作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
239.另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
240.所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。
241.以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

技术特征:
1.一种代码处理方法,其特征在于,应用于云编辑器服务端,所述代码处理方法包括:接收云编辑器客户端发送的代码更新请求,所述代码更新请求中携带用户输入的目标代码内容;基于所述目标代码内容,更新目标代码文件;对所述目标代码文件进行语法检测,获得语法检测结果;将所述语法检测结果返回给所述云编辑器客户端,以通过所述云编辑器客户端输出所述语法检测结果。2.根据权利要求1所述的代码处理方法,其特征在于,所述语法检测结果包括第一语法检测结果,所述对所述目标代码文件进行语法检测,获得语法检测结果,包括:利用检测插件对所述目标代码文件进行语法检测,确定可替换为语法糖的代码及相应的语法糖描述信息,获得所述第一语法检测结果。3.根据权利要求2所述的代码处理方法,其特征在于,所述利用检测插件对所述目标代码文件进行语法检测,确定可替换为语法糖的代码及相应的语法糖描述信息,获得所述第一语法检测结果,包括:利用检测插件将所述目标代码文件进行树化处理,获得抽象语法树;利用所述检测插件遍历所述抽象语法树,确定可替换为语法糖的代码及相应的语法糖描述信息,获得所述第一语法检测结果。4.根据权利要求3所述的代码处理方法,其特征在于,所述抽象语法树包括类节点、方法节点、条件节点,所述利用所述检测插件遍历所述抽象语法树,确定可替换为语法糖的代码及相应的语法糖描述信息,获得所述第一语法检测结果,包括:利用所述检测插件对所述抽象语法树按照所述类节点、所述方法节点和所述条件节点的顺序进行遍历,确定可替换为语法糖的代码及相应的语法糖描述信息,获得所述第一语法检测结果。5.根据权利要求4所述的代码处理方法,其特征在于,所述利用所述检测插件对所述抽象语法树按照所述类节点、所述方法节点和所述条件节点的顺序进行遍历,确定可替换为语法糖的代码及相应的语法糖描述信息,获得所述第一语法检测结果,包括:利用所述检测插件对所述抽象语法树的所述类节点进行遍历;针对遍历到的每个所述类节点,确定当前类节点中是否存在插件检测注解;如果存在所述插件检测注解,则对所述当前类节点下的所述方法节点进行遍历;针对遍历到的每个所述方法节点,确定当前方法节点中是否存在创建界面元素描述和配置方法;如果存在所述创建界面元素描述和配置方法,则对所述当前方法节点下的所述条件节点进行遍历;针对遍历到的每个所述条件节点,确定当前条件节点中是否存在if条件语句;如果存在所述if条件语句,则将所述if条件语句对应的代码确定为可替换为语法糖的代码;对所述当前条件节点中的条件内容进行遍历,并确定遍历到的每个所述条件内容对应的语法糖描述信息;将对所述抽象语法树遍历后得到的可替换为语法糖的代码以及相应的语法糖描述信
息进行汇总,获得所述第一语法检测结果。6.根据权利要求5所述的代码处理方法,其特征在于,所述确定遍历到的每个所述条件内容对应的语法糖描述信息,包括:针对遍历到的每个所述条件内容,如果当前条件内容存在包含二进制运算符的表达式,则根据所述包含二进制运算符的表达式对应的第一语法糖,确定所述当前条件内容对应的语法糖描述信息;如果所述当前条件内容存在调用包含方法的对象,且所述对象的数据类型为列表类型,则根据所述列表类型对应的第二语法糖,确定所述当前条件内容对应的语法糖描述信息;如果所述当前条件内容存在除所述包含二进制运算符的表达式和所述调用包含方法的对象且所述对象的数据类型为列表类型外的其他内容,则根据预设的第三语法糖,确定所述当前条件内容对应的语法糖描述信息。7.根据权利要求2所述的代码处理方法,其特征在于,所述利用检测插件对所述目标代码文件进行语法检测,确定可替换为语法糖的代码及相应的语法糖描述信息,获得所述第一语法检测结果,包括:通过分析服务将所述目标代码文件的路径发送给检测插件,以使所述检测插件对所述目标代码文件进行语法检测,确定可替换为语法糖的代码及相应的语法糖描述信息,得到所述第一语法检测结果;接收所述分析服务返回的所述检测插件的所述第一语法检测结果。8.根据权利要求1所述的代码处理方法,其特征在于,所述语法检测结果包括第二语法检测结果,所述对所述目标代码文件进行语法检测,获得语法检测结果,包括:利用分析服务对所述目标代码文件进行基础语法检测,获得所述第二语法检测结果。9.根据权利要求1至8之中任一项所述的代码处理方法,其特征在于,在所述获得语法检测结果之后,还包括:对所述语法检测结果进行缓存处理。10.根据权利要求9所述的代码处理方法,其特征在于,所述将所述语法检测结果返回给所述云编辑器客户端,包括:在接收到所述云编辑客户端发送的结果获取请求的情况下,将缓存的所述语法检测结果返回给所述云编辑器客户端。11.根据权利要求9所述的代码处理方法,其特征在于,在所述对所述语法检测结果进行缓存处理之后,还包括:在所述目标代码文件有更新的情况下,重复执行所述对所述目标代码文件进行语法检测,获得语法检测结果的步骤;对缓存的所述语法检测结果进行更新。12.一种代码处理装置,其特征在于,运行于云编辑器服务端,所述代码处理装置包括:接收单元,用于接收云编辑器客户端发送的代码更新请求,所述代码更新请求中携带用户输入的目标代码内容;第一更新单元,用于基于所述目标代码内容,更新目标代码文件;获得单元,用于对所述目标代码文件进行语法检测,获得语法检测结果;
返回单元,用于将所述语法检测结果返回给所述云编辑器客户端,以通过所述云编辑器客户端输出所述语法检测结果。13.一种电子设备,其特征在于,包括:处理器、存储器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如权利要求1至11之中任一项所述的代码处理方法的步骤。14.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至11之中任一项所述的代码处理方法的步骤。

技术总结
本发明公开了一种代码处理方法、装置、电子设备及存储介质,一种代码处理方法应用于云编辑器服务端,包括以下步骤:接收云编辑器客户端发送的代码更新请求,代码更新请求中携带用户输入的目标代码内容;基于目标代码内容,更新目标代码文件;对目标代码文件进行语法检测,获得语法检测结果;将语法检测结果返回给云编辑器客户端,以通过云编辑器客户端输出语法检测结果。应用本发明实施例所提供的技术方案,通过云编辑器服务端与云编辑器客户端的交互,可以有效地对代码文件进行语法检测,减小代码编译时的报错概率,降低代码编写难度,提高开发效率。高开发效率。高开发效率。


技术研发人员:蓝华建 万兵
受保护的技术使用者:北京城市网邻信息技术有限公司
技术研发日:2022.06.27
技术公布日:2022/11/1
转载请注明原文地址: https://tieba.8miu.com/read-7999.html

最新回复(0)