CN116361194B - 异常代码识别方法、系统、电子设备及存储介质 - Google Patents

异常代码识别方法、系统、电子设备及存储介质 Download PDF

Info

Publication number
CN116361194B
CN116361194B CN202310568404.XA CN202310568404A CN116361194B CN 116361194 B CN116361194 B CN 116361194B CN 202310568404 A CN202310568404 A CN 202310568404A CN 116361194 B CN116361194 B CN 116361194B
Authority
CN
China
Prior art keywords
target
code
abnormal
platform support
file
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.)
Active
Application number
CN202310568404.XA
Other languages
English (en)
Other versions
CN116361194A (zh
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.)
Shenzhen Fantai Geek Technology Co ltd
Original Assignee
Shenzhen Fantai Geek 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 Shenzhen Fantai Geek Technology Co ltd filed Critical Shenzhen Fantai Geek Technology Co ltd
Priority to CN202310568404.XA priority Critical patent/CN116361194B/zh
Publication of CN116361194A publication Critical patent/CN116361194A/zh
Application granted granted Critical
Publication of CN116361194B publication Critical patent/CN116361194B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/3608Software analysis for verifying properties of programs using formal methods, e.g. model checking, abstract interpretation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/42Syntactic analysis
    • G06F8/427Parsing
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4482Procedural
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4488Object-oriented
    • G06F9/449Object-oriented method invocation or resolution
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Stored Programmes (AREA)

Abstract

本申请提供一种异常代码识别方法、系统、电子设备及存储介质,涉及计算机领域。该异常代码识别方法应用于开发平台,该异常代码方法包括:解析目标代码包,获得所述目标代码包对应的代码文件;判断所述代码文件的类型,并基于所述代码文件的类型,获取相应的代码文件内容;根据所述代码文件内容和所述开发平台的平台支持信息,判断所述目标代码是否存在异常。实现了对不同平台之间不兼容的内容进行了识别,提高了小程序跨平台迁移的效率。

Description

异常代码识别方法、系统、电子设备及存储介质
技术领域
本申请涉及计算机领域,具体而言,涉及一种异常代码识别方法、系统、电子设备及存储介质。
背景技术
小程序是一种新的开放能力,可以在移动设备上直接运行,无需下载安装即可使用。小程序通常提供了一些特定的功能和服务,如在线购物、社交交流、在线预约、出行导航等,能够帮助用户更加便捷地获取所需的信息和服务。
不同的平台往往会采用同样功能的小程序,为了避免重复开发,可以考虑对已有的小程序进行不同平台之间的迁移,以节约开发成本。在小程序做迁移时,会对代码进行调整,使小程序适配于不同的平台。但目前对于不兼容的内容的排查效率低,导致了小程序的开发和迁移的效率较低。
发明内容
本申请实施例的目的在于提供一种异常代码识别方法、系统、电子设备及存储介质,用以通过解析目标小程序对应的代码包,从而获得目标代码对应的代码文件;根据代码文件的类型和代码文件的内容,以及本开发平台相关的支持信息,判断目标小程序对应的目标代码是否存在异常,判断是否存在不兼容的内容,提高了小程序跨平台迁移的效率。
第一方面,本申请实施例提供一种异常代码识别方法,异常代码识别方法应用于开发平台,方法包括:解析目标代码包,获得目标代码包对应的代码文件;判断代码文件的类型,并基于代码文件的类型,获取相应的代码文件内容;根据代码文件内容和开发平台的平台支持信息,判断目标代码是否存在异常。
在上述实现过程中,本申请实施例提供的异常代码识别方法通过解析目标小程序对应的代码包,从而获得目标代码对应的代码文件;根据代码文件的类型和代码文件的内容,以及本开发平台相关的支持信息,判断目标小程序对应的目标代码是否存在异常,判断是否存在不兼容的内容,提高了小程序跨平台迁移的效率。
可选地,在本申请实施例中,代码文件的类型包括JavaScript文件;平台支持信息包括平台支持接口;根据代码文件内容和开发平台的平台支持信息,判断目标代码是否存在异常,包括:根据JavaScript文件中的代码文件内容,生成JS抽象语法树;根据JS抽象语法树,对目标代码的编程接口和平台支持接口进行比对,以判断目标代码是否存在异常。
在上述实现过程中,本申请实施例提供的异常代码识别方法对于目标代码文件类型为JavaScript代码的情况下,生成JS抽象语法树,并对比目标代码的编程接口和平台支持接口,从而实现对目标代码是否异常的高效判断。
可选地,在本申请实施例中,根据JS抽象语法树,对目标代码的编程接口和平台支持接口进行比对,以判断目标代码是否存在异常,包括:根据JS抽象语法树,判断JS抽象语法树的表达式名称;根据表达式名称,获取目标代码的对象属性;根据对象属性和平台支持接口的比对结果,判断目标代码是否存在异常。
在上述实现过程中,本申请实施例提供的异常代码识别方法对文件类型为JavaScript代码的情况下,通过表达式的类别和属性判断是否有平台不支持的接口;在代码解析阶段就检测到平台不支持的代码,减少手动检测的工作量和出错的可能性,从而减少开发人员的工作量。
可选地,在本申请实施例中,根据对象属性和平台支持接口的比对结果,判断目标代码是否存在异常,包括:获取代码文件内容中的调用关系对应的调用数据;其中,调用数据包括目标调用数据;获取目标调用数据对应的对象属性;根据目标调用数据对应的对象属性,获取目标调用数据支持的目标调用对象;其中,调用对象包括可调用目标调用数据的对象;判断目标调用对象中是否存在平台支持接口中对应的调用关系的调用对象之外的调用对象;若目标调用对象中存在平台支持接口对应的调用关系的调用对象之外的调用对象,则判定目标代码存在异常。
在上述实现过程中,本申请实施例提供的异常代码识别方法通过分析调用数据对应的对象属性,使用词法分的方法实现根据对象属性和平台支持接口判断目标代码是否存在异常,也就是平台支持接口不支持的接口调用。本申请实施例将源代码分解为更细节的、有意义的词法单元,使得语法分析器可以更简单地进行分析和处理,大大提升代码识别的效率。
可选地,在本申请实施例中,代码文件的类型包括xml文件;平台支持信息包括平台支持组件;根据代码文件内容和开发平台的平台支持信息,判断目标代码是否存在异常,包括:根据xml文件中的目标代码,生成xml抽象语法树;根据xml抽象语法树,对目标代码的组件和平台支持组件进行比对,以判断目标代码是否存在异常。
在上述实现过程中,本申请实施例提供的异常代码识别方法在代码文件是xml文件的情况下,根据xml文件的xml抽象语法树,与平台支持组件进行对比,从而判断目标组件是否存在异常。XML语法树可以准确地反映组件的结构和层次关系,提供了精准的组件信息,便于针对性的检测和分析,提高了判断和解决兼容性问题的效率。
可选地,在本申请实施例中,根据xml抽象语法树,对目标代码的组件和平台支持组件进行比对,以判断目标代码是否存在异常,包括:遍历xml抽象语法树,以获取xml抽象语法树中的目标元素;获取目标元素的目标标签名称和目标标签属性;根据目标标签名称、目标标签属性、平台支持组件对应的平台支持名称和平台支持属性,判断目标标签属性对应的目标元素中是否存在平台支持组件中不支持的目标元素;若目标标签属性对应的目标元素中存在不支持的目标元素,则判定目标代码存在异常。
在上述实现过程中,本申请实施例提供的异常代码识别方法可以通过判断平台支持组件的参数与目标标签属性参数之间的匹配关系,来判断目标代码对应的目标组件是否存在平台不支持的组件。通过xml语法树判断组件是否兼容具有精准性、全面性、高效性和可扩展性等优点,可以有效地检测和解决兼容性问题,提高组件的兼容性和可靠性。
可选地,在本申请实施例中,代码文件的类型包括json文件;平台支持信息包括平台支持配置属性;根据代码文件内容和开发平台的平台支持信息,判断目标代码是否存在异常,包括:根据json文件,获取目标代码对应的目标页面配置;基于目标页面配置,获取目标页面配置的目标配置属性;判断目标配置属性中是否存在平台支持配置属性不支持的目标配置属性;若目标配置属性中存在不支持的目标配置属性,则判定目标代码存在异常。
在上述实现过程中,本申请实施例提供的异常代码识别方法,在目标代码文件为json文件的情况下,将目标标签属性配置和平台支持度信息进行对比,从而判断出目标页面是否存在不兼容的属性配置。通过对比目标配置属性和平台支持度信息,可以精确地筛选出不支持的属性,避免了手动逐一比对的繁琐过程,同时也减少了漏检或误判的风险。
可选地,在本申请实施例中,在根据代码文件内容和开发平台的平台支持信息,判断目标代码是否存在异常之后,方法还包括:若判定目标代码存在异常,则生成异常目标代码信息以及修改建议;其中,异常目标代码信息包括异常目标代码对应的文件位置以及异常信息。
在上述实现过程中,本申请实施例在判断出存在异常代码之后,生成异常目标代码相关信息和修改建议;本申请实施例通过自动化的工具,自动识别平台间的差异,并将这些差异识别为异常,生成异常报告,提供给开发者,以供开发者进一步对小程序进行调整,极大地提升了处理效率。
第二方面,本申请实施例提供一种异常代码识别系统,异常代码识别系统应用于开发平台,异常代码识别系统包括:代码包处理模块和异常判断模块;代码包处理模块用于解析目标代码包,获得目标代码包对应的代码文件;代码包处理模块还用于判断代码文件的类型,并基于代码文件的类型,获取相应的代码文件内容;异常判断模块用于根据代码文件内容和开发平台的平台支持信息,判断目标代码是否存在异常。
第三方面,本申请实施例提供一种电子设备,所述电子设备包括存储器和处理器,所述存储器中存储有程序指令,所述处理器读取并运行所述程序指令时,执行上述任一实现方式中的步骤。
第四方面,本申请实施例还提供一种计算机可读存储介质,所述可读取存储介质中存储有计算机程序指令,所述计算机程序指令被一处理器读取并运行时,执行上述任一实现方式中的步骤。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本申请实施例提供的异常代码识别的流程图;
图2为本申请实施例提供的针对JavaScript文件的处理第一流程图;
图3为本申请实施例提供的针对JavaScript文件的处理第二流程图;
图4为本申请实施例提供的针对JavaScript文件的处理第三流程图;
图5为本申请实施例提供的针对xml文件的处理第一流程图;
图6为本申请实施例提供的针对xml文件的处理第二流程图;
图7为本申请实施例提供的针对json文件的处理流程图;
图8为本申请实施例提供的异常代码识别系统的模块示意图;
图9为本申请实施例提供的电子设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。例如,附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。另外,在本发明各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
小程序是一种轻量级应用程序,其可基于H5技术实现,可以在设备上直接运行,无需下载安装即可使用。小程序通常提供了一些特定的功能和服务,如在线购物、社交交流、在线预约、出行导航等,能够帮助用户更加便捷地获取所需的信息和服务。
申请人在研究过程中发现,小程序在做迁移时,由于平台间差别,功能支持度上不一致,需要修改代码做适配。
目前,在小程序迁移过程中通过实际的对照文档,以及不兼容或异常的指导文档,对小程序程序包中的不兼容的内容依次进行人工或基于电子排查工具进行排查处理;在排查过程中,容易因比对的原则的智能化较低而产生误报,导致技术人员需要更多的时间对排查出的不兼容的内容进行核实和处理,极大地浪费了技术人员的时间,并且降低了程序开发或跨平台迁移的效率。
基于此,本方案提供一种异常代码识别方法、系统、电子设备及存储介质;该异常代码识别方法应用于开发平台;该方法通过解析目标小程序对应的代码包,从而获得目标代码对应的代码文件;根据代码文件的类型和代码文件的内容,以及本开发平台相关的支持信息,判断目标小程序对应的目标代码是否存在异常;需要说明的是,在本申请实施例中,存在异常是指将小程序从一个平台迁移到另一个平台,存在的不兼容的内容对应的代码。
请参看图1,图1为本申请实施例提供的异常代码识别的流程图;该异常代码识别方法可以通过以下步骤实现:
步骤S100:解析目标代码包,获得目标代码包对应的代码文件。
在上述步骤S100中,选择需要进行迁移的小程序对应的小程序代码包为目标代码包;解析该目标代码包,获得目标代码包对应的代码文件。
需要说明的是,解析小程序代码包可以包括解析小程序的项目结构、小程序页面结构、小程序的组件和小程序的API接口等。
步骤S101:判断代码文件的类型,并基于代码文件的类型,获取相应的代码文件内容。
在上述步骤S101中,在完成目标代码包的解析之后,判断代码文件的类型,基于代码文件的类型获得相应的代码文件的内容。
不同的编程语言和技术栈可能会有不同的代码文件类型,常见的代码文件的类型包括:源代码文件、样式表文件、模板文件、脚本文件、数据库文件和日志文件等。源代码文件类型如.c, .cpp, .java, .py, .js等;样式表文件类型如.css, .scss, .less等;模板文件类型如.html, .ejs, .pug等;脚本文件类型如.sh, .bat, .ps1等;数据库文件类型如.sqlite, .mysql, .mongodb等;日志文件类型如.log, .txt, .json等。
在获得代码文件的类型之后,获取对应类型的代码文件内容;例如,解析后的代码文件是JS文件,则获取该JS文件的内容。
步骤S102:根据代码文件内容和开发平台的平台支持信息,判断目标代码是否存在异常。
在上述步骤S102中,根据代码文件内容和开发平台的平台支持信息来判断目标代码是否存在异常。本领域技术人员可以理解的是,上述过程中的平台支持度信息可以是平台支持的API接口信息、平台支持的组件信息或平台支持的属性信息。可以根据平台支持的API接口信息、平台支持的组件信息或平台支持的属性信息等去判断小程序对应的目标代码是否存在异常,也就是判断是否存在不兼容的内容。
通过图1可知,本申请实施例提供的异常代码识别方法通过解析目标小程序对应的代码包,从而获得目标代码对应的代码文件;根据代码文件的类型和代码文件的内容,以及本开发平台相关的支持信息,判断目标小程序对应的目标代码是否存在异常,判断是否存在不兼容的内容,提高了小程序跨平台迁移的效率。
请参看图2,图2为本申请实施例提供的针对JavaScript文件的处理第一流程图;在本申请实施例的可选实施方式中,代码文件的类型包括JavaScript文件平,台支持信息包括平台支持接口,即平台支持API。
根据代码文件内容和开发平台的平台支持信息,判断目标代码是否存在异常,可以通过以下步骤实现:
步骤S200:根据JavaScript文件中的代码文件内容,生成JS抽象语法树。
在上述步骤S200中,若目标代码文件的类型为JavaScript文件;那么,获取JavaScript文件的内容,并根据JavaScript文件的文件内容,生成JS抽象语法树。需要说明的是,JS抽象语法树(Abstract Syntax Tree,AST)是指将JavaScript代码转换为语法树的一种数据结构;语法树是一种树状结构,可以将程序代码的结构和语法规则表示为一组节点和边,AST的每个节点代表了程序中的一个语法结构,如表达式、函数、循环、条件语句等。
需要说明的是,可以从JS抽象语法树获取代码结构、变量和函数定义等信息,可以帮助开发者对代码进行分析、优化和转换,从而提高代码的可读性、可维护性和性能。
步骤S201:根据JS抽象语法树,对目标代码的编程接口和平台支持接口进行比对,以判断目标代码是否存在异常。
在上述步骤S201中,根据JS抽象语法树对目标代码的编程接口和平台支持接口进行对比,从而判断目标代码是否存在异常。例如,平台支持接口中不存在该目标代码的编程接口,也就是说,平台不支持目标代码的编程接口,可以将目标代码判断为异常。
通过图2可知,本申请实施例提供的异常代码识别方法对于目标代码文件类型为JavaScript代码的情况下,生成JS抽象语法树,并对比目标代码的编程接口和平台支持接口,从而实现对目标代码是否异常的高效判断。
请参看图3,图3为本申请实施例提供的针对JavaScript文件的处理第二流程图;在本申请实施例的可选实施方式中,根据JS抽象语法树,对目标代码的编程接口和平台支持接口进行比对,以判断目标代码是否存在异常,可以通过以下步骤实现:
步骤S300:根据JS抽象语法树,判断JS抽象语法树的表达式名称。
在上述步骤S300中,将根据JavaScript代码生成的JS抽象语法树进行递归,获取JS抽象语法树中的单个表达式,以及对应的表达式名称。常见的表达式名称包括成员表达式(MemberExpression)、调用表达式(CallExpression)等。
步骤S301:根据表达式名称,获取目标代码的对象属性。
在上述步骤S301中,进一步地,根据表达式名称获取目标代码的对象属性。
示例性地,若表达式为成员表达式(MemberExpression),则可以获取表达式的node,进而通过node获取表达式的object和属性。
示例性地,若表达式为调用表达式(CallExpression),则可以获取表达式的callee,根据callee获取node。
需要说明的是,在抽象语法树中,表达式的node通常是指该表达式对应的节点对象;表达式中的object通常指表达式中的对象,即包含属性的对象;callee通常指CallExpression类型的节点的子节点之一,表示被调用的函数或构造函数,它与其他节点的属性和关系一起,描述了表达式在代码中的含义和作用。
步骤S302:根据对象属性和平台支持接口的比对结果,判断目标代码是否存在异常。
在上述步骤S302中,将对象属性和平台支持接口进行比对,根据对象属性和平台支持接口的比对结果判断目标代码是否存在异常。
通过图3可知,本申请实施例提供的异常代码识别方法对文件类型为JavaScript代码的情况下,通过表达式的类别和属性判断是否有平台不支持的接口;在代码解析阶段就检测到平台不支持的代码,减少手动检测的工作量和出错的可能性,从而减少开发人员的工作量。
请参看图4,图4为本申请实施例提供的针对JavaScript文件的处理第三流程图;根据对象属性和平台支持接口的比对结果,判断目标代码是否存在异常,具体可以通过以下步骤实现:
步骤S400:获取代码文件内容中的调用关系对应的调用数据。
在上述步骤S400中,获取代码文件内容中的调用关系对应的调用数据;其中,调用数据包括目标调用数据;需要说明的是,调用数据是代码文件中包含的所有的调用数据,而本申请实施例要判别的是目标调用数据是否为平台支持的接口对应的调用关系对应的调用数据。
步骤S401:获取目标调用数据对应的对象属性。
步骤S402:根据目标调用数据对应的对象属性,获取目标调用数据支持的目标调用对象。
在上述步骤S401-S402中,获取目标调用数据对应的对象属性;其中;对象属性是根据表达式名称获取的。根据目标调用数据对应的对象属性,获取目标调用数据支持的目标调用对象。
步骤S403:判断目标调用对象中是否存在平台支持接口中对应的调用关系的调用对象之外的调用对象。
步骤S404:若目标调用对象中存在平台支持接口对应的调用关系的调用对象之外的调用对象,则判定目标代码存在异常。
在上述步骤S403-S404中,在获得目标调用数据支持的目标调用对象之后,判断目标调用对象中是否存在平台支持接口中对应的调用关系的调用对象之外的调用对象。如果目标调用对象中存在平台支持接口对应的调用关系的调用对象之外的调用对象,就可以判定目标代码存在异常;更详细地,该平台支持接口对应的调用关系的调用对象之外的调用对象对应的代码,被认定为异常代码。
示例性地,由于语法树是树型结构,可从中分析出代码的嵌套规则;如A.B.C数据,使用本申请实施例提供的异常代码识别方法,先通过B作用到C的API调用,即先确定C,再对C涉及的被调用情况进行分析,可能存在D的作用域调用C以及B的作用域中调用C的情况。若系统规则为D的作用域调用C不会产生异常,而B的作用域中调用C的情况则需要产生报警。
而依靠目前的单一对比规则,可能会存在一旦检测到对C的调用进行全部报警,则会产生对D的作用域调用C的误报,或产生干扰操作人员的判断对B的作用域调用C的误报。
需要说明的是,上述过程中关于D的作用域调用C的情况,可以是开发者在原程序中所自定义的API或标签,因其在原程序中有完整的定义以及说明,因此,并不在不兼容或异常之列。
通过图4可知,本申请实施例提供的异常代码识别方法通过分析调用数据对应的对象属性,使用词法分的方法实现根据对象属性和平台支持接口判断目标代码是否存在异常,也就是平台支持接口不支持的接口调用。本申请实施例将源代码分解为更细节的、有意义的词法单元,使得语法分析器可以更简单地进行分析和处理,大大提升代码识别的效率。
请参看图5,图5为本申请实施例提供的针对xml文件的处理第一流程图;在本申请实施例的可选实施方式中,代码文件的类型包括xml文件;平台支持信息包括平台支持组件。根据代码文件内容和开发平台的平台支持信息,判断目标代码是否存在异常,可以通过以下步骤实现:
步骤S500:根据xml文件中的目标代码,生成xml抽象语法树。
在上述步骤S500中,当代码文件是xml文件时,根据xml文件中的目标代码生成xml抽象语法树。需要说明的是,xml抽象语法树(xml AST)是将xml文档解析成抽象语法树的数据结构,将xml文档转换为一个层次结构的节点和属性。
步骤S501:根据xml抽象语法树,对目标代码的组件和平台支持组件进行比对,以判断目标代码是否存在异常。
在上述步骤S501中,根据xml抽象语法树对目标代码的组件的平台支持组件进比对,从而判断目标代码是否存在异常。
通过图5可知,本申请实施例提供的异常代码识别方法在代码文件是xml文件的情况下,根据xml文件的xml抽象语法树,与平台支持组件进行对比,从而判断目标组件是否存在异常。XML语法树可以准确地反映组件的结构和层次关系,提供了精准的组件信息,便于针对性的检测和分析,提高了判断和解决兼容性问题的效率。
请参看图6,图6为本申请实施例提供的针对xml文件的处理第二流程图;在本申请实施例的可选实施方式中,根据xml抽象语法树,对目标代码的组件和平台支持组件进行比对,以判断目标代码是否存在异常,可以通过以下步骤实现:
步骤S600:遍历xml抽象语法树,以获取xml抽象语法树中的目标元素。
步骤S601:获取目标元素的目标标签名称和目标标签属性。
在上述步骤S600-S601中,遍历xml抽象语法树,从而得到抽象语法树中的目标元素。进一步地,再获取目标元素的目标标签名称和目标标签属性。
需要说明的是,目标标签属性和目标标签名称可以定义元素的属性。
步骤S602:根据目标标签名称、目标标签属性、平台支持组件对应的平台支持名称和平台支持属性,判断目标标签属性对应的目标元素中是否存在平台支持组件中不支持的目标元素。
在上述步骤S602中,根据目标标签名称和目标标签属性以及平台支持组件对应的平台支持名称和平台支持属性,判断目标标签属性对应的目标元素中是否存在平台支持组件不支持的目标元素。可以理解的是,上述的判断过程是将平台支持组件的参数与目标标签属性参数进行对比。
步骤S603:若目标标签属性对应的目标元素中存在不支持的目标元素,则判定目标代码存在异常。
在上述步骤S603中,如果目标标签属性对应的目标元素中存在不支持的目标元素,那么判定目标代码存在异常,该异常表征目标代码对应的目标组件存在平台不支持的组件。
通过图6可知,本申请实施例提供的异常代码识别方法可以通过判断平台支持组件的参数与目标标签属性参数之间的匹配关系,来判断目标代码对应的目标组件是否存在平台不支持的组件。通过xml语法树判断组件是否兼容具有精准性、全面性、高效性和可扩展性等优点,可以有效地检测和解决兼容性问题,提高组件的兼容性和可靠性。
请参看图7,图7为本申请实施例提供的针对json文件的处理流程图;在本申请实施例的可选实施方式中,代码文件的类型包括json文件;平台支持信息包括平台支持配置属性。
根据代码文件内容和开发平台的平台支持信息,判断目标代码是否存在异常,可以通过以下步骤实现:
步骤S700:根据json文件,获取目标代码对应的目标页面配置。
在上述步骤S700中,根据json文件获取目标代码对应的目标页面配置;对于小程序而言,json文件通常用于存储小程序页面的配置信息,例如页面的标题、导航栏、底部栏、背景颜色、页面路径等等。通过解析JSON文件,可以获取目标代码对应的目标页面配置。
步骤S701:基于目标页面配置,获取目标页面配置的目标配置属性。
步骤S702:判断目标配置属性中是否存在平台支持配置属性不支持的目标配置属性。
在上述步骤S701-S702中,基于目标页面配置获取目标页面配置的目标配置属性;进一步地,判断目标配置属性中是否存在平台支持配置属性不支持的目标配置属性。
步骤S703:若目标配置属性中存在不支持的目标配置属性,则判定目标代码存在异常。
在上述步骤S703中,对比目标配置属性和平台支持度信息,筛选出不支持的属性;判断不支持的属性是否存在于目标配置属性中,如果存在,则表明目标页面存在不兼容的配置属性。
通过图7可知,本申请实施例提供的异常代码识别方法,在目标代码文件为json文件的情况下,将目标标签属性配置和平台支持度信息进行对比,从而判断出目标页面是否存在不兼容的属性配置。通过对比目标配置属性和平台支持度信息,可以精确地筛选出不支持的属性,避免了手动逐一比对的繁琐过程,同时也减少了漏检或误判的风险。
在一可选地实施方式中,在根据代码文件内容和开发平台的平台支持信息,判断目标代码是否存在异常之后,方法还包括:若判定目标代码存在异常,则生成异常目标代码信息以及修改建议;其中,异常目标代码信息包括异常目标代码对应的文件位置以及异常信息。
由此可知,本申请实施例在判断出存在异常代码之后,生成异常目标代码相关信息和修改建议;本申请实施例通过自动化的工具,自动识别平台间的差异,并将这些差异识别为异常,生成异常报告,提供给开发者,以供开发者进一步对小程序进行调整,极大地提升了处理效率。
请参看图8,图8为本申请实施例提供的异常代码识别系统的模块示意图;本申请的第二方面提供一种异常代码识别系统;该异常代码识别系统100包括:代码包处理模块110和异常判断模块120。
代码包处理模块110用于解析目标代码包,获得目标代码包对应的代码文件。
代码包处理模块110还用于判断代码文件的类型,并基于代码文件的类型,获取相应的代码文件内容。
异常判断模块120用于根据代码文件内容和开发平台的平台支持信息,判断目标代码是否存在异常。
在一可选地实施例中,代码文件的类型包括JavaScript文件;平台支持信息包括平台支持接口;异常判断模块120根据代码文件内容和开发平台的平台支持信息,判断目标代码是否存在异常,包括:异常判断模块120根据JavaScript文件中的代码文件内容,生成JS抽象语法树;根据JS抽象语法树,对目标代码的编程接口和平台支持接口进行比对,以判断目标代码是否存在异常。
在一可选地实施例中,异常判断模块120根据JS抽象语法树,对目标代码的编程接口和平台支持接口进行比对,以判断目标代码是否存在异常,包括:异常判断模块120根据JS抽象语法树,判断JS抽象语法树的表达式名称;根据表达式名称,获取目标代码的对象属性;根据对象属性和平台支持接口的比对结果,判断目标代码是否存在异常。
在一可选地实施例中,异常判断模块120根据对象属性和平台支持接口的比对结果,判断目标代码是否存在异常,包括:异常判断模块120获取代码文件内容中的调用关系对应的调用数据;其中,调用数据包括目标调用数据;获取目标调用数据对应的对象属性;根据目标调用数据对应的对象属性,获取目标调用数据支持的目标调用对象;其中,调用对象包括可调用目标调用数据的对象;异常判断模块120判断目标调用对象中是否存在平台支持接口中对应的调用关系的调用对象之外的调用对象;若目标调用对象中存在平台支持接口对应的调用关系的调用对象之外的调用对象,则判定目标代码存在异常。
在一可选地实施例中,代码文件的类型包括xml文件;平台支持信息包括平台支持组件;异常判断模块120根据代码文件内容和开发平台的平台支持信息,判断目标代码是否存在异常,包括:异常判断模块120根据xml文件中的目标代码,生成xml抽象语法树;根据xml抽象语法树,对目标代码的组件和平台支持组件进行比对,以判断目标代码是否存在异常。
在一可选地实施例中,异常判断模块120根据xml抽象语法树,对目标代码的组件和平台支持组件进行比对,以判断目标代码是否存在异常,包括:异常判断模块120遍历xml抽象语法树,以获取xml抽象语法树中的目标元素;获取目标元素的目标标签名称和目标标签属性;异常判断模块120根据目标标签名称、目标标签属性、平台支持组件对应的平台支持名称和平台支持属性,异常判断模块120判断目标标签属性对应的目标元素中是否存在平台支持组件中不支持的目标元素;若目标标签属性对应的目标元素中存在不支持的目标元素,则判定目标代码存在异常。
在一可选地实施例中,代码文件的类型包括json文件;平台支持信息包括平台支持配置属性;异常判断模块120根据代码文件内容和开发平台的平台支持信息,判断目标代码是否存在异常,包括:异常判断模块120根据json文件,异常判断模块120获取目标代码对应的目标页面配置;基于目标页面配置,获取目标页面配置的目标配置属性;异常判断模块120判断目标配置属性中是否存在平台支持配置属性不支持的目标配置属性;若目标配置属性中存在不支持的目标配置属性,则判定目标代码存在异常。
在一可选地实施例中,该异常代码识别系统100还包括异常信息输出模块130在根据代码文件内容和开发平台的平台支持信息,判断目标代码是否存在异常之后,若判定目标代码存在异常,异常信息输出模块130生成异常目标代码信息以及修改建议;其中,异常目标代码信息包括异常目标代码对应的文件位置以及异常信息。
请参见图9,图9为本申请实施例提供的电子设备的结构示意图。本申请实施例提供的一种电子设备300,包括:处理器301和存储器302,存储器302存储有处理器301可执行的机器可读指令,机器可读指令被处理器301执行时执行如上的方法。
基于同一发明构思,本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序指令,所述计算机程序指令被一处理器读取并运行时,执行上述任一实现方式中的步骤。
所述计算机可读存储介质可以是随机存取存储器(Random Access Memory,RAM),只读存储器(Read Only Memory,ROM),可编程只读存储器(Programmable Read-OnlyMemory,PROM),可擦除只读存储器(Erasable Programmable Read-Only Memory,EPROM),电可擦除只读存储器(Electric Erasable Programmable Read-Only Memory,EEPROM)等各种可以存储程序代码的介质。其中,存储介质用于存储程序,所述处理器在接收到执行指令后,执行所述程序,本发明实施例任一实施例揭示的过程定义的电子终端所执行的方法可以应用于处理器中,或者由处理器实现。
在本申请所提供的实施例中,应该理解到,所揭露装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
另外,作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
再者,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
可以替换的,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。
所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。
在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅为本申请的实施例而已,并不用于限制本申请的保护范围,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

Claims (7)

1.一种异常代码识别方法,其特征在于,所述异常代码识别方法应用于开发平台,所述方法包括:
解析目标代码包,获得所述目标代码包对应的代码文件;
判断所述代码文件的类型,并基于所述代码文件的类型,获取相应的代码文件内容;
根据所述代码文件内容和所述开发平台的平台支持信息,判断所述目标代码是否存在异常;所述代码文件的类型包括JavaScript文件;所述平台支持信息包括平台支持接口;
所述根据所述代码文件内容和所述开发平台的平台支持信息,判断所述目标代码是否存在异常,包括:根据所述JavaScript文件中的代码文件内容,生成JS抽象语法树;根据所述JS抽象语法树,判断所述JS抽象语法树的表达式名称;根据所述表达式名称,获取所述目标代码的对象属性;获取所述代码文件内容中的调用关系对应的调用数据;其中,所述调用数据包括目标调用数据;
获取所述目标调用数据对应的所述对象属性;
根据所述目标调用数据对应的所述对象属性,获取所述目标调用数据支持的目标调用对象;其中,所述调用对象包括可调用所述目标调用数据的对象;
判断所述目标调用对象中是否存在所述平台支持接口中对应的调用关系的调用对象之外的调用对象;
若所述目标调用对象中存在所述平台支持接口对应的调用关系的调用对象之外的调用对象,则判定所述目标代码存在异常;
其中,所述平台支持的调用关系包括所述目标调用数据的调用关系与自定义调用关系。
2.根据权利要求1所述的方法,其特征在于,其中,所述代码文件的类型包括xml文件;所述平台支持信息包括平台支持组件;
所述根据所述代码文件内容和所述开发平台的平台支持信息,判断所述目标代码是否存在异常,包括:
根据所述xml文件中的目标代码,生成xml抽象语法树;
根据所述xml抽象语法树,对所述目标代码的组件和所述平台支持组件进行比对,以判断所述目标代码是否存在异常。
3.根据权利要求2所述的方法,其特征在于,根据所述xml抽象语法树,对所述目标代码的组件和所述平台支持组件进行比对,以判断所述目标代码是否存在异常,包括:
遍历所述xml抽象语法树,以获取所述xml抽象语法树中的目标元素;
获取所述目标元素的目标标签名称和目标标签属性;
根据所述目标标签名称、所述目标标签属性、所述平台支持组件对应的平台支持名称和平台支持属性,判断所述目标标签属性对应的目标元素中是否存在所述平台支持组件中不支持的目标元素;
若所述目标标签属性对应的目标元素中存在所述不支持的目标元素,则判定所述目标代码存在异常。
4.根据权利要求1所述的方法,其特征在于,其中,所述代码文件的类型包括json文件;所述平台支持信息包括平台支持配置属性;
所述根据所述代码文件内容和所述开发平台的平台支持信息,判断所述目标代码是否存在异常,包括:
根据所述json文件,获取所述目标代码对应的目标页面配置;
基于所述目标页面配置,获取所述目标页面配置的目标配置属性;
判断所述目标配置属性中是否存在所述平台支持配置属性不支持的目标配置属性;
若所述目标配置属性中存在所述不支持的目标配置属性,则判定所述目标代码存在异常。
5.根据权利要求1所述的方法,其特征在于,在所述根据所述代码文件内容和所述开发平台的平台支持信息,判断所述目标代码是否存在异常之后,所述方法还包括:
若判定所述目标代码存在异常,则生成异常目标代码信息以及修改建议;其中,所述异常目标代码信息包括异常目标代码对应的文件位置以及异常信息。
6.一种异常代码识别系统,其特征在于,所述异常代码识别系统应用于开发平台,所述异常代码识别系统包括:代码包处理模块和异常判断模块;
所述代码包处理模块用于解析目标代码包,获得所述目标代码包对应的代码文件;
所述代码包处理模块还用于判断所述代码文件的类型,并基于所述代码文件的类型,获取相应的代码文件内容;
所述异常判断模块用于根据所述代码文件内容和所述开发平台的平台支持信息,判断所述目标代码是否存在异常;所述代码文件的类型包括JavaScript文件;所述平台支持信息包括平台支持接口;
所述异常判断模块具体用于根据所述JavaScript文件中的代码文件内容,生成JS抽象语法树;根据所述JS抽象语法树,判断所述JS抽象语法树的表达式名称;根据所述表达式名称,获取所述目标代码的对象属性;获取所述代码文件内容中的调用关系对应的调用数据;其中,所述调用数据包括目标调用数据;获取所述目标调用数据对应的所述对象属性;根据所述目标调用数据对应的所述对象属性,获取所述目标调用数据支持的目标调用对象;其中,所述调用对象包括可调用所述目标调用数据的对象;判断所述目标调用对象中是否存在所述平台支持接口中对应的调用关系的调用对象之外的调用对象;若所述目标调用对象中存在所述平台支持接口对应的调用关系的调用对象之外的调用对象,则判定所述目标代码存在异常;其中,所述平台支持的调用关系包括所述目标调用数据的调用关系与自定义调用关系。
7.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序指令,所述计算机程序指令被一处理器运行时,执行权利要求1-5任一项所述方法中的步骤。
CN202310568404.XA 2023-05-19 2023-05-19 异常代码识别方法、系统、电子设备及存储介质 Active CN116361194B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310568404.XA CN116361194B (zh) 2023-05-19 2023-05-19 异常代码识别方法、系统、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310568404.XA CN116361194B (zh) 2023-05-19 2023-05-19 异常代码识别方法、系统、电子设备及存储介质

Publications (2)

Publication Number Publication Date
CN116361194A CN116361194A (zh) 2023-06-30
CN116361194B true CN116361194B (zh) 2023-08-29

Family

ID=86910002

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310568404.XA Active CN116361194B (zh) 2023-05-19 2023-05-19 异常代码识别方法、系统、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN116361194B (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112131120A (zh) * 2020-09-27 2020-12-25 北京软安科技有限公司 一种源代码缺陷检测方法及装置
US10956244B1 (en) * 2020-08-26 2021-03-23 Coupang Corp. Systems and methods for automated application programming interface evaluation and migration
CN113760729A (zh) * 2021-01-26 2021-12-07 北京沃东天骏信息技术有限公司 一种代码检测方法和装置
CN114625373A (zh) * 2022-03-10 2022-06-14 中国建设银行股份有限公司 应用转换方法、装置、电子设备和存储介质
CN115827437A (zh) * 2022-11-14 2023-03-21 北京火山引擎科技有限公司 静态代码分析方法和装置、电子设备、可读存储介质和芯片

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11775290B2 (en) * 2021-08-06 2023-10-03 Fujitsu Limited Detection of API backward compatibility across software versions

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10956244B1 (en) * 2020-08-26 2021-03-23 Coupang Corp. Systems and methods for automated application programming interface evaluation and migration
CN112131120A (zh) * 2020-09-27 2020-12-25 北京软安科技有限公司 一种源代码缺陷检测方法及装置
CN113760729A (zh) * 2021-01-26 2021-12-07 北京沃东天骏信息技术有限公司 一种代码检测方法和装置
CN114625373A (zh) * 2022-03-10 2022-06-14 中国建设银行股份有限公司 应用转换方法、装置、电子设备和存储介质
CN115827437A (zh) * 2022-11-14 2023-03-21 北京火山引擎科技有限公司 静态代码分析方法和装置、电子设备、可读存储介质和芯片

Also Published As

Publication number Publication date
CN116361194A (zh) 2023-06-30

Similar Documents

Publication Publication Date Title
CN108427646B (zh) 基于Appium的安卓App自动化测试框架构建方法和装置
CN111045944B (zh) 回归测试方法、装置、系统及计算机可读存储介质
CN112394942B (zh) 基于云计算的分布式软件开发编译方法及软件开发平台
CN111240684B (zh) 一种js代码的裁剪方法、装置、介质和电子设备
CN113760729A (zh) 一种代码检测方法和装置
CN111814449B (zh) 表单解析方法、装置、设备及存储介质
CN112711438A (zh) 依赖组件信息提取方法、设备及计算机可读存储介质
US20160055074A1 (en) Program analysis device, program analysis method, and program analysis program
CN113126955A (zh) 一种随机数据生成方法、装置、智能终端及存储介质
CN110928780A (zh) 一种代码质量控制方法、装置、计算机设备及存储介质
CN114610608A (zh) 测试用例处理方法、装置、电子设备以及存储介质
CN116361194B (zh) 异常代码识别方法、系统、电子设备及存储介质
CN113821496B (zh) 数据库迁移方法、系统、设备及计算机可读存储介质
CN114528218A (zh) 测试程序的生成方法、装置、存储介质以及电子设备
CN114527993A (zh) 应用程序部署方法、装置、设备及介质
CN114281341A (zh) 数据结构定义文件的编译方法、装置、计算机设备及介质
CN114374745A (zh) 一种协议格式的处理方法及系统
CN110297639B (zh) 用于检测代码的方法和装置
CN111045724A (zh) 调用链信息的查询方法、装置和可读存储介质
CN111151008A (zh) 游戏运营数据的校验方法、装置、配置后台及介质
CN115795488B (zh) 代码检测系统及代码检测方法
CN115981653A (zh) 异常空语句块检测方法、装置、设备及存储介质
CN115858011A (zh) 一种服务生成方法、装置、电子设备及存储介质
CN115543434A (zh) 一种源代码的智能重构方法及装置
CN113190453A (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
GR01 Patent grant
GR01 Patent grant