一种代码诊断方法、装置、服务端、用户设备及存储介质制造方法及图纸

技术编号:28505462 阅读:22 留言:0更新日期:2021-05-19 22:57
本申请实施例提供一种代码诊断方法、装置、服务端、用户设备及存储介质,其中方法包括:确定代码编辑界面当前输入的代码文档;响应于代码诊断指令,确定代码文档的代码语句;对代码文档的各代码语句,分别执行至少一种诊断类型的代码诊断,得到代码文档在各诊断类型对应的诊断结果;所述至少一种诊断类型包括如下至少一种:语法诊断、可执行性诊断、权限诊断、性能诊断;进而将代码文档在各诊断类型对应的诊断结果,发送给编辑器前端,以便编辑器前端展示。本申请实施例可支持对代码进行多种诊断类型的代码诊断,并可在用户编辑代码的过程中,及时的提供各种诊断类型对应的诊断结果,便于用户修改代码编辑过程中出现的错误。便于用户修改代码编辑过程中出现的错误。便于用户修改代码编辑过程中出现的错误。

【技术实现步骤摘要】
一种代码诊断方法、装置、服务端、用户设备及存储介质


[0001]本申请实施例涉及数据处理
,具体涉及一种代码诊断方法、装置、服务端、用户设备及存储介质。

技术介绍

[0002]用户使用代码编辑器(简称编辑器)编辑的代码可能会存在各种各样的错误,如果仅对用户编辑的代码进行语法诊断,这将导致代码后续运行时会出现报错,使得用户需要根据代码运行时的报错来修改代码。因此如何在代码编辑过程中提供及时且支持多种诊断类型的代码诊断方案,成为了本领域技术人员亟需解决的问题。

技术实现思路

[0003]有鉴于此,本申请实施例提供一种代码诊断方法、装置、服务端、用户设备及存储介质。
[0004]第一方面,本申请实施例提供一种代码诊断方法,所述方法应用于编辑器服务端,所述方法包括:确定代码编辑界面当前输入的代码文档;响应于代码诊断指令,确定所述代码文档的代码语句;对所述代码文档的各代码语句,分别执行至少一种诊断类型的代码诊断,得到所述代码文档在各诊断类型对应的诊断结果;其中,所述代码文档的各代码语句在一种诊断类型对应的诊断结果,汇总得到所述代码文档在该种诊断类型对应的诊断结果;所述至少一种诊断类型包括如下至少一种:语法诊断、可执行性诊断、权限诊断、性能诊断;将所述代码文档在各诊断类型对应的诊断结果,发送给编辑器前端,以便编辑器前端展示所述代码文档在各诊断类型对应的诊断结果。
[0005]第二方面,本申请实施例提供一种代码诊断方法,所述方法应用于编辑器前端,所述方法包括:展示代码编辑界面,所述代码编辑界面展示有当前输入的代码文档,所述代码文档包括代码语句;接收编辑器服务端发送的所述代码文档的诊断结果;若所述诊断结果不为空,且包括代码语句在至少一种诊断类型对应的诊断结果,则根据所述诊断结果,确定代码编辑界面中存在错误的目标代码语句以及目标代码语句存在错误的诊断类型;所述至少一种诊断类型包括如下至少一种:语法诊断、可执行性诊断、权限诊断、性能诊断;在代码编辑界面以不同的提示方式,展示目标代码语句在不同诊断类型对应的错误提示,并将目标代码语句在一种诊断类型对应的错误提示,与目标代码语句在该种诊断类型对应的诊断结果进行关联;响应于代码编辑界面中具有错误提示的目标代码语句的用户操作,展示与该错误
提示关联的诊断结果。
[0006]第三方面,本申请实施例提供一种代码诊断装置,所述装置应用于编辑器服务端,所述装置包括:代码文档确定模块,用于确定代码编辑界面当前输入的代码文档;代码语句确定模块,用于响应于代码诊断指令,确定所述代码文档的代码语句;诊断执行模块,用于对所述代码文档的各代码语句,分别执行至少一种诊断类型的代码诊断,得到所述代码文档在各诊断类型对应的诊断结果;其中,所述代码文档的各代码语句在一种诊断类型对应的诊断结果,汇总得到所述代码文档在该种诊断类型对应的诊断结果;所述至少一种诊断类型包括如下至少一种:语法诊断、可执行性诊断、权限诊断、性能诊断;诊断结果发送模块,用于将所述代码文档在各诊断类型对应的诊断结果,发送给编辑器前端,以便编辑器前端展示所述代码文档在各诊断类型对应的诊断结果。
[0007]第四方面,本申请实施例提供一种代码诊断装置,所述装置应用于编辑器前端,所述装置包括:代码编辑界面展示模块,用于展示代码编辑界面,所述代码编辑界面展示有当前输入的代码文档,所述代码文档包括代码语句;诊断结果接收模块,用于接收编辑器服务端发送所述代码文档的诊断结果;错误语句及类型确定模块,用于若所述诊断结果不为空,且包括代码语句在至少一种诊断类型对应的诊断结果,则根据所述诊断结果,确定代码编辑界面中存在错误的目标代码语句以及目标代码语句存在错误的诊断类型;所述至少一种诊断类型包括如下至少一种:语法诊断、可执行性诊断、权限诊断、性能诊断;错误提示展示及关联模块,用于在代码编辑界面以不同的提示方式,展示目标代码语句在不同诊断类型对应的错误提示,并将目标代码语句在一种诊断类型对应的错误提示,与目标代码语句在该种诊断类型对应的诊断结果进行关联;诊断结果展示模块,用于响应于代码编辑界面中具有错误提示的目标代码语句的用户操作,展示与该错误提示关联的诊断结果。
[0008]第五方面,本申请实施例提供一种编辑器服务端,包括至少一个存储器和至少一个处理器,所述存储器存储一条或多条计算机指令,所述处理器调用所述计算机指令以实现如上述第一方面所述的代码诊断方法。
[0009]第六方面,本申请实施例提供一种用户设备,所述用户设备运行有编辑器前端,所述用户设备包括至少一个存储器和至少一个处理器,所述存储器存储一条或多条计算机指令,所述处理器调用所述计算机指令以实现如上述第二方面所述的代码诊断方法。
[0010]第七方面,本申请实施例提供一种存储介质,所述存储介质存储一条或多条计算机指令,所述计算机指令被执行时实现如上述第一方面所述的代码诊断方法,或者,如上述第二方面所述的代码诊断方法。
[0011]本申请实施例提供的代码诊断方法中,编辑器服务端可确定代码编辑界面当前输入的代码文档,并响应于代码诊断指令,对所述代码文档执行至少一种诊断类型的代码诊断;所述至少一种诊断类型包括如下至少一种:语法诊断、可执行性诊断、权限诊断、性能诊断。由于代码诊断是针对代码文档中的代码语句进行,因此编辑器服务端可确定所述代码
文档的代码语句,从而对所述代码文档的各代码语句分别执行至少一种诊断类型的代码诊断,得到代码文档在各诊断类型对应的诊断结果;其中,所述代码文档在一种诊断类型对应的诊断结果,由所述代码文档的各代码语句在该种诊断类型对应的诊断结果汇总得到。进而,编辑器服务端可将所述代码文档在各诊断类型对应的诊断结果,发送给编辑器前端。编辑器前端可展示所述代码文档在各诊断类型对应的诊断结果,以提示用户编辑的代码中存在的错误和/或修改建议。本申请实施例提供的代码编辑方法,可在用户在代码编辑界面编辑代码的过程中,由编辑器服务端对代码文档进行执行一种诊断类型的代码诊断,并将诊断结果反馈给编辑器前端,从而编辑器前端可展示代码文档在各诊断类型对应的诊断结果,以提示用户编辑的代码在各诊断类型所存在的错误。可见,本申请实施例提供的方案能够支持对代码进行多种诊断类型的代码诊断,并可在用户编辑代码的过程中,及时的提供各种诊断类型对应的诊断结果,便于用户修改代码编辑过程中出现的错误。
附图说明
[0012]为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
[0013]图1为编辑器系统的示意图。
[0014]图2a为本申请实施例提供的代码诊断方法的流程图。
[0015]图2b为代码文档的语法诊断示例图。
[0016]图3为对代码文档进行多种类型的代码诊断的方法流程图。
[0017]图4a为执行可执行性诊断本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种代码诊断方法,其中,所述方法应用于编辑器服务端,所述方法包括:确定代码编辑界面当前输入的代码文档;响应于代码诊断指令,确定所述代码文档的代码语句;对所述代码文档的各代码语句,分别执行至少一种诊断类型的代码诊断,得到所述代码文档在各诊断类型对应的诊断结果;其中,所述代码文档的各代码语句在一种诊断类型对应的诊断结果,汇总得到所述代码文档在该种诊断类型对应的诊断结果;所述至少一种诊断类型包括如下至少一种:语法诊断、可执行性诊断、权限诊断、性能诊断;将所述代码文档在各诊断类型对应的诊断结果,发送给编辑器前端,以便编辑器前端展示所述代码文档在各诊断类型对应的诊断结果。2.根据权利要求1所述的方法,其中,所述对所述代码文档的各代码语句,分别执行至少一种诊断类型的代码诊断,得到所述代码文档在各诊断类型对应的诊断结果包括:根据所述至少一种诊断类型中预先配置的优先执行的诊断类型,先对所述代码文档的各代码语句执行代码诊断,再对所述代码文档的各代码语句执行其他诊断类型的代码诊断,得到所述代码文档在各诊断类型对应的诊断结果,所述其他诊断类型不同于所述优先执行的诊断类型;或者,对所述代码文档的各代码语句,并行执行各种诊断类型的代码诊断,得到所述代码文档在各诊断类型对应的诊断结果。3.根据权利要求2所述的方法,其中,所述根据所述至少一种诊断类型中预先配置的优先执行的诊断类型,先对所述代码文档的各代码语句执行代码诊断,再对所述代码文档的各代码语句执行其他诊断类型的代码诊断,得到所述代码文档在各诊断类型对应的诊断结果包括:对代码文档中的各代码语句执行语法诊断,得到代码文档的语法诊断结果;基于所述语法诊断结果,若确定所述代码文档中的代码语句不存在语法错误,则判断底层引擎是否支持可执行性诊断的能力;若支持可执行性诊断的能力,对代码文档中的各代码语句执行可执行性诊断的预处理逻辑,得到代码文档的可执行性诊断结果;若不支持可执行性诊断的能力,对代码文档中的各代码语句执行权限诊断,得到代码文档的权限诊断结果;以及,对代码文档中的各代码语句执行性能诊断,得到代码文档的性能诊断结果。4.根据权利要求3所述的方法,其中,所述对代码文档中的各代码语句执行可执行性诊断的预处理逻辑,得到代码文档的可执行性诊断结果包括:为代码文档的各代码语句设置预处理参数;将设置预处理参数的各代码语句,分别提交给可执行性诊断引擎,使得可执行性诊断引擎对各代码语句执行可执行性诊断的预处理逻辑;获取可执行性诊断引擎输出的代码语句的预处理失败信息,汇总各代码语句的预处理失败信息,得到所述代码文档的可执行性诊断结果。5.根据权利要求3所述的方法,其中,所述对代码文档中的各代码语句执行权限诊断,得到代码文档的权限诊断结果包括:针对代码文档中的任一代码语句,解析所述代码语句,确定所述代码语句中用户操作
的操作数据;结合所述操作数据以及所述代码语句中的元数据,确定所述代码语句中用户的目标操作数据;根据用户账号信息,确定用户是否具有所述目标操作数据的权限,得出所述代码语句的权限诊断结果;其中,代码文档中各代码语句的权限诊断结果,汇总得到代码文档的权限诊断结果。6.根据权利要求5所述的方法,其中,所述结合所述操作数据以及所述代码语句中的元数据,确定所述代码语句中用户的目标操作数据包括:当解析得到的所述操作数据中存在列数据时,将该列数据作为候选列数据,从代码语句中的上下文中查找所述候选列数据对应的表数据;基于所述操作数据中的表数据对应的列数据,以及所述候选列数据和查找到的对应表数据,判断所述候选列数据是否为用户真实操作的列数据;基于判断结果,确定用户真实操作的列数据;结合所述用户真实操作的列数据,以及所述操作数据中用户的操作动作和操作动作涉及的表数据,得出所述目标操作数据。7.根据权利要求3所述的方法,其中,所述性能诊断包括自定义函数诊断,和/或,数据倾斜诊断;所述对代码文档中的各代码语句执行性能诊断,得到代码文档的性能诊断结果包括:针对代码文档中的各代码语句,确定所述代码语句的自定义函数UDF函数以及UDF函数实现的功能,分析预置的多个内置函数中是否有实现相同功能的目标内置函数,若是,以实现相同功能的目标内置函数替换所述代码语句中的UDF函数,得到所述代码语句的UDF诊断结果,其中,代码文档中各代码语句的UDF诊断结果,汇总得到代码文档的UDF诊断结果;和/或,针对代码文档中的各代码语句,确定所述代码语句的代码节点和代码特征,判断所述代码语句的代码节点和代码特征是否与预先分析的存在数据倾斜的代码节点和代码特征相匹配,若是,则将所述代码语句中与所述数据倾斜的代码节点和代码特征相应的代码数据,确定为存在数据倾斜,得出所述代码语句的数据倾斜诊断结果,其中,代码文档中各代码语句的...

【专利技术属性】
技术研发人员:吕舜王倩倩朱佳墩刘益徐文建
申请(专利权)人:阿里云计算有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1