CN116540978A - 形式规约推荐方法、装置以及系统 - Google Patents

形式规约推荐方法、装置以及系统 Download PDF

Info

Publication number
CN116540978A
CN116540978A CN202210074154.XA CN202210074154A CN116540978A CN 116540978 A CN116540978 A CN 116540978A CN 202210074154 A CN202210074154 A CN 202210074154A CN 116540978 A CN116540978 A CN 116540978A
Authority
CN
China
Prior art keywords
code
codes
user
candidate
annotation
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202210074154.XA
Other languages
English (en)
Inventor
杨宸骅
梁广泰
吴添勇
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Cloud Computing Technologies Co Ltd
Original Assignee
Huawei Cloud Computing Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Cloud Computing Technologies Co Ltd filed Critical Huawei Cloud Computing Technologies Co Ltd
Priority to CN202210074154.XA priority Critical patent/CN116540978A/zh
Priority to PCT/CN2022/139299 priority patent/WO2023138270A1/zh
Publication of CN116540978A publication Critical patent/CN116540978A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/10Requirements analysis; Specification techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/33Querying
    • G06F16/335Filtering based on additional data, e.g. user or group profiles
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/42Syntactic analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/43Checking; Contextual analysis
    • G06F8/436Semantic checking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/73Program documentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • G06N3/0455Auto-encoder networks; Encoder-decoder networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/0464Convolutional networks [CNN, ConvNet]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/048Activation functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Artificial Intelligence (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Library & Information Science (AREA)
  • Databases & Information Systems (AREA)
  • Stored Programmes (AREA)

Abstract

本申请提供形式规约推荐方法、装置以及系统,其中,方法包括:首先,获取用户输入的代码和/或代码的注释,然后,基于用户输入的代码和/或代码的注释,得到多个候选形式规约,并向用户显示多个候选形式规约,用户可从多个候选形式规约中选择满足需求的候选形式规约作为目标形式规约,并使用选择出的目标形式规约验证待验证代码。该方法通过自动生成多个候选形式规约推荐给用户,能够简化形式规约的编写工作,提高形式规约的获取效率以及计算机系统的开发效率。

Description

形式规约推荐方法、装置以及系统
技术领域
本申请涉及计算机技术领域,尤其涉及一种形式规约推荐方法、装置以及系统。
背景技术
形式化方法是基于严格数学基础,对计算机系统(软/硬件系统)进行形式规约、开发和验证的技术。设计开发一个可靠的计算机系统通常需要大量的形式规约支持。其中,形式规约,是由形式规约语言严格描述的计算机系统模型、计算机系统需要满足的性质或者计算机系统中的待检测漏洞等,形式规约是形式化方法的基础,在形式化方法中占据了重要的地位。
然而,目前,在基于形式化方法设计开发计算机系统时,通常需要开发人员手动编写大量的形式规约,该种获取形式规约的方式存在着需要消耗大量的人力和时间,会导致形式规约的获取效率以及计算机系统开发效率较低的问题。
发明内容
本申请提供一种形式规约推荐方法、装置以及系统,用以简化形式规约的编写工作,提高形式规约的获取效率以及计算机系统的开发效率。
第一方面,提供一种形式规约推荐方法,该方法包括:首先,获取用户输入的代码和/或代码的注释,然后,基于用户输入的代码和/或代码的注释,得到多个候选形式规约,并向用户显示多个候选形式规约。
实施上述第一方面描述的方法,可在用户编写待形式规约验证的代码和/或形式规约时,实时获取用户输入的代码和/或代码的注释,然后基于用户输入的代码和/或代码的注释,自动得到多个候选形式规约,该多个候选形式规约可以给用户提供良好的参考,若用户确定多个候选形式规约中有满足自己需求的候选形式规约,则用户可直接选择该规约作为目标形式规约,用户无需进行整个形式规约的编写工作,能够节省用户的精力和时间,提高形式规约的获取效率。
在一种可能的实现方式中,具体可以通过如下方式实现基于代码和/或代码的注释,生成得到候选形式规约:将代码和/或代码的注释,输入形式规约生成模型进行识别,将形式规约生成模型输出的形式规约作为候选形式规约。
在具体实现中,形式规约生成模型可以是使用包括大量已知代码和/或大量已知代码的注释的样本集进行训练得到的具有较高识别精度的模型,样本集包括的大量已知代码和/或大量已知代码的注释,可以是用户手动编写的,也可以是从互联网上获取的,此处不作具体限定
在具体实现中,在将代码和/或代码的注释输入到形式规约生成模型之后,形式规约生成模型可以得到多个形式规约以及多个形式规约的置信度,形式规约生成模型可以将多个形式规约中置信度大于置信度阈值的形式规约直接作为候选形式规约输出,也可以按照置信度大小进行排序,将置信度较大的部分形式规约作为候选形式规约输出,此处不作具体限定。置信度阈值、输出的候选形式规约的数量均可以由用户根据实际情况进行自定义,此处不作具体限定。
实施上述实现方式,将代码和/或代码的注释,输入形式规约生成模型进行识别,将形式规约生成模型输出的形式规约作为候选形式规约,由于形式规约生成模型为提前训练好的具有较高识别精度的模型,因此,可以保证生成的候选形式规约的准确性。
在一种可能的实现方式中,具体可以通过如下方式实现基于代码和/或代码的注释,得到多个候选形式规约:首先,计算代码和/或代码的注释与规则库包括的多条规则之间的匹配度,然后,根据计算结果将多条规则中匹配度大于匹配度阈值的规则对应的形式规约,作为候选形式规约。
其中,规则库包括的多条规则对应多个形式规约,具体地,其对应关系可以为一一对应。匹配度阈值可以由用户根据实际情况进行自定义,例如,自定义为80%或者75%等,此处不作具体限定。
可选地,在计算得到代码与规则库包括的多条规则之间的匹配度之后,也可以根据计算结果对多条规则进行排序,然后将多条规则中匹配度较大的部分规则对应的形式规约,作为候选形式规约。具体实现中,可以根据实际情况自定义选择出的候选形式规约的数量,例如,自定义为5或者10,此处不作具体限定。
在具体实现中,规则库中的多条规则以及多条规则对应的形式规约可以为专门的规则设计人员预先根据多种应用场景得到。
实施上述实现方式,将规则库中与代码和/或代码的注释匹配度大于匹配度阈值的规则对应的形式规约,作为候选形式规约,由于规则库中的多条规则以及多条规则对应的形式规约可以为专门的规则设计人员预先根据多种应用场景到,因此,可以保证生成的候选形式规约的准确性。
在一种可能的实现方式中,具体可以通过如下方式实现基于代码和/或代码的注释,得到多个候选形式规约:基于代码对应的中间表示和/或代码的结构化注释,得到多个候选形式规约,其中,上述代码的结构化注释是对代码的注释进行结构化处理得到的。
由于代码对应的中间表示相较于代码本身,更便于分析,且得到的分析结果通常也会更准确,代码的结构化注释相较于代码的注释(指结构化处理之前的注释),更易于处理,且得到的处理结果通常也会更准确,因此,实施上述实现方式,基于代码对应的中间表示和/或代码的结构化注释,得到多个候选形式规约,可以提高得到的候选形式规约的准确度,能够使得最终向用户推荐的多个候选形式规约更精准。
在一种可能的实现方式中,具体可以通过如下方式实现获取用户输入的代码和/或代码的注释:通过关键词触发用户数输入的代码和/或代码的注释的获取。
在一种可能的实现方式中,具体可以通过如下方式实现通过关键词触发用户数输入的代码和/或代码的注释的获取:监测用户是否输入了关键词,在监测到用户输入了关键词的情况下,获取用户输入的代码和/或代码的注释。
实施上述实现方式,可以使得仅监测用户在输入关键词之后输入的代码和/或代码的注释,然后基于用户输入的代码和/或代码的注释向用户推荐候选形式规约,如此,可以优化用户体验,节省计算资源。
在一种可能的实现方式中,还可以通过如下方式实现获取用户输入的代码和/或代码的注释:首先,接收用户输入的时间范围,然后,获取用户在所述时间范围内输入的代码和/或代码的注释。
实施上述实现方式,可以使得仅在用户期望的时间范围内获取用户输入的代码和/或代码的注释,然后基于用户输入的代码和/或代码的注释向用户推荐候选形式规约,如此,可以优化用户体验,节省计算资源。
在一种可能的实现方式中,具体可以通过如下方式实现向用户显示多个候选形式规约:向用户显示排序后的多个候选形式规约,其中,多个候选形式规约中与代码和/或代码的注释匹配最优的候选形式规约排列在首位。
实施上述实现方式,将多个候选形式规约中与代码和/或代码的注释匹配最优的候选形式规约排列在首位,便于用户方便快捷地从多个候选形式规约中查看到上述最优候选形式规约,能够优化用户体验。
在一种可能的实现方式中,第一方面提供的方法还包括如下步骤:获取用户从多个候选形式规约中选择出的目标形式规约,然后,使用目标形式规约对待验证代码进行验证。
实施上述实现方式,直接使用选择出的目标形式规约对待验证代码进行验证,可以提高代码的验证效率,从而提高计算机系统的开发效率。
第二方面,提供一种形式规约推荐装置,该装置包括:获取模块,用于获取用户输入的代码和/或代码的注释;规约推荐模块,用于基于代码和/或代码的注释,得到多个候选形式规约,并向用户显示多个候选形式规约。
在一种可能的实现方式中,规约推荐模块,具体可以通过如下方式实现基于代码和/或代码的注释,得到多个候选形式规约:将代码和/或代码的注释,输入形式规约生成模型进行识别,将形式规约生成模型输出的形式规约作为候选形式规约。
在一种可能的实现方式中,规约推荐模块,具体可以通过如下方式实现基于代码和/或代码的注释,得到多个候选形式规约:首先,计算代码和/或代码的注释与规则库包括的多条规则之间的匹配度,然后,根据计算结果将多条规则中匹配度大于匹配度阈值的规则对应的形式规约,作为候选形式规约。
在一种可能的实现方式中,规约推荐模块,具体可以通过如下方式实现基于代码和/或代码的注释,得到多个候选形式规约:基于代码对应的中间表示和/或代码的结构化注释,生成得到候选形式规约,其中,上述代码的结构化注释是对代码的注释进行结构化处理得到的。
在一种可能的实现方式中,获取模块,具体可以通过如下方式实现获取用户输入的代码和/或代码的注释:通过关键词触发用户数输入的代码和/或代码的注释的获取。
在一种可能的实现方式中,获取模块,具体可以通过如下方式实现通过关键词触发用户数输入的代码和/或代码的注释的获取:监测用户是否输入了关键词,在监测到用户输入了关键词的情况下,获取用户输入的代码和/或代码的注释。
在一种可能的实现方式中,获取模块,还可以通过如下方式实现获取用户输入的代码和/或代码的注释:首先,接收用户输入的时间范围,然后,获取用户在所述时间范围内输入的代码和/或代码的注释。
在一种可能的实现方式中,规约推荐模块,具体可以通过如下方式实现向用户显示多个候选形式规约:向用户显示排序后的多个候选形式规约,其中,多个候选形式规约中与代码和/或代码的注释匹配最优的候选形式规约排列在首位。
在一种可能的实现方式中,第二方面提供的装置还包括验证模块,当获取模块还用于获取用户从多个候选形式规约中选择出的目标形式规约时,上述验证模块用于使用目标形式规约对待验证代码进行验证。
第三方面,提供一种计算设备,该计算设备包括处理器和存储器;所述处理器用于执行所述存储器存储的指令,使得所述计算设备实现如上述第一方面或者第一方面的任意可能的实现方式提供的方法。
第四方面,提供一种形式规约推荐系统,该系统包括终端设备和服务器;终端设备,用于获取用户输入的代码和/或代码的注释;终端设备,用于将代码和/或代码的注释发送给服务器;服务器,用于根据代码和/或代码的注释,得到多个候选形式规约,并将多个候选形式规约发送给终端设备;终端设备,用于向用户显示多个候选形式规约。
第五方面,提供一种计算机可读存储介质,该计算机可读存储介质存储有指令,所述指令用于实现如上述第一方面或者第一方面的任意可能的实现方式提供的方法。
第六方面,提供一种计算机程序产品,包括计算机程序,当所述计算机程序被计算设备读取并执行时,使得所述计算设备执行如上述第一方面或者第一方面的任意可能的实现方式提供的方法。
附图说明
图1是本申请涉及的一种应用场景的示意图;
图2是本申请提供的一种形式规约推荐系统的结构示意图;
图3是本申请提供的一种形式规约推荐方法的交互示意图;
图4A是本申请示例性示出的一种图形用户界面;
图4B是本申请示例性示出的一种图形用户界面;
图5是本申请提供的另一种形式规约推荐方法的交互示意图;
图6是本申请提供的一种示例性图形用户界面;
图7是本申请提供的一种形式规约推荐装置的结构示意图;
图8是本申请提供的一种计算设备的结构示意图。
具体实施方式
下面将结合附图,对本申请提供的技术方案进行描述。为了使本申请提供的技术方案更清晰,在具体描述本申请提供的技术方案之前,首先进行相关术语的解释。
形式规约:也称形式规范或者形式化描述,是由形式规约语言严格描述的计算机系统模型或者计算机系统需要满足的性质,前者是模型规约,后者是性质规约。与计算机系统的其他建模方法一样,形式规约可以从不同的角度用不同/相同的形式规约语言来描述计算机系统,即所谓的多维视角规约方式,例如,一个计算机系统的需求方面的规约可包括数据模型规约、数据功能规约、交互通信协议规约等。
形式规约语言:是指由严格的递归语法规则所定义的语言,具体包括模型规约语言、性质规约语言等。其中,模型规约语言利用数学结构描述系统的状态变化或者事件轨迹,它直接定义所描述系统模型的结构、功能行为甚至非功能行为;性质规约语言基于程序逻辑系统,通过逻辑公式来描述一组性质以定义所期望的系统行为,性质规约不直接定义系统的具体行为。
中间表示(intermediate representation,IR):在编译领域,通常将编译器分为前端和后端,其中,前端会对输入的程序进行词法分析、语法分析、语义分析,然后生成中间表达形式,也就是中间表示,后端会对中间表示进行优化,然后生成目标代码。中间表示与源代码在语义上是等价的,由于源代码通常包括各种注释,很不方便分析,在进行代码分析时,通常不会基于源代码直接分析,都会转换为中间表示后进行分析,这样得到的分析结果会比较准确。目前,比较常用的中间表示形式包括三地址码(three address code,缩写为TAC或3AC)、控制流程图(control flow graph,CFG)和静态单赋值(static singleassignment,SSA),其中,SSA可以分为最小SSA、剪枝SSA、最大SSA等。
结构化数据:指能够用数字或统一的数据模型加以描述的数据,具有严格的长度和格式。结构化数据相较于非结构化数据,具有易于存储、管理和处理等优点,且得到的处理结果通常也会更准确。
神经网络(neural networks):可以是由神经单元(也称为神经元)组成的,神经单元可以是指以变量xs和截距b为输入的运算单元,该运算单元的输出可以为:
其中,s=1、2、……n,n为大于1的自然数,Ws为xs的权重,b为神经单元的偏置。f为神经单元的激活函数(activation functions),用于将非线性特性引入神经网络中,来将神经单元中的输入信号转换为输出信号。该激活函数的输出信号可以作为下一层卷积层的输入。激活函数可以是sigmoid函数以及其他函数,在此不做限定。神经网络是将许多个上述单一的神经单元联结在一起形成的网络,即一个神经单元的输出可以是另一个神经单元的输入。每个神经单元的输入可以与前一层的局部接受域相连,来提取局部接受域的特征,局部接受域可以是由若干个神经单元组成的区域。神经网络多种多样,常见的神经网络包括随机森林(random forest)、支持向量机(support vector machine,SVM)、图神经网络(graph neural networks,GNN)、卷积神经网络(convolutional neural networks,CNN)等。
模型训练:指对神经网络进行训练,得到训练好的能够用于完成特定任务的模型的过程。训练神经网络是指利用已有的数据通过一定方法使神经网络拟合已有数据的规律,从而确定神经网络中的参数。训练一个神经网络需要使用到数据集,根据数据集中的数据是否有标注(即:数据是否有特定的类型或名称),可以将神经网络的训练分为监督训练和无监督训练。
下面对本申请实施例涉及的应用场景进行简要说明。
计算机科学的发展主要涉及硬件和软件的发展,而软/硬件发展的核心问题之一是如何保证它们是可靠的、安全的。如今,硬件性能变得越来越高、运算速度变得越来越快、体系结构变得越来越复杂,软件的功能也变得越来越强大而复杂,如何开发可靠的计算机(软/硬件)系统,己经成为计算机科学发展的巨大挑战,特别是现在计算机系统己广泛应用于许多关系国计民生的安全系统中,例如高速列车控制系统、航空航天控制系统、核反应堆控制系统、医疗设备系统等等,这些系统中的任何错误都可能导致灾难性后果。
在实际应用中,通常会基于形式化方法设计开发一个可靠、安全的计算机系统。在基于形式化方法设计开发计算机系统时,通常需要开发人员在终端设备上手动编写大量的形式规约,如图1所示。具体实现中,开发人员所使用的终端设备可以是个人电脑、平板电脑、移动笔记本等等具有形式规约编写功能的电子设备,图1以终端设备100为个人电脑为例进行说明,但是本申请不对此进行具体限定。
上述由开发人员手动编写形式规约的方式,存在着需要消耗大量的人力和时间,会导致形式规约的获取效率以及计算机系统开发效率较低的问题。
为了解决上述问题,本申请提供形式规约推荐方法、装置以及系统,能够在用户(即上述开发人员)手动编写待形式规约验证的代码和/或形式规约的过程中,自动基于用户已经输入的代码和/或代码的注释,得到多个候选形式规约,并将得到的多个候选形式规约显示给用户,该多个候选形式规约可以给用户提供良好的参考,若用户确定多个候选形式规约中有满足自己需求的候选形式规约,则用户可直接选择该候选形式规约作为目标形式规约,并使用选择出目标形式规约对待验证代码进行验证,用户无需进行整个形式规约的编写工作,能够节省用户的精力和时间,而且能够提高形式规约的获取效率以及计算机系统的开发效率。
为了便于更清楚地理解本申请提供的形式规约推荐方法、装置以及系统,下面结合对应的附图分别进行详细介绍。
首先,请参见图2,图2是本申请提供的一种形式规约推荐系统的结构示意图,该系统可包括终端设备100以及服务器300,并且,终端设备100以及服务器300通过网络200连接,网络200可以是广域网、局域网、点对点连接等方式,或它们的任意组合。
服务器300可以为用户提供共享资源服务,共享资源服务可以包括形式规约推荐服务、对象存储服务(object storage service,OBS)、云备份服务(cloud backup andrecovery,CBR)、数据管理服务(data admin service,DAS)等等,本申请不对服务器300可提供的共享资源服务类型进行限定。
示例性地,服务器300可包括多个形式规约推荐节点,每个形式规约推荐节点具体包括硬件、虚拟化服务以及规约推荐服务端应用。
硬件包括计算资源、存储资源以及网络资源。计算资源可以采用异构计算架构,例如,可以采用中央处理器(central processing unit,CPU)+图形处理器(graphicsprocessing unit,GPU)架构,CPU+AI芯片,CPU+GPU+AI芯片架构等等,此处不作具体限定。存储资源可以包括内存等等。这里,计算资源可以被分成多个计算单位资源,存储资源可以被分成多个存储单位资源,网络资源可以被分成多个网络单位资源。因此,图像处理平台可以按照用户的资源需求以单位资源为基础进行自由组合,从而用户的需要提供资源。例如,计算资源可以被分成5u的计算单位资源,存储资源可以被分成10G的存储单位资源,则计算资源和存储资源的组合可以是,5u+10G,5u+20G,5u+30u,…,10u+10G,10u+20G,10u+30u,…。
虚拟化服务是通过虚拟化技术将多个物理主机的资源构建为统一的资源池,并按照用户的需要灵活地隔离出相互独立的资源以运行用户的应用代码的服务。虚拟化服务可以包括虚拟机(virtual machine,VM)服务、裸金属服务器(bare metal server,BMS)服务以及容器(container)服务。其中,VM服务可以是通过虚拟化技术在多个物理主机上虚拟出虚拟机(virtual machine,VM)资源池以为用户按需提供VM进行使用的服务。BMS服务是在多个物理主机上虚拟出BMS资源池以为用户按需提供BMS进行使用的服务。容器服务是在多个物理主机上虚拟出容器资源池以为用户按需提供容器进行使用的服务。VM是模拟出来的一台虚拟的计算机,也即逻辑上的一台计算机。BMS是一种可弹性伸缩的高性能计算服务,计算性能与传统物理机无差别,具有安全物理隔离的特点。容器是一种内核虚拟化技术,可以提供轻量级的虚拟化,以达到隔离用户空间、进程和资源的目的。应理解,上述虚拟化服务中的VM服务、BMS服务以及容器服务仅仅是作为具体的事例,在实际应用中,虚拟化服务还可以其他轻量级或者重量级的虚拟化服务,此处不作具体限定。
规约推荐服务端应用,可以用于当用户在终端设备100上手动编写待形式规约验证的代码和/或形式规约时,接收终端设备100发送的用户输入的代码和/或代码的注释,然后基于用户输入的代码和/或代码的注释自动得到多个候选形式规约,并将得到生成的多个候选形式规约返回至终端设备100,由终端设备100显示给用户。用户在查看到多个候选形式规约时,可以根据自身的需求从多个候选形式规约中选择出目标形式规约。
具体实现中,服务器300可以向用户提供接口,规约推荐服务端应用可以通过该接口接收终端设备100发送的用户输入的代码和/或代码的注释,规约推荐服务端在得到多个候选形式规约后,可通过该接口将多个候选形式规约发送给终端设备100。具体地,接口可以是服务器300的控制台(console)或者应用程序接口(application program interface,API),控制台具体可以是用户与服务器300进行交互的一个应用程序或者网页页面,应理解,上述举例用于说明,本申请不作具体限定。
接下来,结合图3所示的本申请提供的一种形式规约推荐方法的交互示意图,对图2所示的形式规约推荐系统实现形式规约推荐的过程,进行更加详细地描述。如图3所示,本申请提供的形式规约推荐方法可包括如下步骤:
S301:终端设备100实时监测用户进行的代码编写操作。
其中,用户进行代码编写操作编写的代码可以为待形式规约验证的代码和/或形式规约,具体实现中,用户可以使用任何编程语言(如java、C、C++等)编写待形式规约验证的代码,可以使用任何形式规约语言(如模型规约语言、性质规约语言)编写形式规约,用户编写的待形式规约验证的代码可以为游戏应用程序对应的代码,也可以是视频播放应用程序等其他应用程序对应的代码,还可以是用于实现某种特定功能(例如显示时间或者计算跑步公里数等)的代码,用户编写的形式规约可以为数据模型规约、数据功能规约或者交互通信协议规约等,此处均不作具体限定。
可以理解,无论用户是在编写待形式规约验证的代码,还是在编写形式规约,用户在进行编写的过程中,均需要逐个字符进行输入,且用户在输入字符的过程中,还可以对输入的字符进行修改,从而得到最终的待形式规约验证的代码或者形式规约。
S302:终端设备100获取用户输入的代码和/或代码的注释。
其中,代码指用户在编写得到待形式规约验证的代码和/或形式规约的过程中,已经输入的字符。
如图4A和图4B所示的示例性图形用户界面,图4A所显示的代码为用户想要得到的完整、正确的形式规约,图4B所显示的代码“amount”为用户在编写图4A所示的形式规约时,已经输入的代码。
S303:终端设备100向服务器300发送用户输入的代码和/或代码的注释。
S304:服务器300基于终端设备100发送的代码和/或代码的注释,得到多个候选形式规约。
接下来,以基于代码得到多个候选形式规约为例,对基于代码和/或代码的注释,得到多个候选形式规约的过程进行详细描述。
在本申请具体的实施例中,服务器300可以参考如下方式中的一种或者多种组合实现基于代码得到多个候选形式规约:
方式1,服务器300中可以预先存储规则库,该规则库中的多条规则对应多个形式规约。当服务器300接收到终端设备100发送的代码时,服务器300可以获取该代码与规则库包括的多条规则之间的匹配度,然后将多条规则中匹配度大于第一匹配度阈值的规则对应的形式规约,作为候选形式规约。
具体实现中,多条规则与多个形式规约的对应关系可以为一一对应。第一匹配度阈值可以由用户根据实际情况进行自定义,例如,自定义为80%或者75%等,此处不作具体限定。
举例来讲,假设用户输入的代码为代码1,规则库包括规则A~规则E,其中,规则A对应形式规约a,规则B对应形式规约b,规则C对应形式规约c,规则D对应形式规约d,规则E对应形式规约e,第一匹配度阈值为50%,计算得到的代码1与规则A~规则E的匹配度对应为30%、55%、20%、65%、88%,则可将规则B对应的形式规约b、规则D对应的形式规约d和规则E对应的形式规约e确定为候选形式规约。
可选地,在计算得到代码与规则库包括的多条规则之间的匹配度之后,也可以根据计算结果对多条规则进行排序,然后将多条规则中匹配度较大的部分规则对应的形式规约,作为候选形式规约。具体实现中,可以根据实际情况自定义选择出的候选形式规约的数量,例如,自定义为5或者10,此处不作具体限定。
继续以用户输入的代码为代码1,规则库包括规则A~规则E,其中,规则A对应形式规约a,规则B对应形式规约b,规则C对应形式规约c,规则D对应形式规约d,规则E对应形式规约e,匹配度阈值为50%,计算得到的代码1与规则A~规则E的匹配度对应为30%、55%、20%、65%、88%为例,假设自定义的候选形式规约的数量为2,则按照匹配度对规则A~规则E进行排序可以得到多条规则的顺序为:规则E、规则D、规则B、规则A、规则C,因而可以得到两条候选形式规约:规则D对应的形式规约d和规则E对应的形式规约e。
具体实现中,多条规则以及多条规则对应的形式规约可为专门的规则设计人员预先根据多种应用场景得到,如此,将规则库中与代码匹配度大于第一匹配度阈值的规则对应的形式规约确定为候选形式规约,或者将匹配度较大的部分规则对应的形式规约确定为候选形式规约,均可以保证确定的候选形式规约的准确性。
方式2,服务器300在接收到终端设备100发送的代码时,将代码输入提前训练好的识别精度较高的形式规约生成模型进行识别,然后将形式规约生成模型输出的形式规约作为候选形式规约。其中,形式规约生成模型可以使用包括大量已知代码的样本集训练得到。
在具体实现中,服务器300在将代码输入到形式规约生成模型之后,形式规约生成模型可以得到多个形式规约以及多个形式规约的置信度,形式规约生成模型可以将多个形式规约中置信度大于置信度阈值的形式规约直接作为候选形式规约输出,也可以按照置信度大小进行排序,将置信度较大的部分形式规约作为候选形式规约输出,此处不作具体限定。置信度阈值、输出的候选形式规约的数量均可以由用户根据实际情况进行自定义,此处不作具体限定。
在本申请具体的实施例中,形式规约生成模型可以表示为:
y=f(x)
其中,y为形式规约,x为代码,f()为代码与形式规约之间的映射关系。
下面详细介绍形式规约生成模型的训练过程。
具体实现中,可以使用包括大量已知代码的样本集对机器学习模型进行训练得到形式规约生成模型。其中,样本集包括的大量已知代码,可以是用户手动编写的,也可以是从互联网上获取的,此处不作具体限定;机器学习模型可包括但不限于决策树、支持向量机、深度学习等等,深度学习模型可采用从自然语言处理生成代码的常用模型,例如基于转换器的双向编码表征(bidirectional encoder representations from transformers,简称BERT)、Seq2Seq、transformer等,本申请不作具体限定;使用样本集对机器学习模型进行训练得到形式规约生成模型的方式可以为监督训练,也可以为无监督训练,本申请不作具体限定。
以使用样本集对机器学习模型进行监督训练得到形式规约生成模型为例,当训练方式为监督训练时,样本集中包括的大量已知代码可以作为输入数据样本,除此之外,样本集中还可以包括大量已知代码中每个代码对应的已知形式规约,大量已知形式规约可以作为输出数据样本,大量已知形式规约可以是用户手动编写的,也可以是从互联网上获取的,此处不作具体限定。
具体地,可以将大量已知代码中第i个已知代码作为输入数据样本Si,将第i个已知代码对应的已知形式规约作为输出数据样本si。可以理解,通过上述组合,可以得到大量输入数据样本以及大量输出数据样本,且大量输入数据样本与大量输出数据样本之间存在一一对应关系。
在得到大量输入数据样本和大量输出数据样本之后,可以将大量输入数据样本依次作为机器学习模型的输入,并将每个输入数据样本对应的输出数据样本作为机器学习模型的输出值的参考,利用损失函数计算机器学习模型的输出值与上述数据输出样本之间的损失值,然后根据损失值调整机器学习模型的参数。在具体实现中,可以利用上述大量输入数据样本和大量输出数据样本迭代地对机器学习模型进行训练,不断调整机器学习模型的参数,直至机器学习模型可以根据输入的输入数据样本准确地输出与该输入数据样本对应的输出数据样本相同的输出值,从而得到训练好的形式规约生成模型。
方式3,服务器300中可以预先存储有大量代码和大量形式规约的一一对应关系,其中,每个形式规约用于对其对应的代码进行验证。当服务器300接收到终端设备100发送的代码时,服务器300可以获取该代码与预先存储的大量代码之间的匹配度,然后将大量代码中匹配度大于第二匹配度阈值的代码对应的形式规约,作为候选形式规约。其中,第二匹配度阈值可以由用户根据实际情况进行自定义,例如,自定义为80%或者75%等,此处不作具体限定。
应理解,基于代码的注释得到候选形式规约的过程以及基于代码和代码的注释得到候选形式规约的过程,均与上述基于代码得到候选形式规约的过程相类似,具体可以参考上文相关描述,为了说明书的简洁,此处不再展开赘述。
应理解,上述所列举的几种得到候选形式规约的实现方式仅仅是作为示例,在具体实现中,其他能够实现基于代码和/或代码的注释得到候选形式规约的方式,也属于本申请的保护范围,例如,结合规则匹配以及模型识别两种方式共同得到候选形式规约,或者利用最弱前置条件(weakest precondition)生成技术得到候选形式规约,本申请对此不作具体限定。
S305:服务器300将多个候选形式规约发送给终端设备100。
在一种可能的实施例中,服务器300向终端设备100发送的可以是排序后的多个候选形式规约,其中,多个候选形式规约中与代码和/或代码的注释匹配最优的候选形式规约排列在首位,便于用户方便快捷地从多个候选形式规约中查看到最优候选形式规约,优化用户体验。
可选地,服务器300在对多个候选形式规约进行排序后,也可以仅向终端设备100发送多个候选形式规约中与代码和/或代码的注释匹配最优的候选形式规约,或者仅向终端设备100发送多个候选形式规约中排序比较靠前的部分候选形式规约,此处不作具体限定。
在本申请具体的实施例中,服务器300可以参考如下方式中的任意一种实现对多个候选形式规约进行排序:
方式1',在多个候选形式规约是采用上述步骤S304中的方式1得到的情况下,可以基于多个候选形式规约对应的规则与代码和/或代码的注释之间的匹配度,对多个候选形式规约进行排序。
例如,可以按照匹配度从大到小对多个候选形式规约进行排序,并将对应匹配度最大的候选形式规约确定为最优候选形式规约排列在首位。
方式2',在多个候选形式规约是采用上述步骤S304中的方式2得到的情况下,可以基于多个候选形式规约对应的置信度,对多个候选形式规约进行排序。
例如,可以按照置信度从大到小对多个候选形式规约进行排序,并将对应置信度最大的候选形式规约确定为最优候选形式规约排列在首位。
方式3',在多个候选形式规约是采用上述步骤S304中的方式3得到的情况下,可以基于多个候选形式规约对应的服务器300预先存储的代码和/或代码的注释与服务器300接收到的终端设备100发送的代码和/或代码的注释之间的匹配度,对多个候选形式规约进行排序。
应理解,上述所列举的几种实现候选形式规约排序的方式仅仅是作为示例,其他能够实现候选形式规约的排序的方式也属于本申请的保护范围,本申请对此不作具体限定。
可选地,服务器300在向终端设备100发送多个候选形式规约时,可以将多个候选形式规约对应的匹配度或者置信度一并发送给终端设备100。
S306:终端设备100向用户显示多个候选形式规约。
终端设备100向用户显示的多个候选形式规约可以是排序后的多个候选形式规约。若终端设备100还接收到了服务器300发送的多个候选形式规约对应的匹配度或者置信度,则终端设备100在向用户显示多个候选形式规约时,可以将多个候选形式规约对应的匹配度或者置信度一并显示给用户,如此,便于用户方便快捷地从多个候选形式规约中查看到最优候选形式规约,优化用户体验。
S307:终端设备100获取用户从多个候选形式规约中选择出的目标形式规约。
S308:终端设备100使用目标形式规约对待验证代码进行验证。
由上文对中间表示和结构化数据的介绍可知,代码对应的中间表示相较于代码本身,更便于分析,且得到的分析结果通常也会更准确,结构化数据相较于非结构化数据,更易于存储、管理和处理,因此,在本申请具体的实施例中,图2所示的形式规约推荐系统也可以参考图5所示的交互示意图实现形式规约推荐:
S501:终端设备100实时监测用户进行的代码编写操作。
S502:终端设备100获取用户输入的代码和/或代码的注释。
S503:终端设备100向服务器300发送代码和/或代码的注释。
S504:服务器300获取代码对应的中间表示和/或代码的结构化注释。
S505:服务器300基于代码对应的中间表示和/或代码的结构化注释,得到多个候选形式规约。
S506:服务器300将多个候选形式规约发送给终端设备100。
S507:终端设备100向用户显示多个候选形式规约。
S508:终端设备100获取用户从多个候选形式规约中选择出的目标形式规约。
S509:终端设备100使用目标形式规约对待验证代码进行验证。
步骤S504的具体实现过程可以为:服务器300可以从编译器前端获取代码对应的中间表示,该中间表示的形式可以为三地址码、控制流程图或者静态单赋值等,此处不作具体限定;服务器300可以对代码的注释进行结构化处理,从而得到代码的结构化注释。可选地,服务器300在对代码的注释进行结构化处理时,还可以对注释进行清洗,如删除注释中包括的特殊符号,如“*”、“#”等,或者,对注释中包括的词的先后顺序进行调整等,此处不作具体限定。
可以看出,步骤S501、S502、S503、S506、S507、S508、S509与步骤S301、S302、S303、S305、S306、S307、S308对应相同,具体可以参考上文对步骤S301、S302、S303、S305、S306、S307、S308的相关描述,此处不再展开赘述。
步骤S505的具体实现过程与上述步骤S304的具体实现过程相类似,可以参考上文对步骤S304的相关描述,此处不再展开赘述。
可选地,终端设备100在获取到用户输入的代码和/或代码的注释后,也可以基于代码和/或代码的注释直接获取代码对应的中间表示和/或代码的结构化注释,然后向服务器300发送代码对应的中间表示和/或代码的结构化注释。
可以理解,由于代码对应的中间表示相较于代码本身,更便于分析,且得到的分析结果通常也会更准确,代码的结构化注释相较于代码的注释(指结构化处理之前的注释),更易于处理,且得到的处理结果通常也会更准确,因此,上述基于代码对应的中间表示和/或代码的结构化注释,得到的多个候选形式规约,相较于基于代码和/或代码的注释,得到的多个候选形式规约,可以提高候选形式规约的准确度,能够使得最终向用户推荐的多个候选形式规约更精准。
在本申请具体的实施例中,终端设备100还可以通过关键词触发步骤S301或者S501的执行,具体地,终端设备100可以监测用户是否输入了关键词(如requires或者prey等),在监测到用户输入了关键词时,执行步骤S301或者S501。其中,用户输入的关键词所在的位置,为用户期望开始进行形式规约推荐的位置,如此可以使得应用本申请提供的形式规约推荐方法的设备(如图1所示终端设备100)或者系统(如图2所示形式规约推荐系统),仅监测用户在输入关键词之后进行的代码编写操作,不监测用户在输入关键词之前进行的代码编写操作,可以优化用户体验以及节省计算资源。
更具体地,终端设备100可以实时监测用户输入的内容,然后将用户输入的内容与关键词库中的多个关键词进行匹配,确定关键词库中是否存在与用户输入的内容匹配的关键词,在确定存在匹配的关键词的情况下,确定用户输入了关键词,反之,则确定用户没有输入关键词,继续监测用户输入的内容。
可选地,终端设备100也可以接收用户输入的时间范围,该时间范围为用户会进行代码编写操作的时间范围,也是用户期望进行形式规约推荐的时间,如此可以使得应用本申请提供的形式规约推荐方法的设备或者系统,仅监测用户在该时间范围内进行的代码编写操作,基于该时间范围内的代码编写操作进行形式规约推荐,不监测用户在该时间范围外进行的代码编写操作,可以优化用户体验以及节省计算资源。
具体实现中,服务器300在向终端设备100发送多个候选形式规约之前,或者终端设备100在向用户显示多个候选形式规约之前,还可以对多个候选形式规约进行筛选,过滤掉一部分明显没有价值的规约,例如,过滤掉有明显错误(如语法错误或者语义错误等)的规约,如此,可以使得最终向用户推荐的多个候选形式规约更精准。
综上可知,本申请提供的形式规约推荐系统和形式规约推荐方法,可实时监测用户进行的代码编写操作,获取用户输入的代码和/或代码的注释,然后根据代码和/或代码的注释自动得到多个候选形式规约,最后将得到的多个候选形式规约推荐给用户,该多个候选形式规约可以给用户提供良好的参考,若用户确定多个候选形式规约中有满足自己需求的候选形式规约,则用户可直接选择该候选形式规约作为目标形式规约,并使用选择出的目标形式规约对待验证代码进行验证,用户无需进行整个形式规约的编写工作,能够节省用户的精力和时间,而且能够提高形式规约的获取效率以及计算机系统的开发的效率。
为了便于理解本申请实施例所提供方案的有益效果,下面介绍上述步骤S301~S308以及步骤S501~S509的过程中,一些示例性的图形用户界面。请参见图6,图6是本申请提供的一种示例性图形用户界面600,由图6可知,界面600可包括代码输入区域610。
其中,代码输入区域610可以为用户提供输入代码和代码的注释的接口,用户可在该区域输入关键词以及进行代码编写操作,比如图6中显示的“requires”,可为用户输入的关键词,“requires”所在行下方的代码和代码的注释,可为用户在代码输入区域610进行代码编写操作时输入的代码和代码的注释。
可选地,界面600还可以为用户提供“新增代码”控件620,如图6所示,用户触摸或者点击该控件后,可以上传已经编辑好的代码和/或代码的注释,并在代码输入区域610显示用户上传的代码和/或代码的注释。
应用本申请提供的形式规约推荐方法的设备或者系统在监测到用户输入了关键词“requires”之后,可以执行上述步骤S301~S304或者执行上述步骤S501~S505,得到多个候选形式规约,并对多个候选形式规约进行排序后将排序结果显示给用户,如图6所示的规约推荐弹窗630,规约推荐弹窗630中显示的形式规约e、形式规约d、形式规约a和形式规约c,可为应用本申请提供的形式规约推荐方法的设备或者系统向用户推荐的排序后的候选形式规约。若用户确定弹窗630中有满足自己需求的候选形式规约,则可以点击该形式规约,如点击形式规约d,然后点击弹窗630中显示的“确定”控件6301,将点击的候选形式规约确定为目标形式规约。
应理解,图6用于举例说明,本申请不作具体限定。
根据图6所示的界面600可知,本申请提供的形式规约推荐方法,对于用户来说,在界面600所示的接口输入代码和/或代码的注释后,可在界面600所示的显示界面获得多个排序后的候选形式规约,该排序结果可以给用户提供良好的参考,若用户确定排序结果中有满足自己需求的候选形式规约,则用户可选择该规约作为目标形式规约,无需进行整个形式规约的编写工作,能够节省开发人员的精力和时间。
应理解,图3以及图5所示的本申请提供的形式规约推荐方法除了可以应用于图2所示的形式规约推荐系统之外,还可以应用于图1所示的终端设备100,即图3以及图5所示实施例中由服务器300执行的步骤均可以由终端设备100执行,如此,也可以实现推荐多个候选形式规约给用户,若用户确定多个候选形式规约中有满足自己需求的候选形式规约,则用户可直接选择该候选形式规约作为目标形式规约,并使用选择出的目标形式规约对待验证代码进行验证,用户无需进行整个形式规约的编写工作,能够节省用户的精力和时间,而且能够提高形式规约的获取效率以及计算机系统的开发的效率。
接下来介绍本申请提供的形式规约推荐装置,该装置可以应用于图1所示的终端设备100,或者,应用于图2所示的形式规约推荐系统,在应用于图2所示的形式规约推荐系统时,可以应用于图2所示的服务器300。应理解,形式规约推荐装置内部的单元模块也可以有多种划分,各个模块可以是软件模块,也可以是硬件模块,也可以部分是软件模块部分是硬件模块,本申请不对其进行限制。当形式规约推荐装置应用于图2所示的服务器300,且形式规约推荐装置包括多个单元模块时,该多个单元模块中的各个模块可以部署于同一个服务器300上,也可以部署于不同的服务器300上,本申请不作具体限定。
参见图7,图7是本申请示例性示出的一种形式规约推荐装置700的结构示意图,该装置700包括:获取模块710和规约推荐模块720。
获取模块710,用于获取用户输入的代码和/或代码的注释。
规约推荐模块720,用于基于用户输入的代码和/或代码的注释,得到多个候选形式规约,并向用户显示多个候选形式规约。
在一种可能的实现方式中,规约推荐模块720,具体可以通过如下方式实现基于用户输入的代码和/或代码的注释,得到多个候选形式规约:将代码和/或代码的注释,输入形式规约生成模型进行识别,将形式规约生成模型输出的形式规约作为候选形式规约。
在一种可能的实现方式中,规约推荐模块720,具体可以通过如下方式实现基于用户输入的代码和/或代码的注释,得到多个候选形式规约:首先,获取代码和/或代码的注释与规则库包括的多条规则之间的匹配度,然后,将多条规则中匹配度大于匹配度阈值的规则对应的形式规约,作为候选形式规约。
在一种可能的实现方式中,规约推荐模块720,具体可以通过如下方式实现基于用户输入的代码和/或代码的注释,得到多个候选形式规约:基于代码对应的中间表示和/或代码的结构化注释,生成多个候选形式规约,其中,上述代码的结构化注释是对代码的注释进行结构化处理得到的。
在一种可能的实现方式中,获取模块710,具体可以通过如下方式实现获取用户输入的代码和/或代码的注释:通过关键词触发用户数输入的代码和/或代码的注释的获取。
在一种可能的实现方式中,获取模块710,具体可以通过如下方式实现通过关键词触发用户数输入的代码和/或代码的注释的获取:监测用户是否输入了关键词,在监测到用户输入了关键词的情况下,获取用户输入的代码和/或代码的注释。上述关键词所在的位置,为用户期望开始进行形式规约推荐的位置,如此可以使得应用本申请提供的形式规约推荐方法的设备或者系统,仅监测用户在输入关键词之后进行的代码编写操作,不监测用户在输入关键词之前进行的代码编写操作,可以优化用户体验以及节省计算资源。
在一种可能的实现方式中,获取模块710,还可以通过如下方式实现获取用户输入的代码和/或代码的注释:接收用户输入的时间范围,该时间范围为用户会进行代码编写操作的时间范围,也是用户期望进行形式规约推荐的时间,如此可以使得应用本申请提供的形式规约推荐方法的设备或者系统,仅监测用户在该时间范围内进行的代码编写操作,基于该时间范围内的代码编写操作进行形式规约推荐,不监测用户在该时间范围外进行的代码编写操作,可以优化用户体验以及节省计算资源。
在一种可能的实现方式中,规约推荐模块720,在向用户显示多个候选形式规约时,可以向用户显示排序后的多个候选形式规约,其中,多个候选形式规约中与代码和/或代码的注释匹配最优的候选形式规约排列在首位,如此,可以便于用户方便快捷地从多个候选形式规约中查看到最优的候选形式规约。
在一种可能的实现方式中,如图7所示,装置700还包括验证模块730,当获取模块710还用于获取用户从多个候选形式规约中选择出的目标形式规约时,验证模块730用于使用目标形式规约对待验证代码进行验证。具体地,上述形式规约推荐装置700执行各种操作的具体实现,可参照上述形式规约推荐方法实施例中相关内容中的描述,为了说明书的简洁,这里不再赘述。
综上可知,本申请提供的形式规约推荐装置(如图7所示的装置700),可通过获取用户输入的代码和/或代码的注释,然后根据代码和/或代码的注释自动生成多个候选形式规约,最后将生成的多个候选形式规约推荐给用户,该多个候选形式规约可以给用户提供良好的参考,若用户确定多个候选形式规约中有满足自己需求的候选形式规约,则用户可直接选择该候选形式规约作为目标形式规约,并使用选择出的目标形式规约对待验证代码进行验证,用户无需进行整个形式规约的编写工作,能够节省用户的精力和时间,而且能够提高形式规约的获取效率以及计算机系统的开发的效率。
参见图8,图8是本申请提供的一种计算设备800的结构示意图,如图8所示,计算设备800包括:处理器810、存储器820和通信接口830,其中,处理器810、存储器820、通信接口830之间可以通过总线840相互连接。
处理器810可以读取存储器820中存储的程序代码(包括指令),执行存储器820中存储的程序代码,使得计算设备800执行上述方法实施例提供的形式规约推荐方法中的步骤,或者使得计算设备800部署形式规约推荐装置700。
处理器810可以有多种具体实现形式,例如中央处理单元(central processingunit,CPU),或者CPU和硬件芯片的组合。上述硬件芯片可以是专用集成电路(application-specific integrated circuit,ASIC)、可编程逻辑器件(programmable logic device,PLD)或其组合。上述PLD可以是复杂可编程逻辑器件(complex programmable logicdevice,CPLD)、现场可编程逻辑门阵列(field-programmable gate array,FPGA)、通用阵列逻辑(generic array logic,GAL)或其任意组合。处理器810执行各种类型的数字存储指令,例如存储在存储器820中的软件或者固件程序,它能使计算设备800提供多种服务。
存储器820用于存储程序代码,并由处理器810来控制执行,以执行上述图3以及图5任一实施例中的处理步骤。程序代码中可以包括一个或多个软件模块,这一个或多个软件模块可以为图7实施例中提供的软件模块,如获取模块710、规约推荐模块720和验证模块730。
存储器820可以包括易失性存储器(volatile memory),例如随机存取存储器(random access memory,RAM);存储器820也可以包括非易失性存储器(non-volatilememory),例如只读存储器(read-only memory,ROM)、快闪存储器(flash memory)、硬盘(hard disk drive,HDD)或固态硬盘(solid-state drive,SSD);存储器820还可以包括上述种类的组合。
通信接口830可以为有线接口(例如以太网接口、光纤接口、其他类型接口(例如,infiniBand接口))或无线接口(例如蜂窝网络接口或使用无线局域网接口),用于与其他计算设备或装置进行通信。通信接口830可以采用传输控制协议/网际协议(transmissioncontrol protocol/internet protocol,TCP/IP)之上的协议族,例如,远程函数调用(remote function call,RFC)协议、简单对象访问协议(simple object accessprotocol,SOAP)协议、简单网络管理协议(simple network management protocol,SNMP)协议、公共对象请求代理体系结构(common object request broker architecture,CORBA)协议以及分布式协议等等。
总线840可以是快捷外围部件互连标准(peripheral component interconnectexpress,PCIe)总线,或扩展工业标准结构(extended industry standard architecture,EISA)总线、统一总线(unified bus,Ubus或UB)、计算机快速链接(compute express link,CXL)、缓存一致互联协议(cache coherent interconnect for accelerators,CCIX)等。总线840可以分为地址总线、数据总线、控制总线等。总线840除包括数据总线之外,还可以包括电源总线、控制总线和状态信号总线等。但是为了清楚说明起见,在图中将各种总线都标为总线840。为便于表示,图8中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
上述计算设备800用于执行图3或者图5所示的本申请提供的形式规约推荐方法,与上述方法实施例属于同一构思,其具体实现过程详见上述方法实施例,这里不再赘述。应当理解,计算设备800仅为本申请实施例提供的一个例子,并且,计算设备800可具有比图8示出的部件更多或更少的部件,可以组合两个或更多个部件,或者可具有部件的不同配置实现。
本申请还提供一种计算机可读存储介质,该计算机可读存储介质中存储有指令,该指令被运行时可以实现上述实施例中记载的形式规约推荐方法的部分或者全部步骤。
本申请还提供一种计算机程序产品,当计算机程序产品被计算机读取并执行时,可以实现上述方法实施例中记载的形式规约推荐方法的部分或者全部步骤。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
在上述实施例中,可以全部或部分地通过软件、硬件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如软盘、硬盘、磁带)、光介质、或者半导体介质等。
以上所述,仅为本申请的具体实施方式。熟悉本技术领域的技术人员根据本申请提供的具体实施方式,可想到变化或替换,都应涵盖在本申请的保护范围之内。

Claims (19)

1.一种形式规约推荐方法,其特征在于,所述方法包括:
获取用户输入的代码和/或代码的注释;
基于所述代码和/或代码的注释,得到多个候选形式规约,并向所述用户显示所述多个候选形式规约。
2.根据权利要求1所述的方法,其特征在于,所述基于所述代码和/或代码的注释,得到多个候选形式规约,包括:
将所述代码和/或代码的注释,输入形式规约生成模型进行识别,将所述形式规约生成模型输出的形式规约作为候选形式规约。
3.根据权利要求1所述的方法,其特征在于,所述基于所述代码和/或代码的注释,得到个候选形式规约,包括:
基于所述代码和/或代码的注释与规则库包括的多条规则之间的匹配度,将所述多条规则中匹配度大于匹配度阈值的规则对应的形式规约作为候选形式规约。
4.根据权利要求1所述的方法,其特征在于,所述基于所述代码和/或代码的注释,得到多个候选形式规约,包括:
基于所述代码对应的中间表示和/或代码的结构化注释,得到多个候选形式规约,其中,所述代码的结构化注释是对所述代码的注释进行结构化处理得到的。
5.根据权利要求1至4任一项所述的方法,其特征在于,所述获取用户输入的代码和/或代码的注释,包括:
通过关键词触发对所述用户输入的代码和/或代码的注释的获取。
6.根据权利要求5所述的方法,其特征在于,所述通过关键词触发对所述用户输入的代码和/或代码的注释的获取,包括:
在所述用户输入了关键词时,获取所述用户输入的代码和/或代码的注释。
7.根据权利要求1至6任一项所述的方法,其特征在于,所述向所述用户显示所述多个候选形式规约,包括:
向所述用户显示排序后的所述多个候选形式规约,其中,所述多个候选形式规约中与所述代码和/或代码的注释匹配最优的候选形式规约排列在首位。
8.根据权利要求1至7任一项所述的方法,其特征在于,所述方法还包括:
获取所述用户从所述多个候选形式规约中选择出的目标形式规约;
使用所述目标形式规约对待验证代码进行验证。
9.一种形式规约推荐装置,其特征在于,所述装置包括:
获取模块,用于获取用户输入的代码和/或代码的注释;
规约推荐模块,用于基于所述代码和/或代码的注释,得到多个候选形式规约,并向所述用户显示所述多个候选形式规约。
10.根据权利要求9所述的装置,其特征在于,所述规约推荐模块,具体用于:
将所述代码和/或代码的注释,输入形式规约生成模型进行识别,将所述形式规约生成模型输出的形式规约作为候选形式规约。
11.根据权利要求9所述的装置,其特征在于,所述规约推荐模块,具体用于:
基于所述代码和/或代码的注释与规则库包括的多条规则之间的匹配度,将所述多条规则中匹配度大于匹配度阈值的规则对应的形式规约,作为候选形式规约。
12.根据权利要求9所述的装置,其特征在于,所述规约推荐模块,具体用于:
基于所述代码对应的中间表示和/或代码的结构化注释,得到多个候选形式规约,其中,所述代码的结构化注释是对所述代码的注释进行结构化处理得到的。
13.根据权利要求9至12任一项所述的装置,其特征在于,所述获取模块,具体用于:
通过关键词触发对所述用户输入的代码和/或代码的注释的获取。
14.根据权利要求13所述的装置,其特征在于,所述获取模块,具体用于:
在所述用户输入了关键词的情况下,获取所述用户输入的代码和/或代码的注释。
15.根据权利要求9至14任一项所述的装置,其特征在于,所述规约推荐模块,具体用于:
向所述用户显示排序后的所述多个候选形式规约,其中,所述多个候选形式规约中与所述代码和/或代码的注释匹配最优的候选形式规约排列在首位。
16.根据权利要求9至15任一项所述的装置,其特征在于,所述装置还包括验证模块;
所述获取模块,还用于获取所述用户从所述多个候选形式规约中选择出的目标形式规约;
所述验证模块,用于使用所述目标形式规约对待验证代码进行验证。
17.一种计算设备,其特征在于,所述计算设备包括处理器和存储器;所述处理器用于执行所述存储器存储的指令,使得所述计算设备实现权利要求1至8任一项所述的方法。
18.一种形式规约推荐系统,其特征在于,所述系统包括终端设备和服务器;
所述终端设备,用于获取用户输入的代码和/或代码的注释;
所述终端设备,用于将所述代码和/或代码的注释发送给所述服务器;
所述服务器,用于根据所述代码和/或代码的注释,得到多个候选形式规约,并将所述多个候选形式规约发送给所述终端设备;
所述终端设备,用于向所述用户显示所述多个候选形式规约。
19.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有指令,所述指令用于实现权利要求1至8任一项所述的方法。
CN202210074154.XA 2022-01-21 2022-01-21 形式规约推荐方法、装置以及系统 Pending CN116540978A (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202210074154.XA CN116540978A (zh) 2022-01-21 2022-01-21 形式规约推荐方法、装置以及系统
PCT/CN2022/139299 WO2023138270A1 (zh) 2022-01-21 2022-12-15 形式规约推荐方法、装置以及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210074154.XA CN116540978A (zh) 2022-01-21 2022-01-21 形式规约推荐方法、装置以及系统

Publications (1)

Publication Number Publication Date
CN116540978A true CN116540978A (zh) 2023-08-04

Family

ID=87347771

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210074154.XA Pending CN116540978A (zh) 2022-01-21 2022-01-21 形式规约推荐方法、装置以及系统

Country Status (2)

Country Link
CN (1) CN116540978A (zh)
WO (1) WO2023138270A1 (zh)

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018156207A (ja) * 2017-03-15 2018-10-04 富士通株式会社 コーディング規約生成プログラム、情報処理装置およびコーディング規約生成方法
CN110276080B (zh) * 2019-06-28 2023-10-17 第四范式(北京)技术有限公司 一种语义处理方法和系统
CN111723192B (zh) * 2020-06-19 2024-02-02 南开大学 代码推荐方法和装置
CN113923268B (zh) * 2021-09-08 2023-11-14 山东信通电子股份有限公司 一种针对多版本通信规约的解析方法、设备及存储介质

Also Published As

Publication number Publication date
WO2023138270A1 (zh) 2023-07-27

Similar Documents

Publication Publication Date Title
US11093707B2 (en) Adversarial training data augmentation data for text classifiers
US11042794B2 (en) Extensible validation framework for question and answer systems
US10831762B2 (en) Extracting and denoising concept mentions using distributed representations of concepts
WO2022218186A1 (zh) 个性化知识图谱的生成方法、装置及计算机设备
JP7358698B2 (ja) 語義表現モデルの訓練方法、装置、デバイス及び記憶媒体
WO2022237253A1 (zh) 一种测试用例生成方法、装置及设备
CN112106056A (zh) 构造虚构的话语树来提高回答聚敛性问题的能力
US11928156B2 (en) Learning-based automated machine learning code annotation with graph neural network
AU2022223275B2 (en) Auditing citations in a textual document
CN112417090A (zh) 利用未提交的用户输入数据来提高任务性能
US11080025B2 (en) Back-end application code stub generation from a front-end application wireframe
CN116360735A (zh) 一种表单生成方法、装置、设备和介质
CN110442877B (zh) 使用机器人规划作为平行语言语料库
JP2023002690A (ja) セマンティックス認識方法、装置、電子機器及び記憶媒体
KR20110035944A (ko) 관계 맵 생성자
CN111695325A (zh) 用于自然语言处理的基于解析树的向量化
CN112329429B (zh) 文本相似度学习方法、装置、设备以及存储介质
KR102465622B1 (ko) 인공지능 및 자연어 처리 기반의 의료 콘텐츠 저작 및 관리 시스템
US20220043848A1 (en) Generating entity relation suggestions within a corpus
JP2023508599A (ja) 会話型エージェント・システム、方法、プログラム
US11797538B2 (en) Message correlation extraction for mainframe operation
CN116540978A (zh) 形式规约推荐方法、装置以及系统
US11995562B2 (en) Integrating documentation knowledge with log mining for system diagnosis
US20150052184A1 (en) Distributed processing systems
CN112162738B (zh) 数据转化方法、装置、终端设备及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication