本技术涉及软件开发,尤其涉及一种代码检查器生成方法、代码开发平台、计算设备集群、计算机可读存储介质以及计算机程序产品。
背景技术:
1、近年来,随着移动互联网、云计算、人工智能等技术的兴起,软件规模和复杂性不断扩大,软件安全保障的压力也越来越大。在众多安全保障技术中,静态分析技术可以在不运行软件的前提下分析代码本身的特征,从而以较低的运行成本来发现软件中可能存在的问题。
2、静态分析技术的一个典型应用是代码检查器。代码检查器能够自动地检查出受检代码中可能存在的问题(例如是bug),并反馈给开发者,以便在实际运行代码之前修复这些问题。代码检查器通常是建立在底层框架上,底层框架负责解析受检代码并以特定的数据结构(例如:抽象语法树、控制流图)存储代码。上层的代码检查器基于抽象语法树、控制流图等数据结构,通过预先设定好的逻辑检查受检代码,判断受检代码是否存在错误。
3、在开发代码检查器时,开发者不仅需要是有经验的代码编写者,还需要熟悉代码检查器基于的底层框架、受检代码的具体结构、以及编程语言特性等等。一些新型代码检查器设计了对应的领域特定语言(domain specific language,dsl)来辅助开发代码检查器,让开发者可以不用精通复杂的底层框架,但仍然需要一定的学习成本才能进行代码检查器的开发。如何降低代码检查器的开发难度和开发成本成为业界重点关注的问题。
技术实现思路
1、本技术提供了一种代码检查器生成方法,该方法通过指示信息缩小搜索范围,提高了代码检查器的开发效率,降低代码检查器的开发难度和开发成本。本技术还提供了该方法对应的代码开发平台、计算设备集群、计算机可读存储介质以及计算机程序产品。
2、第一方面,本技术提供一种代码检查器生成方法,该方法可以由代码开发平台执行。代码开发平台用于生成代码检查器的代码。代码开发平台可以是软件系统,该软件系统可以是独立软件,如部署在云上或本地的集成开发环境(integrated developmentenvironment,ide),该软件系统也可以以插件的形式集成于其他软件,如集成在代码检查引擎。该软件系统可以部署在计算设备集群,计算设备集群执行软件系统的程序代码,从而执行本技术的代码检查器生成方法。代码开发平台也可以是具有代码检查器生成功能的硬件系统,该硬件系统运行时,执行本技术的代码检查器生成方法。
3、具体地,代码开发平台接收用户输入的第一代码片段和第二代码片段,其中,第一代码片段为代码检查器检查不通过的代码片段,第二代码片段为代码检查器检查通过的代码片段,然后获取与第一代码片段或第二代码片段相关的指示信息,根据指示信息,生成至少一个候选代码检查器的代码,其中,指示信息包括对第一代码片段或第二代码片段的标注信息、第一代码片段和第二代码片段的差异信息中的至少一项,接着代码开发平台响应于用户对至少一个候选代码检查器中目标代码检查器的选中操作,确定目标代码检查器的代码。
4、该方法支持用户输入正例代码片段和反例代码片段,通过与正例代码片段或反例代码片段相关的指示信息(例如是针对正反例代码片段的标注信息或者正反例代码片段的差异信息)辅助生成代码检查器的代码,与传统的搜索方法相比,该方法通过指示信息缩小搜索范围,聚焦正反例代码片段中与指示信息关联的参数、参数类型等进行代码检查器的生成,使得生成的代码检查器不仅能够准确高效地区分正反例,贴合用户意图,满足用户需求,同时,提高了代码检查器的开发效率,降低代码检查器的开发难度和开发成本。
5、在一些可能的实现方式中,代码开发平台可以接收用户通过代码编辑界面标注的对第一代码片段或第二代码片段的标注信息,和/或者,对第一代码片段和第二代码片段进行分析,获得第一代码片段和第二代码片段的差异信息。
6、在该方法中,用户可以对代码片段进行标注,代码开发平台可以对代码片段进行差异分析,如此,获得与代码片段相关的指示信息,在生成代码检查器的过程中关注该指示信息,使得生成的代码检查器贴近用户意图。
7、在一些可能的实现方式中,标注信息用于标注以下至少一项:函数名、函数参数和判断语句中的运算符。如此,使得代码开发平台在生成代码检查器的过程中重点关注与函数名、函数参数或判断语句中的运算符相关的内容。
8、在一些可能的实现方式中,代码开发平台可以响应于用户通过代码编辑界面对第一代码片段或第二代码片段的选中操作或高亮操作,获取标注信息,其中,标注信息可以用于指示用户选中的代码或高亮显示的代码。
9、该方法支持用户通过代码编辑界面对代码片段进行标注,例如是选中操作或高亮操作,如此,用户可以通过交互界面,将代码检查器生成中需要关注的信息进行标注。
10、在一些可能的实现方式中,代码开发平台可以根据代码检查器的框架,获得代码检查器语法,接着解析代码检查器语法,获得生成候选代码检查器所需的基础信息。如此,代码开发平台可以根据指示信息,结合生成候选代码检查器所需的基础信息,生成至少一个候选代码检查器的代码,确保候选代码检查器符合代码检查器的框架和开发规范。
11、在一些可能的实现方式中,代码开发平台可以响应于用户对目标代码检查器的代码的校正操作,将校正后的代码确定为目标代码检查器的代码。
12、在该方法中,用户可以对目标代码检查器的代码进行修改,例如是当目标代码检查器的代码与用户需求接近,但不完全符合用户需求时,用户可以对目标代码检查器的代码进行修改,使得校正后的目标代码检查器的代码满足用户需求。
13、在一些可能的实现方式中,当至少一个候选代码检查器的代码不满足要求,代码开发平台可以接收用户新增的代码片段,其中,新增的代码片段可以用于生成新的候选代码检查器的代码。
14、该方法支持用户补充代码片段,例如是当候选代码检查器的代码均不符合用户需求,且与用户需求差距较大,用户可以通过新增代码片段的方式,指示代码开发平台生成新的候选代码检查器,从而提升生成的代码检查器的准确率。
15、在一些可能的实现方式中,代码开发平台可以根据第一代码片段和第二代码片段,验证候选代码检查器,响应于用户对验证通过的候选代码检查器的选中操作,确定目标代码检查器的代码。
16、在该方法中,可以利用候选代码检查器对代码片段进行验证,如此,确保生成的代码检查器能够正确检查代码,保障代码检查器的准确率。
17、在一些可能的实现方式中,代码开发平台可以从逻辑上分为三层,自底向上包括框架层、代码开发层和用户层。框架层可以用于对代码片段、代码检查器语法进行分析,获得生成代码检查器的各种必要元素,并提供验证能力。代码开发层可以利用框架层提供的信息,生成代码检查器的具体逻辑。用户层可以向用户展示代码检查器的代码,用户也可以通过用户层提供正反例代码片段、标注信息,以指示代码检查器的生成方向。
18、第二方面,本技术提供一种代码开发平台,所述代码开发平台用于生成代码检查器的代码,所述代码开发平台包括:
19、交互模块,用于接收用户输入的第一代码片段和第二代码片段,所述第一代码片段为所述代码检查器检查不通过的代码片段,所述第二代码片段为所述代码检查器检查通过的代码片段;
20、获取模块,用于获取与所述第一代码片段或所述第二代码片段相关的指示信息,所述指示信息包括以下至少一项:对所述第一代码片段或所述第二代码片段的标注信息、所述第一代码片段和所述第二代码片段的差异信息;
21、生成模块,用于根据所述指示信息,生成至少一个候选代码检查器的代码;
22、确定模块,用于响应于所述用户对所述至少一个候选代码检查器中目标代码检查器的选中操作,确定所述目标代码检查器的代码。
23、在一些可能的实现方式中,所述获取模块具体用于:
24、接收所述用户通过代码编辑界面标注的对所述第一代码片段或所述第二代码片段的标注信息;和/或者,
25、对所述第一代码片段和所述第二代码片段进行分析,获得所述第一代码片段和所述第二代码片段的差异信息。
26、在一些可能的实现方式中,所述标注信息用于标注以下至少一项:
27、函数名、函数参数和判断语句中的运算符。
28、在一些可能的实现方式中,所述获取模块具体用于:
29、响应于所述用户通过所述代码编辑界面对所述第一代码片段或所述第二代码片段的选中操作或高亮操作,获取所述标注信息,所述标注信息用于指示所述用户选中的代码或高亮显示的代码。
30、在一些可能的实现方式中,所述确定模块具体用于:
31、响应于所述用户对所述目标代码检查器的代码的校正操作,将校正后的代码确定为所述目标代码检查器的代码。
32、在一些可能的实现方式中,当所述至少一个候选代码检查器的代码不满足要求,所述交互模块还用于:
33、接收所述用户新增的代码片段,所述新增的代码片段用于生成新的候选代码检查器的代码。
34、在一些可能的实现方式中,所述代码开发平台还包括:
35、验证模块,用于根据所述第一代码片段和所述第二代码片段,验证所述候选代码检查器;
36、所述确定模块具体用于:
37、响应于所述用户对验证通过的候选代码检查器的选中操作,确定所述目标代码检查器的代码。
38、第三方面,本技术提供一种计算设备集群。所述计算设备集群包括至少一台计算设备,所述至少一台计算设备包括至少一个处理器和至少一个存储器。所述至少一个处理器、所述至少一个存储器进行相互的通信。所述至少一个处理器用于执行所述至少一个存储器中存储的指令,以使得计算设备或计算设备集群执行如第一方面或第一方面的任一种实现方式所述的代码检查器生成方法。
39、第四方面,本技术提供一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,所述指令指示计算设备或计算设备集群执行上述第一方面或第一方面的任一种实现方式所述的代码检查器生成方法。
40、第五方面,本技术提供了一种包含指令的计算机程序产品,当其在计算设备或计算设备集群上运行时,使得计算设备或计算设备集群执行上述第一方面或第一方面的任一种实现方式所述的代码检查器生成方法。
41、本技术在上述各方面提供的实现方式的基础上,还可以进行进一步组合以提供更多实现方式。
1.一种代码检查器生成方法,其特征在于,应用于代码开发平台,所述代码开发平台用于生成代码检查器的代码,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述获取与所述第一代码片段或所述第二代码片段相关的指示信息,包括:
3.根据权利要求2所述的方法,其特征在于,所述标注信息用于标注以下至少一项:
4.根据权利要求2或3所述的方法,其特征在于,所述接收所述用户通过代码编辑界面标注的对所述第一代码片段或所述第二代码片段的标注信息,包括:
5.根据权利要求1至4任一项所述的方法,其特征在于,所述确定所述目标检查器的代码,包括:
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
7.根据权利要求1至6任一项所述的方法,其特征在于,所述方法还包括:
8.一种代码开发平台,所述代码开发平台用于生成代码检查器的代码,所述代码开发平台包括:
9.根据权利要求8所述的代码开发平台,其特征在于,所述获取模块具体用于:
10.根据权利要求9所述的代码开发平台,其特征在于,所述标注信息用于标注以下至少一项:
11.根据权利要求9或10所述的代码开发平台,其特征在于,所述获取模块具体用于:
12.根据权利要求8至11任一项所述的代码开发平台,其特征在于,所述确定模块具体用于:
13.根据权利要求12所述的代码开发平台,其特征在于,当所述至少一个候选代码检查器的代码不满足要求,所述交互模块还用于:
14.根据权利要求8至13任一项所述的代码开发平台,其特征在于,所述代码开发平台还包括:
15.一种计算设备集群,其特征在于,所述计算设备集群包括至少一台计算设备,所述至少一台计算设备包括至少一个处理器和至少一个存储器,所述至少一个存储器中存储有计算机可读指令;所述至少一个处理器执行所述计算机可读指令,以使得所述计算设备集群执行如权利要求1至7中任一项所述的方法。
16.一种计算机可读存储介质,其特征在于,包括计算机可读指令;所述计算机可读指令用于实现权利要求1至7任一项所述的方法。
17.一种计算机程序产品,其特征在于,包括计算机可读指令;所述计算机可读指令用于实现权利要求1至7任一项所述的方法。
