CN115543832A - 一种软件代码标准性的检测方法、系统、设备及存储介质 - Google Patents

一种软件代码标准性的检测方法、系统、设备及存储介质 Download PDF

Info

Publication number
CN115543832A
CN115543832A CN202211300721.5A CN202211300721A CN115543832A CN 115543832 A CN115543832 A CN 115543832A CN 202211300721 A CN202211300721 A CN 202211300721A CN 115543832 A CN115543832 A CN 115543832A
Authority
CN
China
Prior art keywords
detection
character string
code
standard
software code
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
CN202211300721.5A
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.)
State Grid Information and Telecommunication Co Ltd
Beijing China Power Information Technology Co Ltd
Original Assignee
State Grid Information and Telecommunication Co Ltd
Beijing China Power Information Technology 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 State Grid Information and Telecommunication Co Ltd, Beijing China Power Information Technology Co Ltd filed Critical State Grid Information and Telecommunication Co Ltd
Priority to CN202211300721.5A priority Critical patent/CN115543832A/zh
Publication of CN115543832A publication Critical patent/CN115543832A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • G06F11/3616Software analysis for verifying properties of programs using software metrics
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • G06F11/3608Software analysis for verifying properties of programs using formal methods, e.g. model checking, abstract interpretation

Abstract

本发明实施例提供了一种软件代码标准性的检测方法、系统、设备及存储介质,其中,方法包括:获得经预处理操作生成的软件代码,并获得与软件代码的执行标准标识对应的软件标准文档,分别创建与各检测对象数据对应的检测脚本,对各检测脚本:利用该检测脚本对软件代码进行去全量扫描,并在扫描到软件代码中存在特征字符串时,对特征字符串进行代码标准性检测,获得检测结果,其中,特征字符串是与该检测脚本对应的检测对象数据满足预设匹配关系的字符串,在各检测脚本均输出各自对应的检测结果后,生成包括各检测结果的检测报告。本发明提高了软件代码的开发精度和开发效率。

Description

一种软件代码标准性的检测方法、系统、设备及存储介质
技术领域
本发明涉及计算机技术领域,特别是涉及一种软件代码标准性的检测方法、系统、设备及存储介质。
背景技术
在软件研发领域中,软件代码标准化可以提高软件的研发效率。在现有的软件研发过程中,一个项目通常包括多个代码模块,这些代码模块需要多个研发人员同时进行研发。但是,由于不同研发人员对软件代码标准的掌握程度不一,导致软件代码出现漏洞的风险增加,从而降低了软件代码的开发精度和效率。现有技术主要是通过人工走读的方式,委托对代码标准掌握程度较高的研发人员对代码进行标准校验。
但是,由于不同研发人员具有不同的编写习惯,且不同研发人员对代码标准的掌握程度仍存在差异。这使得研发人员对代码进行标准化评估的精度和效率降低。从而在项目进行整合运行时,会由于部分不满足代码标准的代码模块与其他模块不兼容,而导致软件代码的整体开发精度和效率降低。
发明内容
本发明实施例的目的在于提供一种软件代码标准性的检测方法、系统、设备及存储介质,以实现提高对代码标准性的评估精度和效率,进而提高软件代码开发精度和效率的发明目的。具体技术方案如下:
一种软件代码标准性的检测方法,所述方法包括:
获得经预处理操作生成的软件代码,并获得与所述软件代码的执行标准标识对应的软件标准文档;
分别创建与各检测对象数据对应的检测脚本,其中,所述检测对象数据是对所述软件标准文档经解析转换处理后获得的,各所述检测对象数据的数据类型标识不同;
对各所述检测脚本:利用该所述检测脚本对所述软件代码进行去全量扫描,并在扫描到所述软件代码中存在特征字符串时,对所述特征字符串进行代码标准性检测,获得检测结果,其中,所述特征字符串是与该所述检测脚本对应的所述检测对象数据满足预设匹配关系的字符串;
在各所述检测脚本均输出各自对应的所述检测结果后,生成包括各所述检测结果的检测报告。
可选的,在所述检测对象数据的所述数据类型标识是固定数据类型的情况下,所述利用该所述检测脚本对所述软件代码进行去全量扫描,并在扫描到所述软件代码中存在特征字符串时,对所述特征字符串进行代码标准性检测,获得检测结果,包括:
利用该所述检测脚本对所述软件代码进行全量扫描,并在扫描到的至少一个字符串与所述固定数据类型标识一致的情况下,确定所述字符串与所述检测对象数据满足所述预设匹配关系,并将所述字符串确定为所述特征字符串;
判断所述特征字符串与所述检测对象数据中的标准字符串是否一致,若是,则输出所述特征字符串通过所述代码标准性检测的所述检测结果。
可选的,在所述检测对象数据的所述数据类型是逻辑数据类型标识的情况下,所述利用该所述检测脚本对所述软件代码进行去全量扫描,并在扫描到所述软件代码中存在特征字符串时,对所述特征字符串进行代码标准性检测,获得检测结果,包括:
利用该所述检测脚本对所述软件代码进行全量扫描,并在扫描到的至少一个字符串与所述逻辑数据类型标识一致的情况下,确定所述字符串与所述检测对象数据满足所述预设匹配关系,并将所述字符串确定为所述特征字符串;
判断所述特征字符串的语句结构,与所述检测对象数据中标准语句结构的是否为正向匹配,若是,则输出所述特征字符串通过所述代码标准性检测的所述检测结果。
可选的,还包括:
在所述检测结果是所述特征字符串不通过所述代码标准性检测的情况下,获得所述检测对象数据中的代码标准信息组,并将所述代码标准信息组作为标签内容,对所述特征字符串进行添加标签操作;
将经过所述添加标签操作的所述特征字符串更新为所述检测结果;
将经过所述添加标签操作的所述特征字符串存储至预设数据库。
可选的,所述软件代码的生成过程包括:
获得软件设计文档和业务数据,并对所述软件设计文档进行所述解析转换处理,获得框架数据组,其中,所述框架数据组由多个类型的框架数据组成;
基于所述框架数据组和预设业务需求逻辑,构建代码框架;
将所述代码框架和所述业务数据输入预设模板引擎中,以使所述预设模板引擎基于所述代码框架和所述业务数据生成所述软件代码。
一种软件代码标准性的检测系统,所述系统包括:
数据获取模块,用于获得经预处理操作生成的软件代码,并获得与所述软件代码的执行标准标识对应的软件标准文档;
脚本创建模块,用于分别创建与各检测对象数据对应的检测脚本,其中,所述检测对象数据是对所述软件标准文档经解析转换处理后获得的,各所述检测对象数据的数据类型标识不同;
标准检测模块,用于对各所述检测脚本:利用该所述检测脚本对所述软件代码进行去全量扫描,并在扫描到所述软件代码中存在特征字符串时,对所述特征字符串进行代码标准性检测,获得检测结果,其中,所述特征字符串是与该所述检测脚本对应的所述检测对象数据满足预设匹配关系的字符串;
检测结果生成模块,用于在各所述检测脚本均输出各自对应的所述检测结果后,生成包括各所述检测结果的检测报告。
可选的,所述标准检测模块被设置为:
在利用所述检测对象数据的所述数据类型标识是固定数据类型的情况下,该所述检测脚本对所述软件代码进行全量扫描,并在扫描到的至少一个字符串与所述固定数据类型标识一致的情况下,确定所述字符串与所述检测对象数据满足所述预设匹配关系,并将所述字符串确定为所述特征字符串;
判断所述特征字符串与所述检测对象数据中的标准字符串是否一致,若是,则输出所述特征字符串通过所述代码标准性检测的所述检测结果。
可选的,所述标准检测模块被设置为:
在所述检测对象数据的所述数据类型是逻辑数据类型标识的情况下,利用该所述检测脚本对所述软件代码进行全量扫描,并在扫描到的至少一个字符串与所述逻辑数据类型标识一致的情况下,确定所述字符串与所述检测对象数据满足所述预设匹配关系,并将所述字符串确定为所述特征字符串;
判断所述特征字符串的语句结构,与所述检测对象数据中标准语句结构的是否为正向匹配,若是,则输出所述特征字符串通过所述代码标准性检测的所述检测结果。
可选的,所述标准检测模块还被设置为:
在所述检测结果是所述特征字符串不通过所述代码标准性检测的情况下,获得所述检测对象数据中的代码标准信息组,并将所述代码标准信息组作为标签内容,对所述特征字符串进行添加标签操作;
将经过所述添加标签操作的所述特征字符串更新为所述检测结果;
将经过所述添加标签操作的所述特征字符串存储至预设数据库。
可选的,所述检测系统还配置有代码生成模块,所述代码生成模块在生成所述软件代码时被设置为:
获得软件设计文档和业务数据,并对所述软件设计文档进行所述解析转换处理,获得框架数据组,其中,所述框架数据组由多个类型的框架数据组成;
基于所述框架数据组和预设业务需求逻辑,构建代码框架;
将所述代码框架和所述业务数据输入预设模板引擎中,以使所述预设模板引擎基于所述代码框架和所述业务数据生成所述软件代码。
一种软件代码标准性的检测设备,所述检测设备包括:
处理器;
用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为执行所述指令,以实现如上述任一种所述的软件代码标准性的检测方法。
一种计算机可读存储介质,当所述计算机可读存储介质中的指令由软件代码标准性的检测设备的处理器执行时,使得所述检测设备能够执行如上述任一种所述的软件代码标准性的检测方法。
本发明实施例提供的软件代码标准性的检测方法、系统、设备及存储介质,可以通过预处理操作,在标准要求的框架下生成软件代码,从而降低软件代码偏离标准要求的风险,提高软件代码的标准性,从而提高代码开发精度。同时,通过解析转换处理,可以将软件标准文档中的非结构化数据转换为结构化数据,从而实现脚本文件对软件标准文档中代码编写标准的准确调用,从而提高后续步骤对代码标准性的评估精度,并借由脚本文件实现自动化标准性检测,提高了评估效率。并且,本发明设置对于每个检测脚本,都需要对软件代码进行全量扫描,从而提高对代码标准性的评估精度。最后,通过设置预设匹配关系,实现了对软件代码中需要进行代码标准性检测的字符串的准确筛选和检测。提高了对软件代码进行标准化评估的精度和效率。可见,本发明提高了对软件代码进行标准化评估的精度和效率,进而提高了软件代码开发的精度和效率。
当然,实施本发明的任一产品或方法必不一定需要同时达到以上所述的所有优点。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种软件代码标准性的检测方法的流程图;
图2为本发明的一个可选实施例提供的一种软件代码标准性的检测系统的框图;
图3为本发明的另一个可选实施例提供的一种软件代码标准性的检测设备的框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供了一种软件代码标准性的检测方法,如图1所示,该检测方法包括:
S101、获得经预处理操作生成的软件代码,并获得与软件代码的执行标准标识对应的软件标准文档。
其中,上述执行标识是用于建立软件代码与软件标准文档对应关系的标识符。
可选的,在本发明的一个可选实施例中,上述预处理操作可以用于提高上述软件代码标准性的操作步骤。由于在实际应用场景下,不同研发人员具有不同的代码编写习惯,且研发人员对代码标准的掌握程度不同。这使得研发人员依据自身理解编写出的代码,存在偏离标准要求过多的风险,从而使得编写的代码标准性降低。而本发明通过上述预处理操作,在标准要求的框架下生成软件代码,从而降低软件代码偏离标准要求的风险,提高软件代码的标准性,从而提高代码开发精度。
需要说明的是,在实际应用场景下,上述软件标准文档是行业内对于本行业的业务场景需求设定的软件代码编写规范文档。由于业务场景需求多变,上述软件标准文档中对代码标准的要求也会发生改变。为了避免由于代码标准要求表动导致检测精度降低的风险。在每一次软件开发过程中,都要执行上述如图1所示的步骤S101。本发明对上述软件标准文档的具体内容不作过多限定。
S102、分别创建与各检测对象数据对应的检测脚本,其中,检测对象数据是对软件标准文档经解析转换处理后获得的,各检测对象数据的数据类型标识不同。
本领域技术人员可以理解的是,上述检测脚本可以是基于上述检测对象数据创建的,用于对软件代码进行检测的可执行文件。在实际应用场景下,上述检测脚本的创建方式可以有多种,例如样式检查(CheckStyle)工具、Java代码静态分析工具(ProgrammingMistake Detector,PMD)等。本发明对具体创建过程不作过多限定和赘述。
需要说明的是,由于上述检测脚本可以对软件代码进行自动的标准性检测,使得本发明相较于人工走读的标准性检测方式,提高了检测效率。
可选的,在本发明的一个可选实施例中,上述解析转换处理可以是用于将文档中的非结构化数据转换为结构化数据的处理方式。由于上述软件标准文档是根据实际业务需求编写的,其描述方式偏重于人类阅读,不利于脚本文件的调用。因此,通过上述解析转换处理,可以将软件标准文档中的非结构化数据转换为结构化数据,从而实现脚本文件对软件标准文档中代码编写标准的准确调用,从而提高后续步骤对代码标准性的评估精度,进而提高软件代码开发精度。
需要说明的是,在实际应用场景下,上述解析转换处理的实现方式可以有多种,在此示例性地提供一种:
利用文件格式端口主项目(Poor Obfuscation Implementation,POI)组件,对上述软件标准文档进行文档解析,获得经过解析后的非结构数据。其中,由于POI组件是基于Java语言开发的,用于对微软办公(Microsoft Office)软件进行解析的组件。因此,在本实施例中,上述软件标准文档需是Office文档。
再利用格式转换组件,将上述非结构数据转换为结构化数据。需要说明的是,上述格式转换组件可以有多种,包括但不限于:XWPFDocument、XWPFTale、POIXMLDocumen等。本发明对上述格式转换组件的具体类型不作过多限定。
可选的,在本发明的一个可选实施例中,上述非结构数据的具体类型可以有多种,包括但不限于:代码中的类、函数、参数类型。
可选的,在本发明的另一个可选实施例中,上述数据类型标识可以是用于表征检测对象数据所能检测的目标代码的字符。例如,若检测对象数据是用于检测for循环语句的代码标准数据。则该检测对象数据的数据类型标识是“for(…)”。其中“...”代表了软件代码中该for循环语句的具体循环结构。通过后续步骤,在扫描到软件代码中包括“for(…)”这一字符串时,则确定该字符串所对应的检测脚本与检测对象数据是用于检测for循环语句的。
S103、对各检测脚本:利用该检测脚本对软件代码进行去全量扫描,并在扫描到软件代码中存在特征字符串时,对特征字符串进行代码标准性检测,获得检测结果,其中,特征字符串是与该检测脚本对应的检测对象数据满足预设匹配关系的字符串。
可选的,在本发明的一个可选实施例中,上述预设匹配关系可以是根据上述数据类型标识与特征字符串的匹配度确定的匹配关系。由于上述软件代码是在代码标准要求的框架下通过上述预处理操作生成的。对于软件代码中的部分字符串,如数据类型、函数名等。其字符串的组成方式与部分上述数据类型标识必然一致。因此,本发明通过设置上述预设匹配关系,实现了对软件代码中需要进行代码标准性检测的字符串的准确筛选和检测。提高了对软件代码进行标准化评估的精度和效率。
需要说明的是,在实际应用场景下,对同一特征字符串的代码标准要求可以有多个。例如:对for循环语句,第一个代码标准要求是“for的拼写是否错误”,第二个代码标准要求是“for后是否存在一组完整括号,且括号内是否包含其他字符”,第三个代码标准要求是“for循环语句内的循环结构是否满足预设要求”。同时,同一特征字符串可能在软件代码中出现多次。因此,为了避免漏检和错检的风险,本发明设置对于每个检测脚本,都需要对软件代码进行全量扫描,从而提高对代码标准性的评估精度。
S104、在各检测脚本均输出各自对应的检测结果后,生成包括各检测结果的检测报告。
本发明通过预处理操作,在标准要求的框架下生成软件代码,从而降低软件代码偏离标准要求的风险,提高软件代码的标准性,从而提高代码开发精度。同时,通过解析转换处理,可以将软件标准文档中的非结构化数据转换为结构化数据,从而实现脚本文件对软件标准文档中代码编写标准的准确调用,从而提高后续步骤对代码标准性的评估精度,并借由脚本文件实现自动化标准性检测,提高了评估效率。并且,本发明设置对于每个检测脚本,都需要对软件代码进行全量扫描,从而提高对代码标准性的评估精度。最后,通过设置预设匹配关系,实现了对软件代码中需要进行代码标准性检测的字符串的准确筛选和检测。提高了对软件代码进行标准化评估的精度和效率。可见,本发明提高了对软件代码进行标准化评估的精度和效率,进而提高了软件代码开发的精度和效率。
可选的,在检测对象数据的数据类型标识是固定数据类型的情况下,利用该检测脚本对软件代码进行去全量扫描,并在扫描到软件代码中存在特征字符串时,对特征字符串进行代码标准性检测,获得检测结果,包括:
利用该检测脚本对软件代码进行全量扫描,并在扫描到的至少一个字符串与固定数据类型标识一致的情况下,确定字符串与检测对象数据满足预设匹配关系,并将字符串确定为特征字符串;
判断特征字符串与检测对象数据中的标准字符串是否一致,若是,则输出特征字符串通过代码标准性检测的检测结果。
可选的,在本发明的一个可选实施例中,上述固定数据类型的数据类型标识可以有多种。例如:命名规范、代码格式、常量定义等。由于上述固定数据类型不会受代码编写逻辑的影响而发生变动。因此,通过将特征字符串与检测对象数据中的标准字符串进行字符一致性比对,即可获得准确的代码标准性检测结果。
需要说明的是,在实际应用场景下,上述特征字符串可以在软件代码中多次出现,也可以只出现一次。因此,需要对软件代码中的每个特征字符串都与该检测脚本对应的检测对象数据中的标准字符串进行一致性比对。从而避免漏检,提高对代码标准性的评估精度。
可选的,在检测对象数据的数据类型是逻辑数据类型标识的情况下,利用该检测脚本对软件代码进行去全量扫描,并在扫描到软件代码中存在特征字符串时,对特征字符串进行代码标准性检测,获得检测结果,包括:
利用该检测脚本对软件代码进行全量扫描,并在扫描到的至少一个字符串与逻辑数据类型标识一致的情况下,确定字符串与检测对象数据满足预设匹配关系,并将字符串确定为特征字符串;
判断特征字符串的语句结构,与检测对象数据中标准语句结构的是否为正向匹配,若是,则输出特征字符串通过代码标准性检测的检测结果。
可选的,在本发明一个可选实施例中,由于语句结构会受到代码编写逻辑的影响而发生变动,且产生的变动不具备规律性。因此无法通过字符一致性比对实现准确检测。因此,本发明通过将上述语句结构与上述标准语句结构进行正负向匹配,并基于匹配结果实现代码标准性检测。例如:对于循环语句,检测对象中的标准语句结够为五层循环结构。则,若特征字符串的语句结构为四层循环结构,则是正向匹配。若特征字符串的语句结构为七层循环结构,则是负向匹配。
可选的,上述利用该检测脚本对软件代码进行去全量扫描,并在扫描到软件代码中存在特征字符串时,对特征字符串进行代码标准性检测,获得检测结果,还包括:
在检测结果是特征字符串不通过代码标准性检测的情况下,获得检测对象数据中的代码标准信息组,并将代码标准信息组作为标签内容,对特征字符串进行添加标签操作;
将经过添加标签操作的特征字符串更新为检测结果;
将经过添加标签操作的特征字符串存储至预设数据库。
可选的,在本发明的一个可选实施例中,上述代码标准信息组可以是由多个类型的代码标准信息组成的。上述代码标准信息的类型可以有多种,例如:标准代码文字描述、代码正确示例、代码错误示例等。由于不同研发人员对代码标准的掌握程度存在差别,若只输出特征字符串不通过代码标准性检测的检测结果,研发人员存在无法识别错误的风险,从而降低软件代码的开发效率。而本发明通过将上述代码标准信息组以标签内容的形式添加至特征字符串中,可以在提示研发人员何处是故障点的同时,提出解决示例,从而提高软件代码的开发效率。
可选的,软件代码的生成过程包括:
获得软件设计文档和业务数据,并对软件设计文档进行解析转换处理,获得框架数据组,其中,框架数据组由多个类型的框架数据组成;
基于框架数据组和预设业务需求逻辑,构建代码框架;
将代码框架和业务数据输入预设模板引擎中,以使预设模板引擎基于代码框架和业务数据生成软件代码。
可选的,在本发明的一个可选实施例中,上述软件设计文档可以是基于软件标准文档和实际业务需求编辑的文档。
可选的,在本发明的另一个可选实施例中,由于上述代码框架是基于框架数据组和预设业务需求逻辑构建的。上述框架数据组又是基于软件设计文档和业务数据获得的。而软件设计文档又可以是基于软件标准文档和实际业务需求编辑的。若研发人员对代码标准的掌握程度低。则存在研发人员无法明确生成的软件代码中各代码段的功能及含义,从而降低软件代码的开发效率。因此,在利用上述预设模板引擎生成上述软件代码时,可以配置上述预设模板引擎将代码框架数据中的注释数据,动态添加至生成的软件代码中。
本领域技术人员可以理解的是,上述配置预设模板引擎将代码框架数据对软件代码进行注释数据动态添加的过程,为预设模板引擎自身配置的功能。如FreeMarker模板引擎。本发明对具体配置过程不作多限定和描述。
与上述方法实施例相对应地,本发明还提供了一种软件代码标准性的检测系统,如图2所示,该检测系统包括:
数据获取模块201,用于获得经预处理操作生成的软件代码,并获得与软件代码的执行标准标识对应的软件标准文档;
脚本创建模块202,用于分别创建与各检测对象数据对应的检测脚本,其中,检测对象数据是对软件标准文档经解析转换处理后获得的,各检测对象数据的数据类型标识不同;
标准检测模块203,用于对各检测脚本:利用该检测脚本对软件代码进行去全量扫描,并在扫描到软件代码中存在特征字符串时,对特征字符串进行代码标准性检测,获得检测结果,其中,特征字符串是与该检测脚本对应的检测对象数据满足预设匹配关系的字符串;
检测结果生成模块204,用于在各检测脚本均输出各自对应的检测结果后,生成包括各检测结果的检测报告。
可选的,上述标准检测模块203被设置为:
在利用检测对象数据的数据类型标识是固定数据类型的情况下,该检测脚本对软件代码进行全量扫描,并在扫描到的至少一个字符串与固定数据类型标识一致的情况下,确定字符串与检测对象数据满足预设匹配关系,并将字符串确定为特征字符串;
判断特征字符串与检测对象数据中的标准字符串是否一致,若是,则输出特征字符串通过代码标准性检测的检测结果。
可选的,上述标准检测模块203被设置为:
在检测对象数据的数据类型是逻辑数据类型标识的情况下,利用该检测脚本对软件代码进行全量扫描,并在扫描到的至少一个字符串与逻辑数据类型标识一致的情况下,确定字符串与检测对象数据满足预设匹配关系,并将字符串确定为特征字符串;
判断特征字符串的语句结构,与检测对象数据中标准语句结构的是否为正向匹配,若是,则输出特征字符串通过代码标准性检测的检测结果。
可选的,上述标准检测模块203还被设置为:
在检测结果是特征字符串不通过代码标准性检测的情况下,获得检测对象数据中的代码标准信息组,并将代码标准信息组作为标签内容,对特征字符串进行添加标签操作;
将经过添加标签操作的特征字符串更新为检测结果;
将经过添加标签操作的特征字符串存储至预设数据库。
可选的,软件代码标准性的检测系统还配置有代码生成模块,代码生成模块在生成软件代码时被设置为:
获得软件设计文档和业务数据,并对软件设计文档进行解析转换处理,获得框架数据组,其中,框架数据组由多个类型的框架数据组成;
基于框架数据组和预设业务需求逻辑,构建代码框架;
将代码框架和业务数据输入预设模板引擎中,以使预设模板引擎基于代码框架和业务数据生成软件代码。
本发明实施例还提供了一种软件代码标准性的检测设备,如图3所示,检测设备包括:
处理器301;
用于存储处理器301可执行指令的存储器302;
其中,处理器301被配置为执行指令,以实现如上述任一种的软件代码标准性的检测方法。
本发明实施例还提供了一种计算机可读存储介质,当计算机可读存储介质中的指令由软件代码标准性的检测设备的处理器执行时,使得检测设备能够执行如上述任一种的软件代码标准性的检测方法。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
在一个典型的配置中,设备包括一个或多个处理器(CPU)、存储器和总线。设备还可以包括输入/输出接口、网络接口等。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM),存储器包括至少一个存储芯片。存储器是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

Claims (10)

1.一种软件代码标准性的检测方法,其特征在于,所述方法包括:
获得经预处理操作生成的软件代码,并获得与所述软件代码的执行标准标识对应的软件标准文档;
分别创建与各检测对象数据对应的检测脚本,其中,所述检测对象数据是对所述软件标准文档经解析转换处理后获得的,各所述检测对象数据的数据类型标识不同;
对各所述检测脚本:利用该所述检测脚本对所述软件代码进行去全量扫描,并在扫描到所述软件代码中存在特征字符串时,对所述特征字符串进行代码标准性检测,获得检测结果,其中,所述特征字符串是与该所述检测脚本对应的所述检测对象数据满足预设匹配关系的字符串;
在各所述检测脚本均输出各自对应的所述检测结果后,生成包括各所述检测结果的检测报告。
2.根据权利要求1所述的方法,其特征在于,在所述检测对象数据的所述数据类型标识是固定数据类型的情况下,所述利用该所述检测脚本对所述软件代码进行去全量扫描,并在扫描到所述软件代码中存在特征字符串时,对所述特征字符串进行代码标准性检测,获得检测结果,包括:
利用该所述检测脚本对所述软件代码进行全量扫描,并在扫描到的至少一个字符串与所述固定数据类型标识一致的情况下,确定所述字符串与所述检测对象数据满足所述预设匹配关系,并将所述字符串确定为所述特征字符串;
判断所述特征字符串与所述检测对象数据中的标准字符串是否一致,若是,则输出所述特征字符串通过所述代码标准性检测的所述检测结果。
3.根据权利要求1所述的方法,其特征在于,在所述检测对象数据的所述数据类型是逻辑数据类型标识的情况下,所述利用该所述检测脚本对所述软件代码进行去全量扫描,并在扫描到所述软件代码中存在特征字符串时,对所述特征字符串进行代码标准性检测,获得检测结果,包括:
利用该所述检测脚本对所述软件代码进行全量扫描,并在扫描到的至少一个字符串与所述逻辑数据类型标识一致的情况下,确定所述字符串与所述检测对象数据满足所述预设匹配关系,并将所述字符串确定为所述特征字符串;
判断所述特征字符串的语句结构,与所述检测对象数据中标准语句结构的是否为正向匹配,若是,则输出所述特征字符串通过所述代码标准性检测的所述检测结果。
4.根据权利要求2或3所述的方法,其特征在于,还包括:
在所述检测结果是所述特征字符串不通过所述代码标准性检测的情况下,获得所述检测对象数据中的代码标准信息组,并将所述代码标准信息组作为标签内容,对所述特征字符串进行添加标签操作;
将经过所述添加标签操作的所述特征字符串更新为所述检测结果;
将经过所述添加标签操作的所述特征字符串存储至预设数据库。
5.根据权利要求1所述的方法,其特征在于,所述软件代码的生成过程包括:
获得软件设计文档和业务数据,并对所述软件设计文档进行所述解析转换处理,获得框架数据组,其中,所述框架数据组由多个类型的框架数据组成;
基于所述框架数据组和预设业务需求逻辑,构建代码框架;
将所述代码框架和所述业务数据输入预设模板引擎中,以使所述预设模板引擎基于所述代码框架和所述业务数据生成所述软件代码。
6.一种软件代码标准性的检测系统,其特征在于,所述系统包括:
数据获取模块,用于获得经预处理操作生成的软件代码,并获得与所述软件代码的执行标准标识对应的软件标准文档;
脚本创建模块,用于分别创建与各检测对象数据对应的检测脚本,其中,所述检测对象数据是对所述软件标准文档经解析转换处理后获得的,各所述检测对象数据的数据类型标识不同;
标准检测模块,用于对各所述检测脚本:利用该所述检测脚本对所述软件代码进行去全量扫描,并在扫描到所述软件代码中存在特征字符串时,对所述特征字符串进行代码标准性检测,获得检测结果,其中,所述特征字符串是与该所述检测脚本对应的所述检测对象数据满足预设匹配关系的字符串;
检测结果生成模块,用于在各所述检测脚本均输出各自对应的所述检测结果后,生成包括各所述检测结果的检测报告。
7.根据权利要求6所述的系统,其特征在于,所述标准检测模块被设置为:
在利用所述检测对象数据的所述数据类型标识是固定数据类型的情况下,该所述检测脚本对所述软件代码进行全量扫描,并在扫描到的至少一个字符串与所述固定数据类型标识一致的情况下,确定所述字符串与所述检测对象数据满足所述预设匹配关系,并将所述字符串确定为所述特征字符串;
判断所述特征字符串与所述检测对象数据中的标准字符串是否一致,若是,则输出所述特征字符串通过所述代码标准性检测的所述检测结果。
8.根据权利要求6所述的方法,其特征在于,所述标准检测模块被设置为:
在所述检测对象数据的所述数据类型是逻辑数据类型标识的情况下,利用该所述检测脚本对所述软件代码进行全量扫描,并在扫描到的至少一个字符串与所述逻辑数据类型标识一致的情况下,确定所述字符串与所述检测对象数据满足所述预设匹配关系,并将所述字符串确定为所述特征字符串;
判断所述特征字符串的语句结构,与所述检测对象数据中标准语句结构的是否为正向匹配,若是,则输出所述特征字符串通过所述代码标准性检测的所述检测结果。
9.一种软件代码标准性的检测设备,其特征在于,所述检测设备包括:
处理器;
用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为执行所述指令,以实现如权利要求1至5中任一项所述的软件代码标准性的检测方法。
10.一种计算机可读存储介质,其特征在于,当所述计算机可读存储介质中的指令由软件代码标准性的检测设备的处理器执行时,使得所述检测设备能够执行如权利要求1至5中任一项所述的软件代码标准性的检测方法。
CN202211300721.5A 2022-10-24 2022-10-24 一种软件代码标准性的检测方法、系统、设备及存储介质 Pending CN115543832A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211300721.5A CN115543832A (zh) 2022-10-24 2022-10-24 一种软件代码标准性的检测方法、系统、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211300721.5A CN115543832A (zh) 2022-10-24 2022-10-24 一种软件代码标准性的检测方法、系统、设备及存储介质

Publications (1)

Publication Number Publication Date
CN115543832A true CN115543832A (zh) 2022-12-30

Family

ID=84735115

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211300721.5A Pending CN115543832A (zh) 2022-10-24 2022-10-24 一种软件代码标准性的检测方法、系统、设备及存储介质

Country Status (1)

Country Link
CN (1) CN115543832A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116340186A (zh) * 2023-05-25 2023-06-27 中汽研软件测评(天津)有限公司 汽车电子软件检测系统、方法及介质

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116340186A (zh) * 2023-05-25 2023-06-27 中汽研软件测评(天津)有限公司 汽车电子软件检测系统、方法及介质
CN116340186B (zh) * 2023-05-25 2023-09-19 中汽研软件测评(天津)有限公司 汽车电子软件检测系统、方法及介质

Similar Documents

Publication Publication Date Title
US11797298B2 (en) Automating identification of code snippets for library suggestion models
US11354225B2 (en) Automating identification of test cases for library suggestion models
US11494181B2 (en) Automating generation of library suggestion engine models
US11340896B2 (en) Library model addition
US10296307B2 (en) Method and system for template extraction based on source code similarity
US8539475B2 (en) API backward compatibility checking
US8875110B2 (en) Code inspection executing system for performing a code inspection of ABAP source codes
CN109033843B (zh) 用于分布式静态检测系统的Java文件依赖性分析方法及模块
CN1908895B (zh) 验证应用程序全球化问题的系统和方法
CN108804304B (zh) 测试用例生成方法及装置、存储介质、电子设备
CN110018954B (zh) 代码质量检测、代码检测质量的评估方法、装置及设备
Chen et al. Extracting and studying the Logging-Code-Issue-Introducing changes in Java-based large-scale open source software systems
CN113190220A (zh) Json文件差异化对比方法及装置
Segura et al. A template-based approach to describing metamorphic relations
CN115543832A (zh) 一种软件代码标准性的检测方法、系统、设备及存储介质
CN110286912B (zh) 代码检测方法、装置及电子设备
CN115794119B (zh) 一种案例自动解析方法及装置
CN110688823A (zh) Xml文件验证方法及装置
US8819645B2 (en) Application analysis device
CN116089262A (zh) 一种基于代码动态分析的代码安全扫描系统及方法
US11556455B2 (en) Automated identification of posts related to software patches
CN114895914A (zh) 日志输出代码的生成方法、装置、电子设备及存储介质
CN113672512A (zh) 代码检查规则生成方法、代码检查方法、装置、介质
US11740895B2 (en) Generation of software program repair explanations
CN117312156A (zh) 一种代码质量评估方法和装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination