一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

代码模板提取方法及相关设备与流程

2022-12-09 19:54:05 来源:中国专利 TAG:


1.本技术涉及程序开发技术领域,尤其涉及一种代码模板提取方法及相关设备。


背景技术:

2.在软件开发过程中,代码模板对于提高开发人员的开发效率很有帮助。代码模板能够减少代码编写量,简化开发过程,缩短开发周期,节省开发成本。然而,目前市面上的代码模板存在两个问题:一方面,现有的代码模板内容简单、数量有限,无法满足开发人员的需求;另一方面,目前的代码模板主要通过人为总结得到,受主观影响较大,可能导致获得的代码模板和开发人员的实际需要存在较大偏差。


技术实现要素:

3.本技术实施例提供了一种代码模板提取方法及相关设备,能够自动从软件项目提取代码模板,提高代码模板的可用性。
4.本技术第一方面公开了一种代码模板提取方法,所述方法包括:获取多个软件项目;针对每个软件项目,生成一个图结构,所述图结构展示所述软件项目包含的代码文件的语法结构和方法调用关系;求取每两个图结构之间的最大公共子图;计算每两个最大公共子图之间的相似度;根据每两个最大公共子图之间的相似度,对所有所述最大公共子图进行聚类,得到至少一个相似子图组;对于所述至少一个相似子图组中的每个目标相似子图组,根据所述目标相似子图组中的目标子图的每个节点对应的代码和每条边对应的方法调用关系生成代码模板。
5.本技术实施例提供的代码模板提取方法能够从数量众多(例如十万或百万数量级)的软件项目自动提取代码模板,提取出的代码模板功能丰富,能够满足开发人员的需求。该方法通过图结构展示软件项目的方法调用关系,使得提取出的代码模板具有完整的调用链,提高了代码模板的可用性。该方法自动提取代码模板,避免了人为总结的偏差和缺漏。
6.在一些可选的实施方式中,所述针对每个软件项目,生成一个图结构包括:对所述软件项目的每个代码文件进行语法分析,得到每个代码文件的抽象语法树,所述代码文件中定义的每个类对应一个抽象语法树;对所述软件项目的每个代码文件进行代码依赖分析,得到每个代码文件的方法调用关系;结合所述软件项目的每个代码文件的抽象语法树和方法调用关系,得到所述软件项目对应的图结构。
7.本技术实施例提供的代码模板生成方法对代码文件中的每个类进行语法分析,将代码文件中的每个类转化为抽象语法树,从而将代码文件转化为结构化表示。
8.在一些可选的实施方式中,所述求取每两个图结构之间的最大公共子图包括:采用基于最大团的最大公共子图算法,求取每两个图结构之间的最大公共子图。
9.在一些可选的实施方式中,所述求取每两个图结构之间的最大公共子图包括:对所述两个图结构的所有节点包含的类、方法和变量进行模糊化处理;生成所述两个图结构
的关联图,所述关联图的每个节点为所述两个图结构的一个节点组合,所述关联图的每条边对应所述两个图结构中同时存在或同时不存在的边;对所述关联图求解最大团,得到所述最大公共子图。
10.在一些可选的实施方式中,所述对所述关联图求解最大团包括:通过禁忌搜索算法对所述关联图求解最大团。
11.基于最大团的最大公共子图算法,可以解决非确定性多项式困难问题,快速准确地获得每两个图结构之间的最大公共子图。
12.在一些可选的实施方式中,所述计算每两个最大公共子图之间的相似度包括:对所述两个最大公共子图进行随机遍历;统计所述两个最大公共子图中各个节点被访问的频率;计算所述两个最大公共子图中各个节点被访问的频率的匹配度,将所述匹配度作为所述两个最大公共子图的相似度。
13.在一些可选的实施方式中,所述计算每两个最大公共子图之间的相似度之后,所述方法还包括:将每两个最大公共子图之间的相似度进行归一化;将归一化后的每两个最大公共子图之间的相似度组成相似度矩阵。
14.在一些可选的实施方式中,所述根据每两个最大公共子图之间的相似度,对所述最大公共子图进行聚类包括:根据每两个最大公共子图之间的相似度,对所述最大公共子图进行层次聚类。
15.在一些可选的实施方式中,所述目标相似子图组的最大公共子图的数量大于或等于第一预设数量。在一些可选的实施方式中,所述目标相似子图组的数量小于或等于第二预设数量。
16.相似子图组的最大公共子图的数量大于或等于第一预设数量,表示相似子图组对应代码在代码文件中出现频率较高(即通用性较强)。相似子图组的数量大于或等于第二预设数量,表明最大公共子图的分组过多。通过对相似子图组进行筛选,可以获取更具通用性的代码模板。
17.在一些可选的实施方式中,所述根据所述目标相似子图组中的目标子图的每个节点对应的代码和每条边对应的方法调用关系生成代码模板之前,所述方法还包括:计算所述目标相似子图组中每个最大公共子图与其他最大公共子图的距离平方和,将距离平方和最小的最大公共子图作为所述目标子图;或者计算所述目标相似子图组中每个最大公共子图与其他最大公共子图的平均距离,将平均距离最小的最大公共子图作为所述目标子图。
18.在一些可选的实施方式中,所述根据所述目标相似子图组中的目标子图的每个节点对应的代码和每条边对应的方法调用关系生成代码模板之后,所述方法还包括:补充所述代码模板缺失的调用链;和/或清理所述代码模板的无用逻辑代码。
19.在一些可选的实施方式中,所述补充所述代码模板缺失的调用链;和/或清理所述代码模板的无用逻辑代码包括:通用控制流图补充所述代码模板缺失的调用链;和/或通用控制流图清理所述代码模板的无用逻辑代码。
20.本技术第二方面公开了一种计算机可读存储介质,包括计算机指令,当所述计算机指令在电子设备上运行时,使得所述电子设备执行如第一方面所述的代码模板提取方法。
21.本技术第三方面公开了一种电子设备,所述电子设备包括处理器和存储器,所述
存储器,用于存储指令,所述处理器用于调用所述存储器中的指令,使得所述电子设备执行如第一方面所述的代码模板提取方法。
22.本技术第四方面公开了一种芯片系统,该芯片系统应用于电子设备;芯片系统包括接口电路和处理器;接口电路和处理器通过线路互联;接口电路用于从电子设备的存储器接收信号,并向处理器发送信号,信号包括存储器中存储的计算机指令;当处理器执行该计算机指令时,芯片系统执行如第一方面所述的代码模板提取方法。
23.应当理解地,上述提供的第二方面的计算机可读存储介质,第三方面的电子设备及第四方面的芯片系统均与上述第一方面的方法对应,因此,其所能达到的有益效果可参考上文所提供的对应的方法中的有益效果,此处不再赘述。
附图说明
24.图1是本技术实施例提供的代码模板提取方法的应用场景示意图。
25.图2是本技术实施例提供的代码模板提取方法的流程图。
26.图3是对软件项目的每个代码文件进行语法分析,得到每个代码文件的抽象语法树的示意图。
27.图4是结合软件项目的每个代码文件的抽象语法树和方法调用关系,得到软件项目对应的图结构的示意图。
28.图5是两个图结构之间的最大公共子图的示意图。
29.图6是对图结构的节点中包含的类、方法和变量进行模糊化处理的示意图。
30.图7是两个图结构之间的最大公共子图的另一示意图。
31.图8是本技术实施例提供的电子设备的结构示意图。
具体实施方式
32.为了便于理解,示例性的给出了部分与本技术实施例相关概念的说明以供参考。
33.需要说明的是,本技术中“至少一个”是指一个或者多个,“多个”是指两个或多于两个。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b可以表示:单独存在a,同时存在a和b,单独存在b的情况,其中a,b可以是单数或者复数。本技术的说明书和权利要求书及附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不是用于描述特定的顺序或先后次序。
34.为了更好地理解本技术实施例提供的代码模板提取方法及相关设备,下面首先对本技术代码模板提取方法的应用场景进行描述。
35.图1是本技术实施例提供的代码模板提取方法的应用场景示意图。
36.如图1所示,本技术实施例提供的代码模板提取方法应用于电子设备10(图中示出为笔记本)。根据本技术实施例提供的代码模板提取方法,电子设备10能够从数量众多(例如十万或百万数量级)的软件项目自动提取代码模板,提取出的代码模板功能丰富,能够满足开发人员的需求。该方法通过图结构展示软件项目的方法调用关系,使得提取出的代码模板具有完整的调用链,提高了代码模板的可用性。该方法自动提取代码模板,避免了人为总结的偏差和缺漏。
37.电子设备10可以是平板电脑、桌上型计算机、笔记本、掌上电脑、云端服务器等。
38.图2是本技术实施例提供的代码模板提取方法的流程图。代码模板提取方法应用于电子设备。
39.如图2所示,本技术实施例提供的代码模板提取方法具体包括:
40.201,获取多个软件项目。
41.每个软件项目用于实现一项软件开发。每个软件项目包括至少一个代码文件。每个代码文件包括多行代码。
42.电子设备可以包括内部存储器,电子设备从内部存储器获取多个软件项目。或者,电子设备可以连接外部设备(例如项目服务器),电子设备从外部设备获取多个软件项目。
43.电子设备可以通过访问预设的本地路径获取多个软件项目。或者,电子设备可以通过访问指定的网络路径获取多个软件项目。
44.202,针对每个软件项目,生成一个图结构。
45.图结构用于展示软件项目包含的代码文件的语法结构和方法调用关系。
46.在本技术的一个实施例中,针对每个软件项目,对软件项目的每个代码文件进行语法分析,得到每个代码文件的抽象语法树,代码文件中定义的每个类对应一个抽象语法树;对软件项目的每个代码文件进行代码依赖分析,得到每个代码文件的方法调用关系;结合软件项目的每个代码文件的抽象语法树和方法调用关系,得到软件项目对应的图结构。
47.抽象语法树(abstract syntax tree,ast)是源代码的语法结构的一种抽象表示。抽象语法树以树状的形式表现源代码的语法结构,抽象语法树的每个节点表示源代码的一种结构,例如类、方法等。
48.对软件项目的每个代码文件进行语法分析,就是对代码文件的语法结构进行分解。
49.举例来说,代码文件包括以下代码:
[0050][0051]
该段代码的主体为helloworld类,该类中有main方法,main方法中调用了system.out.println方法,用于输出“hello world”字符串。
[0052]
图3是对软件项目的每个代码文件进行语法分析,得到每个代码文件的抽象语法树的示意图。如图3所示,对上述代码进行语法分析,可以得到图3所示的抽象语法树。该抽象语法树包含jccompilationunit、jcclassdecl、jcmethoddecl和jcmethodinvocation四个节点,其中jccompilationunit表示编译单元,jcclassdecl表示类声明,jcmethoddecl表示方法声明,jcmethodinvocation表示方法调用。图3所示抽象语法树通过jcclassdecl覆盖了helloworld类、通过jcmethoddecl覆盖了main方法,通过jcmethodinvocation覆盖了system.out.println方法调用。
[0053]
本技术实施例提供的代码模板生成方法对代码文件中的每个类进行语法分析,将代码文件中的每个类转化为抽象语法树,从而将代码文件转化为结构化表示。
[0054]
利用抽象语法树,可以得到类级别的图形结构。然而,该图形结构是由多个不相连
的树(即抽象语法树)组成,丢失了树(即类)之间的关系。为了将各个抽象语法树关联起来,可以对软件项目的每个代码文件进行代码依赖分析,得到每个代码文件的方法调用关系。每个代码文件的方法调用关系可以包括同一代码文件的不同类之间的方法调用关系,也可以包括不同代码文件的不同类之间的方法调用关系。可以通过语法分析器(例如antlr)对软件项目的每个代码文件进行代码依赖分析,提取出每个代码文件的方法调用关系。可以用图表记录每个代码文件的方法调用关系。
[0055]
在得到软件项目的每个代码文件的抽象语法树和每个代码文件的方法调用关系之后,结合软件项目的每个代码文件的抽象语法树和方法调用关系,可以得到软件项目对应的图结构。结合软件项目的每个代码文件的抽象语法树和方法调用关系得到软件项目对应的图结构,就是将软件项目的各个代码文件的抽象语法树进行关联,从而将整个软件项目整合到一张图中。
[0056]
图4是结合软件项目的每个代码文件的抽象语法树和方法调用关系,得到软件项目对应的图结构的示意图。如图4所示,软件项目包括三个抽象语法树ast a、ast b和ast c,ast a与ast b之间存在方法调用关系,ast b与ast c之间存在方法调用关系,因此,将ast a与ast b关联(即在ast a与ast b之间增加连线)、将ast b与ast c关联(即在ast b与ast c之间增加连线),得到软件项目对应的图结构。
[0057]
在本技术的一个实施例中,生成的图结构可以包括方法调用的方向。例如,若ast a中的节点a调用ast b中的节点b,则生成的图结构中节点a指向节点b。又如,若ast b中的节点b调用ast c中的节点c,则生成的图结构中节点b指向节点c。
[0058]
本步骤中,针对每个软件项目会生成一个图结构,软件项目与图结构一一对应。例如,有n个软件项目,则生成n个图结构。
[0059]
203,求取每两个图结构之间的最大公共子图。
[0060]
最大公共子图的定义如下:已知两个图结构g和g

,如果存在另外一个图结构g,满足并且不存在图结构使得|g

|≥|g|,则称g是图g和g

的最大公共子图。也就是说,两个图结构之间的最大公共子图是两个图结构的最大相同部分。
[0061]
本步骤中,针对每两个图结构,求取两个图结构之间的最大公共子图。例如,有n个软件项目,对应n个图结构,有n(n-1)/2个两两组合,则需要求取n(n-1)/2个最大公共子图。
[0062]
代码模板即代码文件中的公共框架部分,对图结构而言,代码模板就是图结构的公共子图。因此,可以将代码模板的提取问题转化为求取两个图之间的最大公共子图。
[0063]
图5是两个图结构之间的最大公共子图的示意图。图中示出51和52两个图结构,两个图结构之间的最大公共子图包括六个节点(即灰色节点)。
[0064]
最大公共子图的求解属于非确定性多项式(non-deterministic ploynomial,np)困难问题,np困难问题的求解主要分为非完备算法和完备算法两种。非完备算法只搜索部分解空间,在牺牲精度的前提下,减少求解的时间。完备算法则会遍历所有解空间,找到精确解。本技术实施例中,可以通过完备算法求解每两个图结构的最大公共子图,可以采用基于最大团的最大公共子图算法进行求解。
[0065]
团(clique)是一个无向图的完全子图,每对节点(顶点)之间有边相连。如果一个团不被其他任一团所包含,即该团不是其他任一团的真子集,则称该团为图g的极大团(maximal clique)。最大团就是结点数最多的极大团。也就是说,最大团是在全局上最大的
团,极大团是在局部上最大的团。
[0066]
基于最大团的最大公共子图算法会将最大公共子图问题转化为最大团问题,通过对应的求解方法,找出最优解。基于最大团的最大公共子图算法需要对节点的匹配情况进行判断。
[0067]
代码模板是代码文件中的公共框架部分,为了识别代码文件中的公共框架部分,避免不同的类名、方法名和变量名(或变量)的影响,在求取每两个图结构之间的最大公共子图时,可以对两个图结构的所有节点包含的类、方法和变量进行模糊化处理(主要是对类名、方法名和变量名进行模糊化处理,还包括对变量进行模糊化处理)。可以将两个图结构的所有节点包含的类名、方法名和变量名(或变量)替换为统一的字符。
[0068]
图6是对图结构的节点中包含的类、方法和变量进行模糊化处理的示意图。假设图结构包括图3所示的抽象语法树,对图结构的所有节点包含的类、方法和变量进行模糊化处理后,该抽象语法树变为图6所示,其中jcclassdecl节点中的类名“helloworld”模糊化为“classa”,jcmethodinvocation节点中的变量“hello world”模糊化为“stringa”。
[0069]
图7是两个图结构之间的最大公共子图的另一示意图。图中71、72为模糊化处理后的图结构,71、72之间的最大公共子图包括三个节点(即灰色节点)。
[0070]
可以通过生成两个图结构的关联图求取两个图结构的最大公共子图。关联图的每个节点对应两个图结构的一个节点组合,关联图的每条边对应两个图结构中同时存在或同时不存在的边。
[0071]
可以通过禁忌搜索(tabu search或taboo search,ts)算法对两个图结构的关联图求解最大团。
[0072]
禁忌搜索算法是一种全局性邻域搜索算法,模拟人类具有记忆功能的寻优特征,通过局部邻域搜索机制和相应的禁忌准则来避免迂回搜索,并通过破禁水平来释放一些被禁忌的优良状态,进而保证多样化的有效探索,以最终实现全局优化。
[0073]
在本技术的一个实施例中,采用基于最大团的最大公共子图算法,求取每两个图结构之间的最大公共子图。具体方法如下:
[0074]
两个图结构记为g1和g2,g1的节点为g
1i
,i=1,2,

,n,n为g1的节点数,g2的节点为g
2j
,j=1,2,

,m,m为g2的节点数,求取g1和g2之间的最大公共子图包括:
[0075]
对g1和g2的所有节点包含的类、方法和变量进行模糊化处理;
[0076]
生成g1和g2对应的关联图g3,g3包括节点(g
1i
,g
2j
),i=1,2,

,n,j=1,2,

,m,为g1和g2的节点组合,对于g3的任意两个节点(g
1i
,g
2j
)和(g
1i
,g
2j

),i

=1,2,

,n,i≠i

,j

=1,2,

,m,j≠j

,若g
1i
、g
1i

在g1中存在边,同时g
2j
、g
2j

在图b中存在边,或者,若g
1i
、g
1i

在g1中不存在边,同时g
2j
、g
2j

在图g2中不存在边,(g
1i
,g
2j
)和(g
1i
,g
2j

)在g3中存在边;
[0077]
对g3求解最大团,得到g1和g2的最大公共子图。
[0078]
需要说明的是,若202中生成的图结构包括方法调用的方向,在求取每两个图结构之间的最大公共子图时,需要考虑两个图结构中表示方法调用关系的边的方向。两个图结构中,若表示方法调用关系的边的方向不一致,该边不属于最大公共子图。
[0079]
204,计算每两个最大公共子图之间的相似度。
[0080]
在本技术的一个实施例中,通过以下方式计算每两个最大公共子图之间的相似度:
[0081]
对两个最大公共子图进行随机遍历;
[0082]
统计两个最大公共子图中各个节点被访问的频率;
[0083]
计算两个最大公共子图中各个节点被访问的频率的匹配度,将该匹配度作为两个最大公共子图的相似度。
[0084]
随机遍历是从最大公共子图随机选择一个节点进行访问,再从该节点随机选择下一个节点进行访问,直到访问到该最大公共子图的叶子节点。可以对两个最大公共子图随机遍历预设次数(例如每个最大公共子图随机遍历200次),在对两个公共子图遍历预设次数后,统计两个最大公共子图中各个节点被访问的频率。
[0085]
可以计算计算两个最大公共子图中每个节点被访问的频率的匹配度,根据每个节点被访问的频率的匹配度计算两个最大公共子图中各个节点被访问的频率的匹配度。
[0086]
在本技术的一个实施例中,计算每两个最大公共子图之间的相似度之后,可以将每两个最大公共子图之间的相似度进行归一化;将归一化后的每两个最大公共子图之间的相似度组成相似度矩阵。
[0087]
205,根据每两个最大公共子图之间的相似度,对最大公共子图进行聚类,得到相似子图组。
[0088]
在本技术的一个实施例中,可以根据每两个最大公共子图之间的相似度,对最大公共子图进行层次聚类(hierarchical clustering),得到相似子图组。相似子图组的数量可以是一个,也可以是多个(通常为多个)。
[0089]
可以对所有最大公共子图进行聚类。或者,可以对部分最大公共子图进行聚类。
[0090]
层次聚类是聚类算法的一种,通过计算不同类别数据点间的相似度来创建一棵有层次的嵌套聚类树。在聚类树中,不同类别的原始数据点是树的最低层,树的顶层是一个聚类的根节点。可以通过自下而上合并的方法创建聚类树。层次聚类的合并算法通过计算两类数据点间的相似性,对所有数据点中最为相似的两个数据点进行组合,并反复迭代这一过程,生成聚类树。
[0091]
在本技术的一个实施例中,可以基于最大公共子图的相似度矩阵对最大公共子图进行聚类。如前所述,相似度矩阵是根据每两个最大公共子图之间的相似度生成的。
[0092]
206,从相似子图组中获取目标相似子图组,从每个目标相似子图组中获取目标子图。
[0093]
可以将每个相似子图组作为目标相似子图组。或者,可以将部分相似子图组作为目标相似子图组。
[0094]
可以任意选取预设数量的相似子图组作为目标相似子图组。或者,可以选取满足条件的相似子图组作为目标相似子图组。
[0095]
从一个目标相似子图组中可以获取一个目标子图。或者,从一个目标相似子图组中可以获取多个目标子图。
[0096]
在本技术的一个实施例中,针对每个相似子图组,判断相似子图组的最大公共子图的数量是否大于或等于第一预设数量(例如100)。若相似子图组的最大公共子图的数量大于或等于第一预设数量,将该相似子图组作为目标相似子图组。也就是说,目标相似子图组的最大公共子图的数量可以大于或等于第一预设数量。
[0097]
相似子图组的最大公共子图的数量大于或等于第一预设数量,表示相似子图组对
应代码在代码文件中出现频率较高(即通用性较强),因此将该相似子图组作为目标相似子图组,以获取代码模板。
[0098]
在本技术的另一个实施例中,可以判断相似子图组的数量是否大于或等于第二预设数量(例如200)。若相似子图组的数量大于或等于第二预设数量,从相似子图组中选取第三预设数量的相似子图组作为目标相似子图组。第三预设数量小于或等于第二预设数量。也就是说,目标相似子图组的数量可以小于或等于第二预设数量。
[0099]
相似子图组的数量大于或等于第二预设数量,表明最大公共子图的分组过多,可以选择预设数量(即第三预设数量)的相似子图组作为目标相似子图组,以获取代码模板。例如,选择最大公共子图的数量最多的前200个相似子图组作为目标相似子图组。
[0100]
对于每个目标相似子图组,可以任意选取其中的最大公共子图作为目标子图,或者,可以选取其中满足预设条件的最大公共子图作为目标子图。目标子图的数量可以是一个,也可以是多个。
[0101]
在本技术的一个实施例中,对于每个目标相似子图组,可以计算该相似子图组中每个最大公共子图与其他最大公共子图的距离平方和,将距离平方和最小的最大公共子图作为该相似子图组的目标子图。或者,可以计算该相似子图组中每个最大公共子图与其他最大公共子图的平均距离,将平均距离最小的最大公共子图作为该相似子图组的目标子图。
[0102]
207,根据代码文件对目标子图进行代码还原,得到代码模板。
[0103]
根据代码文件对目标子图进行代码还原,就是根据代码文件,确定目标子图的每个节点对应的代码和每条边对应的方法调用关系,根据目标子图的每个节点对应的代码和每条边对应的方法调用关系生成代码模板。
[0104]
举例来说,对图7所示的目标子图进行代码还原,可以得到如下代码模板:
[0105][0106]
在本技术的一个实施例中,根据代码文件对目标子图进行代码还原,得到代码模板之后,还可以补充代码模板缺失的调用链。补充代码模板缺失的调用链就是把代码模板中不完整的方法调用语句补充完整。
[0107]
或者,根据代码文件对目标子图进行代码还原,得到代码模板之后,还可以清理代码模板的无用逻辑代码。清理代码模板的无用逻辑代码就是把代码模板中没有实际意思的代码删除。
[0108]
可以通用控制流图补充代码模板缺失的调用链和清理代码模板的无用逻辑代码。
[0109]
图8是本技术实施例公开的一种电子设备的结构示意图。如图8所示,电子设备80可以包括:射频(radio frequency,rf)电路801、存储器802、输入单元803、显示单元804、传感器805、音频电路806、无线保真(wireless fidelity,wi-fi)模块807、处理器808以及电源809等部件。本领域技术人员可以理解,图8中示出的结构并不构成对电子设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
[0110]
rf电路801可用于收发信息或在通话过程中,对信号进行接收和发送,特别地,接
收基站的下行信息后,转给处理器808进行处理;另外,将涉及上行的数据发送给基站。通常,rf电路801包括,但不限于:天线、至少一个放大器、收发信机、耦合器、低噪声放大器(low noise amplifier,lna)、双工器等。
[0111]
存储器802可用于存储软件程序以及模块,处理器808通过运行存储在存储器802中的软件程序以及模块,从而执行电子设备的各种功能应用以及数据处理。存储器802可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据电子设备的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器802可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
[0112]
输入单元803可用于接收输入的数字或字符信息,以及产生与电子设备的用户设置以及功能控制有关的键信号输入。具体地,输入单元803可包括触控面板8031以及其他输入设备8032。触控面板8031,也称为触摸屏,可收集用户在其上或附近的触摸操作(比如用户使用手指、触控笔等任何适合的物体或附件在触控面板8031上或在触控面板8031附近的操作),并根据预先设定的程序驱动相应的连接装置。可选地,触控面板8031可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器808,并接收处理器808发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触控面板8031。除了触控面板8031,输入单元803还可以包括其他输入设备8032。具体地,其他输入设备8032可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
[0113]
显示单元804可用于显示由用户输入的信息或提供给用户的信息以及电子设备的各种菜单。显示单元804可包括显示面板8041,可选地,可以采用液晶显示器(liquid crystal display,lcd)、有机发光二极管(organic light-emitting diode,oled)等形式来配置显示面板8041。进一步地,触控面板8031可覆盖显示面板8041,当触控面板8031检测到在其上或附近的触摸操作后,传送给处理器808以确定触摸事件的类型,随后处理器808根据触摸事件的类型在显示面板8041上提供相应的视觉输出。虽然在图8中,触控面板8031与显示面板8041是作为两个独立的部件来实现电子设备的输入和输出功能,但是在某些实施例中,可以将触控面板8031与显示面板8041集成而实现电子设备的输入和输出功能。
[0114]
电子设备还可包括至少一种传感器805,比如光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板8041的亮度,接近传感器可在电子设备移动到耳边时,关闭显示面板8041和/或背光。作为运动传感器的一种,加速计传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别电子设备姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;此外,电子设备还可配置的陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。
[0115]
音频电路806、扬声器8061,传声器8062可提供用户与电子设备之间的音频接口。
音频电路806可将接收到的音频数据转换后的电信号,传输到扬声器8061,由扬声器8061转换为声音信号输出;另一方面,传声器8062将收集的声音信号转换为电信号,由音频电路806接收后转换为音频数据,再将音频数据输出处理器808处理后,经rf电路801发送给另一电子设备,或者将音频数据输出至存储器802以便进一步处理。
[0116]
wi-fi属于短距离无线传输技术,电子设备通过wi-fi模块807可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。虽然图8示出了wi-fi模块807,但是可以理解的是,其并不属于电子设备的必需构成,完全可以根据需要、在不改变发明本质的范围内进行省略。
[0117]
处理器808是电子设备的控制中心,利用各种接口和线路连接整个电子设备的各个部分,通过运行或执行存储在存储器802内的软件程序和/或模块,以及调用存储在存储器802内的数据,执行电子设备的各种功能和处理数据,从而对电子设备进行整体监控。可选地,处理器808可包括一个或多个处理单元;优选的,处理器808可集成应用处理器和调制解调器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器808中。
[0118]
电子设备还包括给各个部件供电的电源809(比如电池),可选地,电源可以通过电源管理系统与处理器808逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。
[0119]
尽管未示出,电子设备还可以包括摄像头、蓝牙模块等,在此不再赘述。
[0120]
图8中描述的电子设备可以用于实施本技术图2介绍的方法实施例中的部分或全部流程,可参见前述图2所述实施例中的相关阐述,这里不再赘述。
[0121]
本实施例还提供一种计算机存储介质,该计算机存储介质中存储有计算机指令,当该计算机指令在电子设备上运行时,使得电子设备执行上述相关方法步骤实现上述实施例中的代码模板提取方法。
[0122]
本实施例还提供了一种计算机程序产品,当该计算机程序产品在电子设备上运行时,使得电子设备执行上述相关步骤,以实现上述实施例中的代码模板提取方法。
[0123]
另外,本技术的实施例还提供一种装置,这个装置具体可以是芯片,组件或模块,该装置可包括相连的处理器和存储器;其中,存储器用于存储计算机执行指令,当装置运行时,处理器可执行存储器存储的计算机执行指令,以使芯片执行上述各方法实施例中的代码模板提取方法。
[0124]
其中,本实施例提供的电子设备、计算机存储介质、计算机程序产品或芯片均用于执行上文所提供的对应的方法,因此,其所能达到的有益效果可参考上文所提供的对应的方法中的有益效果,此处不再赘述。
[0125]
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
[0126]
在本技术所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其他的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,该模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可
以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其他的形式。
[0127]
该作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是一个物理单元或多个物理单元,即可以位于一个地方,或者也可以分布到多个不同地方。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0128]
另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0129]
该集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个可读取存储介质中。基于这样的理解,本技术实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
[0130]
以上所述,仅为本技术的具体实施方式,但本技术的保护范围并不局限于此,任何在本技术揭露的技术范围内的变化或替换,都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应以所述权利要求的保护范围为准。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献