CN116361184A - 一种数据查找方法、装置、介质和计算机设备 - Google Patents
一种数据查找方法、装置、介质和计算机设备 Download PDFInfo
- Publication number
- CN116361184A CN116361184A CN202310347716.8A CN202310347716A CN116361184A CN 116361184 A CN116361184 A CN 116361184A CN 202310347716 A CN202310347716 A CN 202310347716A CN 116361184 A CN116361184 A CN 116361184A
- Authority
- CN
- China
- Prior art keywords
- target
- field
- abstract syntax
- searching
- syntax tree
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3604—Software analysis for verifying properties of programs
- G06F11/3608—Software analysis for verifying properties of programs using formal methods, e.g. model checking, abstract interpretation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3604—Software analysis for verifying properties of programs
- G06F11/3612—Software analysis for verifying properties of programs by runtime analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/31—Indexing; Data structures therefor; Storage structures
- G06F16/316—Indexing structures
- G06F16/322—Trees
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种数据查找方法、装置、介质和计算机设备,该方法包括:获取待检测字段,在所述待检测字段中查找目标后缀文件,并将所述目标后缀文件添加至待检测文件列表;遍历所述待检测文件列表中的每个所述目标后缀文件,构建出所述每个目标后缀文件对应的抽象语法树;从多个所述抽象语法树中,获取存在目标节点的第一抽象语法树;从多个所述第一抽象语法树的目标节点中,获取存在目标语句的第一目标节点;从多个所述第一目标节点的目标语句中,查找满足字段预设条件的目标字段。本申请能够提升数据查找、检测的效率,实现代码提交后自动排查,无需人工干预,减少因人工代码评审而产生的开发等待时间,同时也能够显著地提升开发效率。
Description
技术领域
本申请涉及计算机技术领域,具体涉及一种数据查找方法、装置、介质和计算机设备。
背景技术
在软件开发过程中,对数据库的增删改查是软件开发中频繁要去处理的问题,很多开发人员由于代码对代码能力和对业务的理解不足,为了代码编写方便而没有考虑代码性能问题,通常在代码中会在SQL语句中使用如下操作:查询条件中使用了不等于操作符(<>、!=)的select语句导致全表扫描,从而导致SQL执行慢,当业务数据量变大时,这种全表查询会严重影响业务体验,因为这种写法并不会引起编译错误,也很难通过测试发现该类问题。
通常情况下为了避免出现类似问题,可以通过向代码开发人员宣导编码规范,或者依靠代码开发人员自身代码能力和对业务场景判断,或者在项目开发完成后通过人工代码评审(codereview)来解决改类问题。然而,以上几种处理方式往往存在检查易遗漏、易出错和耗时较长等问题。
发明内容
本发明实施例提供一种数据查找方法、装置、介质和计算机设备,能够显著地提升检测索引创建方式的效率和准确性,节省数据库的开发时间。
本发明实施例提供一种数据查找方法,该方法包括:
获取待检测字段,在所述待检测字段中查找目标后缀文件,并将所述目标后缀文件添加至待检测文件列表;
遍历所述待检测文件列表中的每个所述目标后缀文件,构建出所述每个目标后缀文件对应的抽象语法树;
从多个所述抽象语法树中,获取存在目标节点的第一抽象语法树;
从多个所述第一抽象语法树的目标节点中,获取存在目标语句的第一目标节点;
从多个所述第一目标节点的目标语句中,查找满足字段预设条件的目标字段。
本发明实施例还提供一种数据查找装置,所述装置包括:
第一获取模块,用于获取待检测字段,在所述待检测字段中查找目标后缀文件,并将所述目标后缀文件添加至待检测文件列表;
遍历模块,用于遍历所述待检测文件列表中的每个所述目标后缀文件,构建出所述每个目标后缀文件对应的抽象语法树;
第二获取模块,用于从多个所述抽象语法树中,获取存在目标节点的第一抽象语法树;
第三获取模块,用于从多个所述第一抽象语法树的目标节点中,获取存在目标语句的第一目标节点;
查找模块,用于从多个所述第一目标节点的目标语句中,查找满足字段预设条件的目标字段。
可选地,所述第二获取模块具体用于:
检测所述抽象语法树中是否存在第一子目标节点;
若是,则继续检测所述抽象语法树中是否存在所述目标节点,若否,则跳过检测所述抽象语法树对应的所述目标后缀文件。
可选地,所述第三获取模块包括:
目标节点获取子模块,用于获取所述目标节点,将多个所述目标节点保存至目标节点列表;
遍历子模块,用于遍历所述目标节点列表中每个所述目标节点,提取所述每个目标节点的属性值;
第一查找子模块,用于从多个所述属性值中,查找所述目标节点中是否存在所述目标语句。
可选地,所述查找子模块还具体用于:
若是,则继续查找所述目标语句中是否存在所述目标字段;
若否,则跳过检测所述目标语句对应的所述目标后缀文件。
可选地,所述查找模块包括:
第二查找子模块,用于在所述目标语句中查找第一子目标字段和第二子目标字段;
第三查找子模块,用于若查找出同时存在所述第一子目标字段和所述第二子目标字段,且在所述目标语句中所述第一子目标字段与所述第二子目标字段相邻,则所述第一子目标字段与所述第二子目标字段组成所述目标字段。
可选地,所述装置还包括:
判断模块,用于若未查找出存在所述第一子目标字段和所述第二子目标字段中的至少一个,则所述目标语句中不存在所述目标字段。
在本发明的一些实施例中,还可以提供一种计算机设备,包括存储器,处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,所述处理器执行所述计算机程序时实现如上所述方法的步骤。
在本发明的一些实施例中,还可以提供一种计算机可读存储介质,其上存储有计算机程序,当计算机程序在计算机上运行时,使得所述计算机执行如如上所述方法的步骤。
由上可知,本申请通过对mybatis配置文件进行抽象语法树解析,将复杂的配置文件简化为抽象语法树后,通过分析抽象语法树,解析SQL标签的字段下是否使用不等于操作符,从而可以排查出项目代码中是否存在用了不等于操作符导致的全表扫描SQL。
因此,以上实现方式会有如下好处:能够提升数据查找、检测的效率,通过自动化查找的方式,实现代码提交后自动排查,无需人工干预,减少因为codereview而产生的开发等待时间,同时也能够显著地提升开发效率。
其次,通过以上方式进行数据查找还能够提升查找、检测的准确度,从而提升项目代码质量。通过自动化查找的方式,有效地解决了人工codereview可能存在的漏排查,避免因问题代码上线而引起诸多线上问题。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的数据查找方法的应用场景示意图;
图2是本发明实施例提供的数据查找方法的流程示意图;
图3是本发明实施例提供的数据查找方法的另一流程示意图;
图4是本发明实施例提供的数据查找装置的结构示意图;
图5是本发明实施例提供的计算机设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明中的术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”、“第三”的特征可以明示或者隐含地包括至少一个该特征。本发明的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。本发明实施例中所有方向性指示(诸如上、下、左、右、前、后……)仅用于解释在某一特定姿态(如附图所示)下各部件之间的相对位置关系、运动情况等,如果该特定姿态发生改变时,则该方向性指示也相应地随之改变。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本发明的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
本发明实施例提供一种数据查找方法、装置、计算机设备和存储介质。
其中,计算机设备可以为手机、平板电脑、笔记本电脑等终端设备,也可以为穿戴设备、智能电视或其他智能终端。
服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器,但并不局限于此。
请参阅图1,图1是本发明实施例提供的数据查找方法的应用场景示意图。以该数据查找装置集成在服务器中为例,该服务器可以获取待检测字段,在所述待检测字段中查找目标后缀文件,并将所述目标后缀文件添加至待检测文件列表;遍历所述待检测文件列表中的每个所述目标后缀文件,构建出所述每个目标后缀文件对应的抽象语法树;从多个所述抽象语法树中,获取存在目标节点的第一抽象语法树;从多个所述第一抽象语法树的目标节点中,获取存在目标语句的第一目标节点;从多个所述第一目标节点的目标语句中,查找满足字段预设条件的目标字段。
由上可知,本申请通过对mybatis配置文件进行抽象语法树解析,将复杂的配置文件简化为抽象语法树后,通过分析抽象语法树,解析SQL标签的字段下是否使用不等于操作符,从而可以排查出项目代码中是否存在用了不等于操作符导致的全表扫描SQL。
因此,以上实现方式会有如下好处:能够提升数据查找、检测的效率,通过自动化查找的方式,实现代码提交后自动排查,无需人工干预,减少因为codereview而产生的开发等待时间,同时也能够显著地提升开发效率。
其次,通过以上方式进行数据查找还能够提升查找、检测的准确度,从而提升项目代码质量。通过自动化查找的方式,有效地解决了人工codereview可能存在的漏排查,避免因问题代码上线而引起诸多线上问题。
以下分别进行详细说明。需说明的是,以下实施例的描述顺序不作为对实施例优选顺序的限定。
请参阅图2和图3,图2是本发明实施例提供的一种数据查找方法的流程示意图,图3是本发明实施例提供的一种数据查找方法的另一流程示意图。如图2所示,该数据查找方法可以应用于产品推荐模型,产品推荐模型可以用于生成针对目标用户的产品推荐策略,该方法的流程可以如下:
步骤201、获取待检测字段,在所述待检测字段中查找目标后缀文件,并将所述目标后缀文件添加至待检测文件列表。
在一些实施例中,可以从SQL库中获取待检测字段。例如,可以通过从项目代码管理仓库gitlab中通过gitclone命令从SQL库获取开发项目的项目源代码,例如软件开发项目的项目源代码作为待检测字段。
其中,目标后缀文件可以是文件命名的后缀为“.xml”的XML(Extensib leMarkupLanguage,可扩展标记语言)文件。具体地,可以将所有XML文件添加至同一个文件列表中,以形成待检测文件列表。
步骤202、遍历所述待检测文件列表中的每个所述目标后缀文件,构建出所述每个目标后缀文件对应的抽象语法树。
其中,抽象语法树(Abstract Syntax Tree,AST)是源代码语法结构的一种抽象表示,以树状的形式表现编程语言的语法结构,树上的每个节点都表示源代码中的一种结构,去除了冗余的描述和符号,可以很直观地识别出语法树上每一个阶段节点之间的关系,利于实现快速高效的风险检测,本实施例中具体可以使用python第三方依赖库javalang构建抽象语法树,当然,在其他实施例中还可采用其它方式构建抽象语法树,例如现有的构建语法树的工具JDT、ANTLR等等,本实施例对此不作限定。
在一些实施例中,可以在获取目标后缀文件XML文件后,根据对应的待检测字段即java项目源代码来构建对应的XML抽象语法树,以便于后续根据该XM L抽象语法树来查找目标节点。
步骤203、从多个所述抽象语法树中,获取存在目标节点的第一抽象语法树。
可选地,步骤203可以包括:
检测所述抽象语法树中是否存在第一子目标节点;
若是,则继续检测所述抽象语法树中是否存在所述目标节点,若否,则跳过检测所述抽象语法树对应的所述目标后缀文件。
在一些实施例中,可以对XML抽象语法树的结构进行分析,可以通过XPat h(XMLPath Language,XML路径语言)查找XML抽象语法树中的变量节点。其中,XPath可以基于XML的树状结构,提供在数据结构树中找寻节点的能力,可准确获取XML抽象语法树中的变量节点。
在一些实施例中,可以根据XPath查找XML抽象语法树中是否存在第一子目标节点mapper节点,如果存在,则将该文件确认为Mybatis配置文件;如果不存在,表明该文件不是mybatis配置文件,则不需要对该目标后缀文件继续分析。
在一些实施例中,若存在mapper节点,则继续分析该XML抽象语法树中是否存在目标节点select节点,若存在,则表示该配置文件含有数据库查询操作,如果不存在,则表示该配置文件没有数据库查询操作。
步骤204、从多个所述第一抽象语法树的目标节点中,获取存在目标语句的第一目标节点。
可选地,步骤204可以包括以下步骤:
获取所述目标节点,将多个所述目标节点保存至目标节点列表;
遍历所述目标节点列表中每个所述目标节点,提取所述每个目标节点的属性值;
从多个所述属性值中,查找所述目标节点中是否存在所述目标语句。
在一些实施例中,可以将XML抽象语法树中的mapper节点中所存在的sele ct节点,保存查找到的select节点信息到select节点列表,即目标节点列表。进一步地,再遍历目标节点列表中的每个目标节点select节点,分析该selec t节点下的text属性值,并可以通过Xpath提取该selcet节点下的text的属性的值。
在一些实施例中,可以通过translate函数将text属性值中的所有大写字符转换为小写字符,以方便后续对text属性值中的字符进行统一比较、查找,以提升字符查找的效率和准确性。
其中,目标语句可以为where条件语句。
可选地,步骤“所述从多个所述属性值中,查找所述目标节点中是否存在所述目标语句”,可以包括:
若是,则继续查找所述目标语句中是否存在所述目标字段;
若否,则跳过检测所述目标语句对应的所述目标后缀文件。
在一些实施例中,可以判断转换后的text属性值中是否存在where条件语句,如果都不存在,则该目标后缀文件中不存在因为不等于操作符代码导致的SQL数据库全表查询操作。
相应地,若text属性值中如果存在where条件语句,则继续查询该where条件语句中是否存在用于导致出现SQL数据库全表查询操作的目标字段,从而能够通过以上方式,显著地提升查询目标字段的全面性和准确性。
步骤205、从多个所述第一目标节点的目标语句中,查找满足字段预设条件的目标字段。
可选地,步骤205可以包括:
在所述目标语句中查找第一子目标字段和第二子目标字段;
若查找出同时存在所述第一子目标字段和所述第二子目标字段,且在所述目标语句中所述第一子目标字段与所述第二子目标字段相邻,则所述第一子目标字段与所述第二子目标字段组成所述目标字段。
可选地,本申请的方法还可以包括:
若未查找出存在所述第一子目标字段和所述第二子目标字段中的至少一个,则所述目标语句中不存在所述目标字段。
其中,目标字段可以为导致SQL数据库出现全表查询操作的不等于操作符代码,例如目标字段可以包括第一子目标字段“<”、第二子目标字段“>”,或者第一子目标字段“!”、第二子目标字段“=”。
其中,字段预设条件可以为第一子目标字段与第二子目标字段同时在whe re条件语句中出现,且两者在该where条件语句中处于相邻的位置。
可以理解,由于在SQL语句中,“<>”和“!=”为不等于操作符代码,会导致SQL数据库出现全表扫描操作,从而导致SQL语句执行较慢。因此,可以通过结合字段预设条件的方式,来查找目标语句中是否包含符合该字段预设条件的目标字段,来查找目标字段“<>”和“!=”进行删除和改写,来避免出现因以上目标字段导致SQL数据库出现全表扫描操作。
在一些实施例中,实现以上查找目标字段的逻辑对应的代码为:
//select/text[contains(translate(@Image,
"ABCDEFGHIJKLMNOPQRSTUVWXYZ","abcdefghijklmnopqrstuvwxyz"),'<')an dcontains(translate(@Image,"ABCDEFGHIJKLMNOPQRSTUVWXYZ",
"abcdefghijklmnopqrstuvwxyz"),'>')or contains(translate(@Image,"ABCDEFGHIJKLMNOPQRSTUVWXYZ","abcdefghijklmnopqrstuvwxyz"),'!')and contains(translate(@Image,"ABCDEFGHIJKLMNOPQRSTUVWXYZ",
"abcdefghijklmnopqrstuvwxyz"),'=')]
由上可知,本申请通过对mybatis配置文件进行抽象语法树解析,将复杂的配置文件简化为抽象语法树后,通过分析抽象语法树,解析SQL标签的字段下是否使用不等于操作符,从而可以排查出项目代码中是否存在用了不等于操作符导致的全表扫描SQL。
因此,以上实现方式会有如下好处:能够提升数据查找、检测的效率,通过自动化查找的方式,实现代码提交后自动排查,无需人工干预,减少因为codereview而产生的开发等待时间,同时也能够显著地提升开发效率。
其次,通过以上方式进行数据查找还能够提升查找、检测的准确度,从而提升项目代码质量。通过自动化查找的方式,有效地解决了人工codereview可能存在的漏排查,避免因问题代码上线而引起诸多线上问题。
为了更好地实施以上方法,相应的,本发明实施例还提供一种数据查找装置,该数据查找装置具体集成在终端或服务器中。
参考图4,该装置包括:
第一获取模块301,用于获取待检测字段,在所述待检测字段中查找目标后缀文件,并将所述目标后缀文件添加至待检测文件列表;
遍历模块302,用于遍历所述待检测文件列表中的每个所述目标后缀文件,构建出所述每个目标后缀文件对应的抽象语法树;
第二获取模块303,用于从多个所述抽象语法树中,获取存在目标节点的第一抽象语法树;
第三获取模块304,用于从多个所述第一抽象语法树的目标节点中,获取存在目标语句的第一目标节点;
查找模块305,用于从多个所述第一目标节点的目标语句中,查找满足字段预设条件的目标字段。
可选地,所述第二获取模块303具体用于:
检测所述抽象语法树中是否存在第一子目标节点;
若是,则继续检测所述抽象语法树中是否存在所述目标节点,若否,则跳过检测所述抽象语法树对应的所述目标后缀文件。
可选地,所述第三获取模块304包括:
目标节点获取子模块,用于获取所述目标节点,将多个所述目标节点保存至目标节点列表;
遍历子模块,用于遍历所述目标节点列表中每个所述目标节点,提取所述每个目标节点的属性值;
第一查找子模块,用于从多个所述属性值中,查找所述目标节点中是否存在所述目标语句。
可选地,所述查找子模块还具体用于:
若是,则继续查找所述目标语句中是否存在所述目标字段;
若否,则跳过检测所述目标语句对应的所述目标后缀文件。
可选地,所述查找模块305包括:
第二查找子模块,用于在所述目标语句中查找第一子目标字段和第二子目标字段;
第三查找子模块,用于若查找出同时存在所述第一子目标字段和所述第二子目标字段,且在所述目标语句中所述第一子目标字段与所述第二子目标字段相邻,则所述第一子目标字段与所述第二子目标字段组成所述目标字段。
可选地,所述装置还包括:
判断模块,用于若未查找出存在所述第一子目标字段和所述第二子目标字段中的至少一个,则所述目标语句中不存在所述目标字段。
在本发明的一些实施例中,还可以提供一种计算机设备,包括存储器,处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,所述处理器执行所述计算机程序时实现如上所述方法的步骤。
在本发明的一些实施例中,还可以提供一种计算机可读存储介质,其上存储有计算机程序,当计算机程序在计算机上运行时,使得所述计算机执行如如上所述方法的步骤。
由上可知,本申请通过对mybatis配置文件进行抽象语法树解析,将复杂的配置文件简化为抽象语法树后,通过分析抽象语法树,解析SQL标签的字段下是否使用不等于操作符,从而可以排查出项目代码中是否存在用了不等于操作符导致的全表扫描SQL。
因此,以上实现方式会有如下好处:能够提升数据查找、检测的效率,通过自动化查找的方式,实现代码提交后自动排查,无需人工干预,减少因为codereview而产生的开发等待时间,同时也能够显著地提升开发效率。
其次,通过以上方式进行数据查找还能够提升查找、检测的准确度,从而提升项目代码质量。通过自动化查找的方式,有效地解决了人工codereview可能存在的漏排查,避免因问题代码上线而引起诸多线上问题。
此外,本发明实施例还提供一种计算机设备,该计算机设备可以为终端或者服务器,如图5所示,其示出了本发明实施例所涉及的计算机设备的结构示意图,具体来讲:
该计算机设备可以包括一个或者一个以上处理核心的处理器401、一个或一个以上计算机可读存储介质的存储器402、电源403和输入单元404等部件。本领域技术人员可以理解,图5中示出的计算机设备结构并不构成对计算机设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:
处理器401是该计算机设备的控制中心,利用各种接口和线路连接整个计算机设备的各个部分,通过运行或执行存储在存储器402内的软件程序和/或模块,以及调用存储在存储器402内的数据,执行计算机设备的各种功能和处理数据,从而对计算机设备进行整体监控。可选的,处理器401可包括一个或多个处理核心;优选的,处理器401可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器401中。
存储器402可用于存储软件程序以及模块,处理器401通过运行存储在存储器402的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器402可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序等;存储数据区可存储根据计算机设备的使用所创建的数据等。此外,存储器402可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器402还可以包括存储器控制器,以提供处理器401对存储器402的访问。
计算机设备还包括给各个部件供电的电源403,优选的,电源403可以通过电源管理系统与处理器401逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源403还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
该计算机设备还可包括输入单元404,该输入单元404可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。
尽管未示出,计算机设备还可以包括显示单元等,在此不再赘述。具体在本实施例中,计算机设备中的处理器401会按照如下的指令,将一个或一个以上的应用程序的进程对应的可执行文件加载到存储器402中,并由处理器401来运行存储在存储器402中的应用程序,从而实现各种功能,如下:
获取待检测字段,在所述待检测字段中查找目标后缀文件,并将所述目标后缀文件添加至待检测文件列表;
遍历所述待检测文件列表中的每个所述目标后缀文件,构建出所述每个目标后缀文件对应的抽象语法树;
从多个所述抽象语法树中,获取存在目标节点的第一抽象语法树;
从多个所述第一抽象语法树的目标节点中,获取存在目标语句的第一目标节点;
从多个所述第一目标节点的目标语句中,查找满足字段预设条件的目标字段。
由上可知,本申请通过对mybatis配置文件进行抽象语法树解析,将复杂的配置文件简化为抽象语法树后,通过分析抽象语法树,解析SQL标签的字段下是否使用不等于操作符,从而可以排查出项目代码中是否存在用了不等于操作符导致的全表扫描SQL。
因此,以上实现方式会有如下好处:能够提升数据查找、检测的效率,通过自动化查找的方式,实现代码提交后自动排查,无需人工干预,减少因为codereview而产生的开发等待时间,同时也能够显著地提升开发效率。
其次,通过以上方式进行数据查找还能够提升查找、检测的准确度,从而提升项目代码质量。通过自动化查找的方式,有效地解决了人工codereview可能存在的漏排查,避免因问题代码上线而引起诸多线上问题。
以上各个操作的具体实施可参见前面的实施例,在此不再赘述。
本领域普通技术人员可以理解,上述实施例的各种方法中的全部或部分步骤可以通过指令来完成,或通过指令控制相关的硬件来完成,该指令可以存储于一计算机可读存储介质中,并由处理器进行加载和执行。
为此,本发明实施例还提供一种计算机可读存储介质,其中存储有多条指令,该指令能够被处理器进行加载,以执行本发明实施例中的各种可选实现方式中提供的方法。
根据本申请的一个方面,还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述实施例中的各种可选实现方式中提供的方法。
以上各个操作的具体实施可参见前面的实施例,例如步骤201至步骤205中所提到的实施例,在此不再赘述。
其中,该存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取记忆体(RAM,Random Access Memory)、磁盘或光盘等。
由于该存储介质中所存储的指令,可以执行本发明实施例所提供的方法中的步骤,因此,可以实现本发明实施例所提供的方法所能实现的有益效果,详见前面的实施例,在此不再赘述。
以上对本发明实施例所提供的一种数据查找方法、装置、计算机设备和存储介质进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上,本说明书内容不应理解为对本发明的限制。
Claims (10)
1.一种数据查找方法,其特征在于,所述方法包括:
获取待检测字段,在所述待检测字段中查找目标后缀文件,并将所述目标后缀文件添加至待检测文件列表;
遍历所述待检测文件列表中的每个所述目标后缀文件,构建出所述每个目标后缀文件对应的抽象语法树;
从多个所述抽象语法树中,获取存在目标节点的第一抽象语法树;
从多个所述第一抽象语法树的目标节点中,获取存在目标语句的第一目标节点;
从多个所述第一目标节点的目标语句中,查找满足字段预设条件的目标字段。
2.根据权利要求1所述的数据查找方法,其特征在于,所述从多个所述抽象语法树中,获取存在目标节点的第一抽象语法树,包括:
检测所述抽象语法树中是否存在第一子目标节点;
若是,则继续检测所述抽象语法树中是否存在所述目标节点,若否,则跳过检测所述抽象语法树对应的所述目标后缀文件。
3.根据权利要求1所述的数据查找方法,其特征在于,所述从多个所述第一抽象语法树的目标节点中,获取存在目标语句的第一目标节点,包括:
获取所述目标节点,将多个所述目标节点保存至目标节点列表;
遍历所述目标节点列表中每个所述目标节点,提取所述每个目标节点的属性值;
从多个所述属性值中,查找所述目标节点中是否存在所述目标语句。
4.根据权利要求3所述的数据查找方法,其特征在于,所述从多个所述属性值中,查找所述目标节点中是否存在所述目标语句,包括:
若是,则继续查找所述目标语句中是否存在所述目标字段;
若否,则跳过检测所述目标语句对应的所述目标后缀文件。
5.根据权利要求1所述的数据查找方法,其特征在于,所述从多个所述第一目标节点的目标语句中,查找满足字段预设条件的目标字段,包括:
在所述目标语句中查找第一子目标字段和第二子目标字段;
若查找出同时存在所述第一子目标字段和所述第二子目标字段,且在所述目标语句中所述第一子目标字段与所述第二子目标字段相邻,则所述第一子目标字段与所述第二子目标字段组成所述目标字段。
6.根据权利要求5所述的数据查找方法,其特征在于,所述方法还包括:
若未查找出存在所述第一子目标字段和所述第二子目标字段中的至少一个,则所述目标语句中不存在所述目标字段。
7.一种数据查找装置,其特征在于,所述装置包括:
第一获取模块,用于获取待检测字段,在所述待检测字段中查找目标后缀文件,并将所述目标后缀文件添加至待检测文件列表;
遍历模块,用于遍历所述待检测文件列表中的每个所述目标后缀文件,构建出所述每个目标后缀文件对应的抽象语法树;
第二获取模块,用于从多个所述抽象语法树中,获取存在目标节点的第一抽象语法树;
第三获取模块,用于从多个所述第一抽象语法树的目标节点中,获取存在目标语句的第一目标节点;
查找模块,用于从多个所述第一目标节点的目标语句中,查找满足字段预设条件的目标字段。
8.根据权利要求7所述的数据查找装置,其特征在于,所述第二获取模块具体用于:
检测所述抽象语法树中是否存在第一子目标节点;
若是,则继续检测所述抽象语法树中是否存在所述目标节点,若否,则跳过检测所述抽象语法树对应的所述目标后缀文件。
9.一种计算机设备,其特征在于,包括存储器,处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,所述处理器执行所述计算机程序时实现如权利要求1至6中任一项所述方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,当计算机程序在计算机上运行时,使得所述计算机执行如权利要求1至6中任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310347716.8A CN116361184A (zh) | 2023-03-28 | 2023-03-28 | 一种数据查找方法、装置、介质和计算机设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310347716.8A CN116361184A (zh) | 2023-03-28 | 2023-03-28 | 一种数据查找方法、装置、介质和计算机设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116361184A true CN116361184A (zh) | 2023-06-30 |
Family
ID=86937769
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310347716.8A Pending CN116361184A (zh) | 2023-03-28 | 2023-03-28 | 一种数据查找方法、装置、介质和计算机设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116361184A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117668925A (zh) * | 2024-01-31 | 2024-03-08 | 厦门天锐科技股份有限公司 | 一种文件指纹生成方法、装置、电子设备及存储介质 |
-
2023
- 2023-03-28 CN CN202310347716.8A patent/CN116361184A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117668925A (zh) * | 2024-01-31 | 2024-03-08 | 厦门天锐科技股份有限公司 | 一种文件指纹生成方法、装置、电子设备及存储介质 |
CN117668925B (zh) * | 2024-01-31 | 2024-04-16 | 厦门天锐科技股份有限公司 | 一种文件指纹生成方法、装置、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107506451B (zh) | 用于数据交互的异常信息监控方法及装置 | |
US9305057B2 (en) | Extensible indexing framework using data cartridges | |
CN108549538B (zh) | 一种代码检测方法、装置、存储介质及测试终端 | |
US20090070300A1 (en) | Method for Processing Data Queries | |
CN105988996B (zh) | 一种索引文件生成方法及装置 | |
CN108694221B (zh) | 数据实时分析方法、模块、设备和装置 | |
US20140379753A1 (en) | Ambiguous queries in configuration management databases | |
CN111708805A (zh) | 数据查询方法、装置、电子设备及存储介质 | |
CN112328805B (zh) | 基于nlp的漏洞描述信息与数据库表的实体映射方法 | |
CN113296786A (zh) | 数据处理方法、装置、电子设备及存储介质 | |
CN113419789A (zh) | 数据模型脚本的生成方法和装置 | |
CN116361184A (zh) | 一种数据查找方法、装置、介质和计算机设备 | |
CN111324619A (zh) | 微服务系统中的对象更新方法、装置、设备和存储介质 | |
CN115098061A (zh) | 软件开发文档优化方法、装置、计算机设备及存储介质 | |
CN114356964A (zh) | 数据血缘构建方法、装置、存储介质及电子设备 | |
CN114253995A (zh) | 数据溯源方法、装置、设备及计算机可读存储介质 | |
CN108959294B (zh) | 一种访问搜索引擎的方法和装置 | |
CN113760891A (zh) | 一种数据表的生成方法、装置、设备和存储介质 | |
CN116610697A (zh) | 数据库查询语句的查询方法、存储介质及设备 | |
JP2023015275A (ja) | 観測情報処理方法、装置、電子機器、記憶媒体及びコンピュータプログラム | |
CN113609154B (zh) | 一种数据查询方法、装置、电子设备和存储介质 | |
CN115344661A (zh) | 设备停机诊断方法、装置、电子设备及存储介质 | |
CN113868138A (zh) | 测试数据的获取方法、系统、设备及存储介质 | |
CN115952083A (zh) | 一种索引创建方式检测方法、装置、介质和计算机设备 | |
US7590634B2 (en) | Detection of inaccessible resources |
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 |