一种代码处理方法以及相关设备技术

技术编号:33875400 阅读:16 留言:0更新日期:2022-06-22 17:03
本申请提供了一种代码处理方法,应用于代码处理系统,该系统包括编译器,该方法包括:编译器获取代码,从远端的静态分析规则库获取代码对应的静态分析规则,根据静态分析规则获得对代码的分析结果。该方法利用编译器调用远端的静态分析规则库中的静态分析规则进行静态分析,无需软件开发人员花费大量时间和精力学习使用不同种类的静态分析工具,提高了静态分析的效率,提高了用户体验。提高了用户体验。提高了用户体验。

【技术实现步骤摘要】
一种代码处理方法以及相关设备


[0001]本申请涉及软件开发
,尤其涉及一种代码处理方法、编译器、代码处理系统以及计算机可读存储介质、计算机程序产品。

技术介绍

[0002]在进行软件开发时,开发人员常常需要利用静态分析工具对程序代码进行程序静态程分析。所谓程序静态分析是指在不运行计算机程序的条件下进行程序分析的方法。静态分析工具可以帮助开发人员查找代码错误(如词法错误、语法错误)、提高代码可读性及开发团队内代码风格的一致性。
[0003]目前,业内各语言都提供有丰富的静态分析工具,从而提供差异化的静态分析服务。然而,各类静态分析工具架构设计的差异化导致开发人员需要花费大量时间和精力学习使用这些不同种类的静态分析工具,降低了静态分析的效率,影响了用户体验。

技术实现思路

[0004]本申请提供了一种代码处理方法,该方法利用编译器调用远端的静态分析规则库中的静态分析规则进行静态分析,无需软件开发人员花费大量时间和精力学习使用不同种类的静态分析工具,提高了静态分析的效率,提高了用户体验。本申请还提供了上述方法对应的编译器、代码处理系统、设备、计算机可读存储介质以及计算机程序产品。
[0005]第一方面,本申请提供了一种代码处理方法。该方法可以由代码处理系统执行。代码处理系统包括编译器。编译器获取代码,具体是待分析的代码,然后编译器从远端的静态分析规则库获取上述代码对应的静态分析规则,利用该静态分析规则对代码进行静态分析,获得对代码的分析结果。
[0006]该方法利用编译器调用远端的静态分析规则库中的静态分析规则进行静态分析,无需软件开发人员花费大量时间和精力学习使用不同种类的静态分析工具,提高了静态分析的效率,从而提高了用户体验。
[0007]并且,远端的静态分析规则库能够根据代码情况向编译器实时分发相应的静态分析规则,编译器无需预先加载较多的静态分析规则,减少了资源占用,由此可以实现提供高可用、低成本的静态分析服务。另外,静态分析过程在编译器中实现,例如嵌入到编译器编译解释阶段,可以不需要配置额外的软硬件资源进行独立的静态分析,降低了相关软硬件资源在静态分析层面的投入,进一步降低了成本。
[0008]在一些可能的实现方式中,分析结果包括两种,一种为分析通过,一种为分析不通过。为了便于用户(例如开发人员)对代码进行修正,提高开发效率,当分析结果表征静态分析不通过时,所述编译器还可以向用户呈现针对所述代码的提示信息。该提示信息可以包括错误(error)信息或告警(warning)信息中的一个或多个。
[0009]具体地,编译器可以向用户呈现代码包括n1个error和n2个warning。其中,n1和n2为整数。进一步地,编译器还可以向用户呈现错误位置、错误原因以及告警位置和告警原因
中的任意一个或多个。
[0010]如此,用户可以根据提示信息快速跳转至代码的错误位置,根据提示的错误原因对错误位置的代码进行修正,或者快速跳转至代码的告警位置,根据提示的告警原因对告警位置的代码进行优化。由此可以实现快速完善代码,提高开发效率,以及提高代码质量。
[0011]在一些可能的实现方式中,静态分析规则库中包括不同计算机语言的静态分析规则。编译器可以支持对各计算机语言的静态分析规则进行加载和执行,由此实现通过统一的方式对不同计算机语言的代码进行静态分析。用户无需安装不同计算机语言的静态分析工具,轻量级的终端即可通过编译器调用远端的静态分析规则库中的静态分析规则实现对代码的静态分析,降低了对终端的性能要求。
[0012]在一些可能的实现方式中,所述代码处理系统还包括规则管理装置。该规则管理装置可以对静态分析规则进行管理,例如进行增删查改等操作。具体地,规则管理装置接收用户通过标准接口,如标准化的应用程序编程接口(application programming interface,API)输入的规则描述信息,然后将根据所述规则描述信息形成的静态分析规则存储在所述静态分析规则库中。
[0013]如此实现了提供统一的静态分析规则扩展能力。软件开发人员仅掌握通用的编译器使用能力以及通用的静态分析规则扩写能力即可在软件开发的各个阶段定制与业务需求相对应的静态分析规则,通过编译器加载该静态分析规则进行静态分析,提高了静态分析效率。
[0014]在一些可能的实现方式中,静态分析规则在传输或存储时的形态与在内存中使用的形态可以是不同的。为了便于传输或存储,规则管理装置还可以在形成静态分析规则后,对根据所述规则描述信息形成的静态分析规则进行序列化,在一些计算机语言中,序列化也可以称作编集(marshalling),然后规则管理装置将序列化后的所述静态分析规则存储在所述静态分析规则库中。
[0015]如此,可以实现通过少量的存储资源存储大量的静态分析规则,提高存储资源利用率,节约存储资源。
[0016]在一些可能的实现方式中,当静态分析规则库中存储的静态分析规则为序列化后的静态分析规则时,则编译器在对代码进行静态分析过程中,先从远端的静态分析规则库获取所述代码对应的、序列化后的静态分析规则,对所述代码对应的、序列化后的静态分析规则进行反序列化,得到所述代码对应的静态分析规则。
[0017]在一些可能的实现方式中,所述编译器可以获取来自于开发环境、门禁环境或者运行环境的代码。其中,开发环境指利用开发工具进行软件开发的环境,开发工具可以是集成开发环境(integrated development environment,IDE),基于此,开发环境也可以称作IDE环境。门禁环境是指进行门禁检查的环境。在持续集成持续交付(continuous integration/continuous deployment,CI/CD)模式下,软件开发人员提交代码后,可以自动触发门禁检查。门禁检查包括的检查任务可以预先设定。在一些可能的实现方式中,门禁检查可以包括静态检查,也即静态分析。运行环境具体是指代码运行时的环境,运行环境具体可以包括测试环境、生产环境。
[0018]如此,满足了用户在不同场景例如是不同环境下对代码进行静态分析的需求,无需在不同环境下分别提供相应的静态分析工具,降低了静态分析的成本。
[0019]在一些可能的实现方式中,所述编译器对所述代码进行静态分析的触发条件是用户在开发环境、门禁环境或者运行环境通过用户界面触发代码分析,例如是通过图形用户界面(graphical user interface,GUI)上承载的静态分析控件触发代码分析,或者是通过命令用户界面(command user interface,CUI)输入静态分析命令触发代码分析。
[0020]当上述触发条件被满足时,编译器可以启动对代码的静态分析,以查找代码错误(如词法错误、语法错误)、提高代码可读性或者是提高开发团队内代码风格的一致性。
[0021]第二方面,本申请提供了一种编译器。所述编译器包括:
[0022]交互模块,用于获取代码;
...

【技术保护点】

【技术特征摘要】
1.一种代码处理方法,其特征在于,应用于代码处理系统,所述代码处理系统包括编译器,所述方法包括:所述编译器获取代码;所述编译器从远端的静态分析规则库获取所述代码对应的静态分析规则;所述编译器根据所述静态分析规则获得对所述代码的分析结果。2.根据权利要求1所述的方法,其特征在于,当所述分析结果表征静态分析不通过时,所述方法还包括:所述编译器向用户呈现针对所述代码的提示信息。3.根据权利要求1或2所述的方法,其特征在于,所述代码处理系统还包括规则管理装置,所述方法还包括:所述规则管理装置接收用户通过标准接口输入的规则描述信息;所述规则管理装置将根据所述规则描述信息形成的静态分析规则存储在所述静态分析规则库中。4.根据权利要求3所述的方法,其特征在于,所述规则管理装置将根据所述规则描述信息形成的静态分析规则存储在所述静态分析规则库中,包括:所述规则管理装置对根据所述规则描述信息形成的静态分析规则进行序列化;所述规则管理装置将序列化后的所述静态分析规则存储在所述静态分析规则库中。5.根据权利要求4所述的方法,其特征在于,所述编译器从远端的静态分析规则库获取所述代码对应的静态分析规则,包括:所述编译器从远端的静态分析规则库获取所述代码对应的、序列化后的静态分析规则;所述编译器对所述代码对应的、序列化后的静态分析规则进行反序列化,得到所述代码对应的静态分析规则。6.根据权利要求1至5任一项所述的方法,其特征在于,所述编译器获取代码,包括:所述编译器获取来自于开发环境、门禁环境或者运行环境的代码。7.根据权利要求1至6任一项所述的方法,其特征在于,所述编译器对所述代码进行静态分析的触发条件是用户在开发环境、门禁环境或者运行环境通过用户界面触发代码分析。8.一种编译器,其特征在于,所述编译器包括:交互模块,用于获取代码;规则加载模块,用于从远端的静态分析规则库获取所述代码对应的静态分析规则;静态分析模块,用于根据...

【专利技术属性】
技术研发人员:史海
申请(专利权)人:华为云计算技术有限公司
类型:发明
国别省市:

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

1