【技术实现步骤摘要】
一种代码诊断方法、装置、服务端、用户设备及存储介质
[0001]本申请实施例涉及数据处理
,具体涉及一种代码诊断方法、装置、服务端、用户设备及存储介质。
技术介绍
[0002]用户使用代码编辑器(简称编辑器)编辑的代码可能会存在各种各样的错误,如果仅对用户编辑的代码进行语法诊断,这将导致代码后续运行时会出现报错,使得用户需要根据代码运行时的报错来修改代码。因此如何在代码编辑过程中提供及时且支持多种诊断类型的代码诊断方案,成为了本领域技术人员亟需解决的问题。
技术实现思路
[0003]有鉴于此,本申请实施例提供一种代码诊断方法、装置、服务端、用户设备及存储介质。
[0004]第一方面,本申请实施例提供一种代码诊断方法,所述方法应用于编辑器服务端,所述方法包括:确定代码编辑界面当前输入的代码文档;响应于代码诊断指令,确定所述代码文档的代码语句;对所述代码文档的各代码语句,分别执行至少一种诊断类型的代码诊断,得到所述代码文档在各诊断类型对应的诊断结果;其中,所述代码文档的各代码语句在一种诊断类型对应的诊断结果,汇总得到所述代码文档在该种诊断类型对应的诊断结果;所述至少一种诊断类型包括如下至少一种:语法诊断、可执行性诊断、权限诊断、性能诊断;将所述代码文档在各诊断类型对应的诊断结果,发送给编辑器前端,以便编辑器前端展示所述代码文档在各诊断类型对应的诊断结果。
[0005]第二方面,本申请实施例提供一种代码诊断方法,所述方法应用于编辑器前端,所述方法包括:展示代码编辑界面,所述代码编辑界面 ...
【技术保护点】
【技术特征摘要】
1.一种代码诊断方法,其中,所述方法应用于编辑器服务端,所述方法包括:确定代码编辑界面当前输入的代码文档;响应于代码诊断指令,确定所述代码文档的代码语句;对所述代码文档的各代码语句,分别执行至少一种诊断类型的代码诊断,得到所述代码文档在各诊断类型对应的诊断结果;其中,所述代码文档的各代码语句在一种诊断类型对应的诊断结果,汇总得到所述代码文档在该种诊断类型对应的诊断结果;所述至少一种诊断类型包括如下至少一种:语法诊断、可执行性诊断、权限诊断、性能诊断;将所述代码文档在各诊断类型对应的诊断结果,发送给编辑器前端,以便编辑器前端展示所述代码文档在各诊断类型对应的诊断结果。2.根据权利要求1所述的方法,其中,所述对所述代码文档的各代码语句,分别执行至少一种诊断类型的代码诊断,得到所述代码文档在各诊断类型对应的诊断结果包括:根据所述至少一种诊断类型中预先配置的优先执行的诊断类型,先对所述代码文档的各代码语句执行代码诊断,再对所述代码文档的各代码语句执行其他诊断类型的代码诊断,得到所述代码文档在各诊断类型对应的诊断结果,所述其他诊断类型不同于所述优先执行的诊断类型;或者,对所述代码文档的各代码语句,并行执行各种诊断类型的代码诊断,得到所述代码文档在各诊断类型对应的诊断结果。3.根据权利要求2所述的方法,其中,所述根据所述至少一种诊断类型中预先配置的优先执行的诊断类型,先对所述代码文档的各代码语句执行代码诊断,再对所述代码文档的各代码语句执行其他诊断类型的代码诊断,得到所述代码文档在各诊断类型对应的诊断结果包括:对代码文档中的各代码语句执行语法诊断,得到代码文档的语法诊断结果;基于所述语法诊断结果,若确定所述代码文档中的代码语句不存在语法错误,则判断底层引擎是否支持可执行性诊断的能力;若支持可执行性诊断的能力,对代码文档中的各代码语句执行可执行性诊断的预处理逻辑,得到代码文档的可执行性诊断结果;若不支持可执行性诊断的能力,对代码文档中的各代码语句执行权限诊断,得到代码文档的权限诊断结果;以及,对代码文档中的各代码语句执行性能诊断,得到代码文档的性能诊断结果。4.根据权利要求3所述的方法,其中,所述对代码文档中的各代码语句执行可执行性诊断的预处理逻辑,得到代码文档的可执行性诊断结果包括:为代码文档的各代码语句设置预处理参数;将设置预处理参数的各代码语句,分别提交给可执行性诊断引擎,使得可执行性诊断引擎对各代码语句执行可执行性诊断的预处理逻辑;获取可执行性诊断引擎输出的代码语句的预处理失败信息,汇总各代码语句的预处理失败信息,得到所述代码文档的可执行性诊断结果。5.根据权利要求3所述的方法,其中,所述对代码文档中的各代码语句执行权限诊断,得到代码文档的权限诊断结果包括:针对代码文档中的任一代码语句,解析所述代码语句,确定所述代码语句中用户操作
的操作数据;结合所述操作数据以及所述代码语句中的元数据,确定所述代码语句中用户的目标操作数据;根据用户账号信息,确定用户是否具有所述目标操作数据的权限,得出所述代码语句的权限诊断结果;其中,代码文档中各代码语句的权限诊断结果,汇总得到代码文档的权限诊断结果。6.根据权利要求5所述的方法,其中,所述结合所述操作数据以及所述代码语句中的元数据,确定所述代码语句中用户的目标操作数据包括:当解析得到的所述操作数据中存在列数据时,将该列数据作为候选列数据,从代码语句中的上下文中查找所述候选列数据对应的表数据;基于所述操作数据中的表数据对应的列数据,以及所述候选列数据和查找到的对应表数据,判断所述候选列数据是否为用户真实操作的列数据;基于判断结果,确定用户真实操作的列数据;结合所述用户真实操作的列数据,以及所述操作数据中用户的操作动作和操作动作涉及的表数据,得出所述目标操作数据。7.根据权利要求3所述的方法,其中,所述性能诊断包括自定义函数诊断,和/或,数据倾斜诊断;所述对代码文档中的各代码语句执行性能诊断,得到代码文档的性能诊断结果包括:针对代码文档中的各代码语句,确定所述代码语句的自定义函数UDF函数以及UDF函数实现的功能,分析预置的多个内置函数中是否有实现相同功能的目标内置函数,若是,以实现相同功能的目标内置函数替换所述代码语句中的UDF函数,得到所述代码语句的UDF诊断结果,其中,代码文档中各代码语句的UDF诊断结果,汇总得到代码文档的UDF诊断结果;和/或,针对代码文档中的各代码语句,确定所述代码语句的代码节点和代码特征,判断所述代码语句的代码节点和代码特征是否与预先分析的存在数据倾斜的代码节点和代码特征相匹配,若是,则将所述代码语句中与所述数据倾斜的代码节点和代码特征相应的代码数据,确定为存在数据倾斜,得出所述代码语句的数据倾斜诊断结果,其中,代码文档中各代码语句的...
【专利技术属性】
技术研发人员:吕舜,王倩倩,朱佳墩,刘益,徐文建,
申请(专利权)人:阿里云计算有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。