CN114780098A - Gauss Db数据库程序语法的检测方法及相关设备 - Google Patents
Gauss Db数据库程序语法的检测方法及相关设备 Download PDFInfo
- Publication number
- CN114780098A CN114780098A CN202210249338.5A CN202210249338A CN114780098A CN 114780098 A CN114780098 A CN 114780098A CN 202210249338 A CN202210249338 A CN 202210249338A CN 114780098 A CN114780098 A CN 114780098A
- Authority
- CN
- China
- Prior art keywords
- program
- database
- matching
- gauss
- program field
- 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
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/42—Syntactic analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3409—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供一种Gauss Db数据库程序语法的检测方法及相关设备,基于预设有定时唤醒程序的父进程逐一唤醒不同的子进程,采用多进程的思路可以将定时唤醒程序与数据库连接程序进行解耦,提高不同进程内程序的灵活性和可维护性。然后与Gauss Db数据库建立通讯连接并获取Gauss Db数据库中待检测的程序字段,对该程序字段进行规范化加工后通过预设的匹配模板集对程序字段列表进行滚动匹配,得到问题简报,进而生成线上报告和线下报告。缓解了人工检测效率低、成本高、形式被动的技术问题,在减少人工损耗和检测门槛的同时,大大提高检测频率,使开发人员能够及时修正潜在的程序问题,间接提升了数据库整体的稳定性与运行效率。
Description
技术领域
本申请涉及程序语法检测技术领域,尤其涉及一种Gauss Db数据库程序语法的检测方法及相关设备。
背景技术
代码走查属于程序开发工作中的一个环节,在大多数公司内都会周期性的进行代码走查。通过代码走查,能够及时发现代码中的漏洞,将可能发生的事故与危害扼杀在开发阶段。现今的代码走查以人工为主,通过专家在一定时间内对项目内的程序进行评阅来查找程序漏洞,但这种形式具有很大的缺点,一是项目代码量通常十分庞杂,阅读需要大量的时间和人力,二是企业内项目众多,代码走查很难全面覆盖,三是代码走查的核心是依赖专家的专业知识,难以复用。在国产化环境下的Gauss Db数据库开发中,时间与人力均十分珍贵,将有限的人力周期性的分配至代码走查工作,会严重打乱开发节奏,于此同时, GaussDb数据库的问世时间较短,少有能够精通Gauss Db数据库开发的专家,在进行代码走查工作时会更加困难。
发明内容
有鉴于此,本申请的目的在于提出一种Gauss Db数据库程序语法的检测方法及相关设备用以解决上述问题。
基于上述目的,本申请的第一方面提供了一种Gauss Db数据库程序语法的检测方法,包括:
基于预设有定时唤醒程序的父进程逐一唤醒不同的子进程,其中,每个子进程内设置有数据库连接程序;
通过运行所述数据库连接程序,与所述高斯集群Gauss Db数据库建立通讯连接;
获取所述Gauss Db数据库中待检测的程序字段;
对所述程序字段进行规范化处理,得到程序字段列表;
通过预设的匹配模板集对所述程序字段列表进行滚动匹配,得到问题简报;
基于所述问题简报,通过预设的报告生成程序生成线上报告和线下报告。
本申请的第二方面提供了一种Gauss Db数据库程序语法的检测装置,包括:
定时唤醒模块,被配置为:基于预设有定时唤醒程序的父进程逐一唤醒不同的子进程,其中,每个子进程内设置有数据库连接程序;
数据库连接模块,被配置为:通过运行所述数据库连接程序,与所述Gauss Db数据库建立通讯连接;
程序字段获取模块,被配置为:获取所述Gauss Db数据库中待检测的程序字段;
程序字段加工模块,被配置为:对所述程序字段进行规范化处理,得到程序字段列表;
程序模板匹配模块,被配置为:通过预设的匹配模板集对所述程序字段列表进行滚动匹配,得到问题简报;
检测结果输出模块,被配置为:基于所述问题简报,通过预设的报告生成程序生成线上报告和线下报告。
本申请的第三方面提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如本申请的第一方面提供任的所述方法。
本申请的第四方面提供了一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令用于使计算机执行本申请的第一方面提供的所述方法。
从上面所述可以看出,本申请提供的Gauss Db数据库程序语法的检测方法及相关设备,基于预设有定时唤醒程序的父进程逐一唤醒不同的子进程,其中,每个子进程内设置有数据库连接程序,采用多进程的思路可以将定时唤醒程序与数据库连接程序进行解耦,一方面可以在数据库连接程序出现问题时,定时唤醒程序依旧能够正常运行,二是可以在数据库连接程序在不影响定时唤醒程序的情况下,对各自进程的参数或程序进行热更新,提高各个程序的灵活性和可维护性。然后通过运行数据库连接程序,与高斯集群Gauss Db数据库建立通讯连接并获取Gauss Db数据库中待检测的程序字段,对程序字段进行规范化处理,得到程序字段列表,由于Gauss Db数据库中存储的程序字段并不便于直接进行分析,对该程序字段进行规范化加工后才能通过预设的匹配模板集对程序字段列表进行滚动匹配,得到问题简报,并基于该问题简报,通过预设的报告生成程序生成线上报告和线下报告。缓解了人工检测效率低、成本高、形式被动的技术问题,在减少人工损耗和检测门槛的同时,大大提高检测频率,使开发人员能够及时修正潜在的程序问题,间接提升了数据库整体的稳定性与运行效率。
附图说明
为了更清楚地说明本申请或相关技术中的技术方案,下面将对实施例或相关技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例的Gauss Db数据库程序语法的检测方法的流程图;
图2为本申请实施例的Gauss Db数据库程序语法的检测方法的运行过程示意图;
图3为本申请实施例的程序字段的规范化处理流程图;
图4为本申请实施例的获取程序字段列表的流程图;
图5为本申请实施例的获取问题简报的流程图;
图6为本申请实施例的Gauss Db数据库连接的流程图;
图7为本申请实施例的Gauss Db数据库程序语法的检测装置的结构图;
图8为本申请实施例的电子设备的结构图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本申请进一步详细说明。
需要说明的是,除非另外定义,本申请实施例使用的技术术语或者科学术语应当为本申请所属领域内具有一般技能的人士所理解的通常意义。本申请实施例中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该相对位置关系也可能相应地改变。
信息技术创新发展,极大促进了经济社会繁荣进步,同时也带来了新的安全风险和挑战。随着国家对网络和信息安全的高度重视,信息安全问题上升到国家安全的高度。软件国产化成为保护国家信息安全的重要手段,而数据库作为基础软件理应首当其冲成为国产化推进的主要领域之一。
Gauss Db数据库是华为自研数据库,其在PostgreSQL数据库的基础上,进行开发和改进。在基于分布式的Gauss Db 200/300数据库中,其代码的自研比例相对于早期的Gauss Db 100数据库已经非常之高,在底层逻辑与表层语法上均发展出了自己的一套体系。与现有常用的国外数据库相比,Gauss Db数据库发布时间较短,开发语法与现有常用数据库之间存在一定的差异,在学习与开发时会消耗一定的人力与时间,在数据库国产化的任务目标之下,如何高效安全地进行开发也日益成为数据库工作者以及相关公司所重点关注的问题。
本申请实施例提供的Gauss Db数据库程序语法的检测方法,基于预设有定时唤醒程序的父进程逐一唤醒不同的子进程,采用多进程的思路可以将定时唤醒程序与数据库连接程序进行解耦,提高不同进程内程序的灵活性和可维护性。然后与Gauss Db数据库建立通讯连接并获取Gauss Db数据库中待检测的程序字段,对该程序字段进行规范化加工后通过预设的匹配模板集对程序字段列表进行滚动匹配,得到问题简报,进而生成线上报告和线下报告。缓解了人工检测效率低、成本高、形式被动的技术问题,在减少人工损耗和检测门槛的同时,大大提高检测频率,使开发人员能够及时修正潜在的程序问题,间接提升了数据库整体的稳定性与运行效率。
在一些实施例中,如图1和图2所示,Gauss Db数据库程序语法的检测方法,包括:
步骤100:基于预设有定时唤醒程序的父进程逐一唤醒不同的子进程,其中,每个子进程内设置有数据库连接程序。
在该步骤中,定时唤醒功能的运行采用多进程来实现,将预设有定时唤醒程序的进程设置为父进程,将预设有数据库连接程序的进程设置为子进程,子进程设置有多个,多个子进程为并列关系。父进程在执行唤醒功能时,首先,利用定时唤醒程序读取基于LinuxCorntab格式的时间代码来定义数据库连接程序的执行时间,当时间满足定义时,即真实时间到达执行时间时,定时唤醒程序通过cmd命令行在新的子进程内调起数据库连接程序,实现数据库连接程序的唤醒。采用多进程的思路可以将定时唤醒程序与数据库连接程序进行解耦,一方面可以在数据库连接程序出现问题时,定时唤醒程序依旧能够正常运行,二是可以在数据库连接程序在不影响定时唤醒程序的情况下,对父进程和各个子进程的参数或程序进行热更新,提高父进程和各个子进程的灵活性和可维护性。
可选地,每个检测过程选择唤醒一个子进程,而不是选择多进程,是因为每个子进程包括多个线程,可以在每个子进程内进行多线程的检测来提高检测效率,其中,进程和线程的关系如下:
(1)线程是程序执行的最小单位,而进程是操作系统分配资源的最小单位。
(2)一个进程由一个或多个线程组成,线程是一个进程中代码的不同执行路线。
(3)进程之间相互独立,但同一进程下的各个线程之间共享程序的内存空间(包括代码段,数据集,堆等)及一些进程级的资源(如打开文件和信号等),某一进程内的线程在其他进程不可见。
(4)调度和切换速度不同:线程上下文切换比进程上下文切换要快得多。
步骤200:通过运行数据库连接程序,与Gauss Db数据库建立通讯连接。
在该步骤中,通过运行数据库连接程序,采用py_opengauss作为连接媒介,通过传入预先设置好的数据库地址、用户名、密码等数据库参数,得到一个能够与Gauss Db数据库进行通讯的python对象,实现与Gauss Db数据库通讯连接。
步骤300:获取Gauss Db数据库中待检测的程序字段。
在该步骤中,如图2所示,Gauss Db数据库内建了若干系统表,通过访问 pg_proc、pg_user、pg_namespace等表,过滤掉Gauss Db数据库中的这些系统表,在过滤后的GaussDb数据库中,通过访问所述python对象获取待检测的程序字段,其中,程序字段包括程序的属性信息以及具体内容。通过遍历全部的通讯对象,即可获得所有配置数据库的程序。其中,通讯对象可以为python 对象、java对象或C++对象;配置数据库可以为Gauss Db数据库、SQL Server 数据库或PostgreSQL数据库。
步骤400:对程序字段进行规范化处理,得到程序字段列表。
在该步骤中,对于获取到的程序字段并不便于直接进行分析,需经过规范化处理后才能进行下一步骤的分析处理。在规范化处理时,首先会根据换行符的位置记录下程序字段中每个字符所在的行号,以方便进行标记和记录,记录完成之后,清除所有换行符,之后通过注释符的位置清除所有的注释符对应的注释内容,最后将所有连续的空格合并为单个空格,并按照空格位置对程序进行切片,将长字符串转化为由各个独立字符为元素顺序组成的列表,即程序字段列表。
步骤500:通过预设的匹配模板集对程序字段列表进行滚动匹配,得到问题简报。
在该步骤中,匹配模板集中包括多个匹配模板,匹配模板是一套统一输入输出的函数,在函数内其基本构成有字符遍历逻辑和问题判定逻辑,通过字符遍历逻辑能够按一定规则对整个输入的程序字段进行遍历,问题判定逻辑可以通过专家预先构建的匹配模板对问题进行匹配。为了便于开发和管理,将所有的程序模板封装为python内的程序对象,即python对象,并统一存储在一个字典内进行传递和调用。在所有匹配模板均返回问题行号之后,进行结果汇总:通过结果汇总程序将重复的行号进行合并,并统计出现问题的数量,然后按照设置好的问题说明与行号进行组合,生成当前程序字段的问题简报。
步骤600:基于问题简报,通过预设的报告生成程序生成线上报告和线下报告。
在该步骤中,线下报告生成:在结果汇总之后,将未经处理的原始程序字段按行号在对应行以注释的形式打上问题说明,并在程序头部插入问题简报,然后以txt文件的形式写入到磁盘中,文件名包含程序名称、程序所有者、程序位置、问题数量等信息。
线上报告生成:结果汇总之后,通过通讯对象将问题简报写入Gauss Db 数据库中的特定表内,在表中包含问题最初查出时间、问题当前查出时间、程序名称、程序所有者、程序位置、问题数量、每百行程序问题比率、问题说明、问题出现批次等信息。通过线上报告,可以较方便的获取到当前数据库内整体的代码质量情况,例如统计出现最多的问题、统计总问题数量、统计每个项目的问题出现比率等。
其中,分别生成线上报告和线下报告可以方便开发人员随时随地的查看检测结果,且使得检测结果变得一目了然,方便开发人员迅速的了解程序字段中存在的问题。
在一些实施例中,如图3所示,步骤400:对程序字段进行规范化处理,得到程序字段列表,具体包括:
步骤410:基于程序字段中换行符的位置,记录程序字段中每个字符所在的行号。
在该步骤中,对于获取到的程序字段并不便于直接进行分析,需经过规范化处理后才能进行下一步骤的分析处理。在规范化处理时,首先会根据换行符的位置记录下程序字段中每个字符所在的行号,在检测出程序字段的问题后,通过确定出现问题的位置的字符所对应的行号,可以迅速确定出现问题的位置,行号相当于问题出现位置的一个标记。
步骤420:响应于确定行号记录完毕,清除换行符。
在该步骤中,换行符的存在会使程序字段分为分为多行,影响检测效率,在清楚换行符后,程序字段会成为一个较长的长字符串,可以在该长字符串上从头至尾的进行检测,在检测过程中无需执行换行操作。
步骤430:基于程序字段中注释符的位置,清除注释符对应的内容。
在该步骤中,在清除所有换行符之后,通过注释符的位置清除所有的注释符对应的注释内容,因为注释内容对于整个程序字段来说属于附加内容,无需对其进行检测,只需要对程序本身进行问题的检测就可以实现将程序字段内不规范的写法摘选出来,所以选择删除所有注释内容,以减少检测的任务量,提高检测效率,降低误报率。
步骤440:将程序字段中所有连续的空格均合并为单个空格。
在该步骤中,将所有连续的空格合并为单个空格,由于原程序字段每行的最后一个字符后可能存在较多的空格,删除了换行符后,这些空格并不会消失,将这些连续的空格合并为单个空格,此时,程序字段变为了一个长字符串,可以降低程序字段拆分的难度,提高拆分效率。
步骤450:基于所述程序字段中全部空格的位置对所述程序字段进行切片,得到程序字段列表。
在该步骤中,首先寻找程序字段中全部空格的位置,然后按照空格位置对程序进行切片,将长字符串转化为由各个独立字符为元素顺序组成的列表,即程序字段列表。
在一些实施例中,如图4所示,步骤450:基于所述程序字段中全部空格的位置对所述程序字段进行切片,得到程序字段列表,具体包括:
步骤451:基于所述程序字段中全部空格的位置对所述程序字段进行切片,得到多个长字符串。
在该步骤中,在确定程序字段中的空格的位置后,以空格所在位置为切片位置,对程序字段进行切片处理,得到多个长字符串。
步骤452:将每个长字符串拆分为多个独立字符。
步骤453:基于多个独立字符在长字符串中的顺序,以每个独立字符为元素,对独立字符进行顺序排列,得到程序字段列表。
其中,将长字符串拆分为顺序排列的多个独立字符可以清晰的找出每个字符前后的字符是否符合程序逻辑。例如:“禁止SELECT*”的问题,就可在遍历时通过判断相邻的两个字符是否为“SELECT”和“*”来进行判断,当匹配到问题后,会记录下问题出现的行号,当遍历完成后,将所有行号作为程序字段的匹配结果返回。
在一些实施例中,如图5所示,匹配模板集中设置有多个匹配模板,每个匹配模板对应一种程序漏洞问题,其中,步骤500:通过预设的匹配模板集对程序字段列表进行滚动匹配,得到问题简报,具体包括:
步骤510:利用每个匹配模板对程序字段列表进行问题匹配,得到问题行号集合。
步骤520:基于问题行号集合和每个匹配模板对应的程序漏洞问题,进行匹配组合,得到问题简报。
进一步地,步骤510:利用每个匹配模板对程序字段列表进行问题匹配,得到问题行号集合,具体包括;
从匹配模板集合中引用一个匹配模板;
响应于确定程序字段列表中存在与匹配模板对应的程序漏洞问题,在行号中记录程序漏洞问题对应的问题行号;
响应于确定全部匹配模板均匹配完毕,将全部问题行号进行组合,并将重复的问题行号进行合并,得到问题行号集合。
进一步地,步骤520:基于问题行号集合和每个匹配模板对应的程序漏洞问题,进行匹配组合,得到问题简报,具体包括;
统计问题行号集合中每个问题行号对应的程序漏洞问题的数量;
将每个问题行号与对应的程序漏洞问题进行组合,得到问题简报。
其中,匹配模板集中包括多个匹配模板,每个匹配模板对应一个程序漏洞问题,匹配模板是一套统一输入输出的函数,在函数内其基本构成有字符遍历逻辑和问题判定逻辑,通过字符遍历逻辑能够按一定规则对整个输入的程序字段进行遍历,问题判定逻辑可以通过专家预先构建的匹配模板对问题进行匹配。在利用匹配模板对程序字段列表进行检测时,首先利用字符遍历逻辑对整个程序字段列表中的独立字符按照其排列顺序进行遍历,在遍历的同时,根据该模板对应的对应程序漏洞问题,利用问题判断逻辑判断该程序字段列表中各个独立字符排列是否存在匹配模板中的程序漏洞问题,在匹配到程序漏洞问题后,会记录下程序漏洞问题出现的行号,当遍历完成后,将所有行号作为匹配结果返回。在所有匹配模板均返回匹配结果之后,进行结果汇总。通过结果汇总程序将重复的行号进行合并,存在重复行号说明该行存在多个程序漏洞问题,将重复行号合并后,需要统计出现问题的数量,而出现问题的数大于或等于重复行号的数量,因为,同一行中可能存在两个及其以上数量的同一程序漏洞问题。然后按照设置好的问题说明与行号进行组合,匹配模板只会给出程序漏洞问题存在的形式,需要根据该程序漏洞问题的存在形式加以更加明确的说明,避免存在一些生僻的程序漏洞问题,导致开发人员对程序漏洞问题判断效率较低,对全部的漏洞问题进行说明后生成当前程序字段的问题简报。
在一些实施例中,如图6所示,步骤200:通过运行数据库连接程序,与 Gauss Db数据库建立通讯连接,具体包括:
步骤210:基于预设的数据库参数,通过运行数据库连接程序得到至少一个python对象。
步骤220:基于预设的连接媒介,通过python对象与Gauss Db数据库建立通讯连接连接。
其中,基于运行数据库连接程序,通过遍历设置的全部的数据库参数,可以在一个子进程内同时获取多个python对象。
可选地,本申请实施例除使用Python开发外,还可使用java、C++等主流编程语言根据需要进行实现,并且,除应用于Gauss Db数据库外,也可经简单调整后应用于SQLServer、PostgreSQL等数据库内。
需要说明的是,本申请实施例的方法可以由单个设备执行,例如一台计算机或服务器等。本实施例的方法也可以应用于分布式场景下,由多台设备相互配合来完成。在这种分布式场景的情况下,这多台设备中的一台设备可以只执行本申请实施例的方法中的某一个或多个步骤,这多台设备相互之间会进行交互以完成所述的方法。
需要说明的是,上述对本申请的一些实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于上述实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
基于同一发明构思,与上述任意实施例方法相对应的,本申请还提供了一种GaussDb数据库程序语法的检测装置。
参考图7,所述Gauss Db数据库程序语法的检测装置,包括:
定时唤醒模块10,被配置为:基于预设有定时唤醒程序的父进程逐一唤醒不同的子进程,其中,每个子进程内设置有数据库连接程序;
数据库连接模块20,被配置为:通过运行数据库连接程序,与高斯集群 Gauss Db数据库建立通讯连接;
程序字段获取模块30,被配置为:获取Gauss Db数据库中待检测的程序字段;
程序字段加工模块40,被配置为:对程序字段进行规范化处理,得到程序字段列表;
程序模板匹配模块50,被配置为:通过预设的匹配模板集对程序字段列表进行滚动匹配,得到问题简报;
检测结果输出模块60,被配置为:基于问题简报,通过预设的报告生成程序生成线上报告和线下报告。
为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本申请时可以把各模块的功能在同一个或多个软件和/或硬件中实现。
上述实施例的装置用于实现前述任一实施例中相应的Gauss Db数据库程序语法的检测方法,并且具有相应的方法实施例的有益效果,在此不再赘述。
基于同一发明构思,与上述任意实施例方法相对应的,本申请还提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上任意一实施例所述的Gauss Db数据库程序语法的检测方法。
图8示出了本实施例所提供的一种更为具体的电子设备硬件结构示意图,该设备可以包括:处理器1010、存储器1020、输入/输出接口1030、通信接口 1040和总线1050。其中处理器1010、存储器1020、输入/输出接口1030和通信接口1040通过总线1050实现彼此之间在设备内部的通信连接。
处理器1010可以采用通用的CPU(Central Processing Unit,中央处理器)、微处理器、应用专用集成电路(Application Specific Integrated Circuit,ASIC)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本说明书实施例所提供的技术方案。
存储器1020可以采用ROM(Read Only Memory,只读存储器)、RAM (Random AccessMemory,随机存取存储器)、静态存储设备,动态存储设备等形式实现。存储器1020可以存储操作系统和其他应用程序,在通过软件或者固件来实现本说明书实施例所提供的技术方案时,相关的程序代码保存在存储器1020中,并由处理器1010来调用执行。
输入/输出接口1030用于连接输入/输出模块,以实现信息输入及输出。输入输出/模块可以作为组件配置在设备中(图中未示出),也可以外接于设备以提供相应功能。其中输入设备可以包括键盘、鼠标、触摸屏、麦克风、各类传感器等,输出设备可以包括显示器、扬声器、振动器、指示灯等。
通信接口1040用于连接通信模块(图中未示出),以实现本设备与其他设备的通信交互。其中通信模块可以通过有线方式(例如USB、网线等)实现通信,也可以通过无线方式(例如移动网络、WIFI、蓝牙等)实现通信。
总线1050包括一通路,在设备的各个组件(例如处理器1010、存储器1020、输入/输出接口1030和通信接口1040)之间传输信息。
需要说明的是,尽管上述设备仅示出了处理器1010、存储器1020、输入/ 输出接口1030、通信接口1040以及总线1050,但是在具体实施过程中,该设备还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本说明书实施例方案所必需的组件,而不必包含图中所示的全部组件。
上述实施例的电子设备用于实现前述任一实施例中相应的Gauss Db数据库程序语法的检测方法,并且具有相应的方法实施例的有益效果,在此不再赘述。
基于同一发明构思,与上述任意实施例方法相对应的,本申请还提供了一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令用于使所述计算机执行如上任一实施例所述的Gauss Db数据库程序语法的检测方法。
本实施例的计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器 (CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。
上述实施例的存储介质存储的计算机指令用于使所述计算机执行如上任一实施例所述的Gauss Db数据库程序语法的检测方法,并且具有相应的方法实施例的有益效果,在此不再赘述。
所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本申请的范围(包括权利要求)被限于这些例子;在本申请的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如上所述的本申请实施例的不同方面的许多其它变化,为了简明它们没有在细节中提供。
另外,为简化说明和讨论,并且为了不会使本申请实施例难以理解,在所提供的附图中可以示出或可以不示出与集成电路(IC)芯片和其它部件的公知的电源/接地连接。此外,可以以框图的形式示出装置,以便避免使本申请实施例难以理解,并且这也考虑了以下事实,即关于这些框图装置的实施方式的细节是高度取决于将要实施本申请实施例的平台的(即,这些细节应当完全处于本领域技术人员的理解范围内)。在阐述了具体细节(例如,电路)以描述本申请的示例性实施例的情况下,对本领域技术人员来说显而易见的是,可以在没有这些具体细节的情况下或者这些具体细节有变化的情况下实施本申请实施例。因此,这些描述应被认为是说明性的而不是限制性的。
尽管已经结合了本申请的具体实施例对本申请进行了描述,但是根据前面的描述,这些实施例的很多替换、修改和变型对本领域普通技术人员来说将是显而易见的。例如,其它存储器架构(例如,动态RAM(DRAM))可以使用所讨论的实施例。
本申请实施例旨在涵盖落入所附权利要求的宽泛范围之内的所有这样的替换、修改和变型。因此,凡在本申请实施例的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (10)
1.一种Gauss Db数据库程序语法的检测方法,其特征在于,包括:
基于预设有定时唤醒程序的父进程逐一唤醒不同的子进程,其中,每个子进程内设置有数据库连接程序;
通过运行所述数据库连接程序,与所述高斯集群Gauss Db数据库建立通讯连接;
获取所述Gauss Db数据库中待检测的程序字段;
对所述程序字段进行规范化处理,得到程序字段列表;
通过预设的匹配模板集对所述程序字段列表进行滚动匹配,得到问题简报;
基于所述问题简报,通过预设的报告生成程序生成线上报告和线下报告。
2.根据权利要求1所述的方法,其特征在于,所述对所述程序字段进行规范化处理,得到程序字段列表,具体包括:
基于所述程序字段中换行符的位置,记录所述程序字段中每个字符所在的行号;
响应于确定所述行号记录完毕,清除所述换行符;
基于所述程序字段中注释符的位置,清除所述注释符对应的内容;
将所述程序字段中所有连续的空格均合并为单个空格;
基于所述程序字段中全部空格的位置对所述程序字段进行切片,得到程序字段列表。
3.根据权利要求2所述的方法,其特征在于,所述基于所述程序字段中全部空格的位置对所述程序字段进行切片,得到程序字段列表,具体包括:
基于所述程序字段中全部空格的位置对所述程序字段进行切片,得到多个长字符串;
将每个所述长字符串拆分为多个独立字符;
基于多个所述独立字符在所述长字符串中的顺序,以每个所述独立字符为元素,对所述独立字符进行顺序排列,得到所述程序字段列表。
4.根据权利要求3所述的方法,其特征在于,所述匹配模板集中设置有多个匹配模板,每个所述匹配模板对应一种程序漏洞问题,其中,所述通过预设的匹配模板集对所述程序字段列表进行滚动匹配,得到问题简报,具体包括:
利用每个所述匹配模板对所述程序字段列表进行问题匹配,得到问题行号集合;
基于所述问题行号集合和每个所述匹配模板对应的所述程序漏洞问题,进行匹配组合,得到所述问题简报。
5.根据权利要求3所述的方法,其特征在于,所述利用每个所述匹配模板对所述程序字段列表进行问题匹配,得到问题行号集合,具体包括;
从所述匹配模板集合中引用一个所述匹配模板;
响应于确定所述程序字段列表中存在与所述匹配模板对应的所述程序漏洞问题,在所述行号中记录所述程序漏洞问题对应的问题行号;
响应于确定全部所述匹配模板均匹配完毕,将全部所述问题行号进行组合,并将重复的所述问题行号进行合并,得到所述问题行号集合。
6.根据权利要求5所述的方法,其特征在于,基于所述问题行号集合和每个所述匹配模板对应的所述程序漏洞问题,进行匹配组合,得到所述问题简报,具体包括;
统计所述问题行号集合中每个问题行号对应的所述程序漏洞问题的数量;
将每个所述问题行号与对应的所述程序漏洞问题进行组合,得到问题简报。
7.根据权利要求1所述的方法,其特征在于,所述通过运行所述数据库连接程序,与所述Gauss Db数据库建立通讯连接,具体包括:
基于预设的数据库参数,通过运行所述数据库连接程序得到至少一个python对象;
基于预设的连接媒介,通过所述python对象与所述Gauss Db数据库建立通讯连接连接。
8.一种Gauss Db数据库程序语法的检测装置,其特征在于,包括:
定时唤醒模块,被配置为:基于预设有定时唤醒程序的父进程逐一唤醒不同的子进程,其中,每个子进程内设置有数据库连接程序;
数据库连接模块,被配置为:通过运行所述数据库连接程序,与所述Gauss Db数据库建立通讯连接;
程序字段获取模块,被配置为:获取所述Gauss Db数据库中待检测的程序字段;
程序字段加工模块,被配置为:对所述程序字段进行规范化处理,得到程序字段列表;
程序模板匹配模块,被配置为:通过预设的匹配模板集对所述程序字段列表进行滚动匹配,得到问题简报;
检测结果输出模块,被配置为:基于所述问题简报,通过预设的报告生成程序生成线上报告和线下报告。
9.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如权利要求1至7任意一项所述的方法。
10.一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令用于使计算机执行权利要求1至7任一所述方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210249338.5A CN114780098A (zh) | 2022-03-14 | 2022-03-14 | Gauss Db数据库程序语法的检测方法及相关设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210249338.5A CN114780098A (zh) | 2022-03-14 | 2022-03-14 | Gauss Db数据库程序语法的检测方法及相关设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114780098A true CN114780098A (zh) | 2022-07-22 |
Family
ID=82423350
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210249338.5A Pending CN114780098A (zh) | 2022-03-14 | 2022-03-14 | Gauss Db数据库程序语法的检测方法及相关设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114780098A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024152628A1 (zh) * | 2023-01-20 | 2024-07-25 | 华为云计算技术有限公司 | 基于云服务的代码审核方法及装置 |
-
2022
- 2022-03-14 CN CN202210249338.5A patent/CN114780098A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024152628A1 (zh) * | 2023-01-20 | 2024-07-25 | 华为云计算技术有限公司 | 基于云服务的代码审核方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2022001132A1 (zh) | 印制电路板的走线检测方法、装置及计算机可读存储介质 | |
WO2019104917A1 (zh) | 基金系统测试用例的测试方法、装置、设备及存储介质 | |
CN102804147A (zh) | 执行abap源代码的代码检查的代码检查执行系统 | |
US20140006010A1 (en) | Parsing rules for data | |
CN113760891B (zh) | 一种数据表的生成方法、装置、设备和存储介质 | |
CN109308254A (zh) | 一种测试方法、装置及测试设备 | |
CN112612664A (zh) | 电子设备的测试方法、装置、电子设备和存储介质 | |
CN116841779A (zh) | 异常日志检测方法、装置、电子设备和可读存储介质 | |
CN114780098A (zh) | Gauss Db数据库程序语法的检测方法及相关设备 | |
CN113434542B (zh) | 数据关系识别方法、装置、电子设备及存储介质 | |
CN117724980A (zh) | 软件框架性能的测试方法、装置、电子设备和存储介质 | |
CN107909054A (zh) | 图片文本的相似度评价方法及装置 | |
CN115481025A (zh) | 自动化测试的脚本录制方法、装置、计算机设备及介质 | |
CN114896469A (zh) | 一种正则表达式引擎的构造方法、装置、存储介质及设备 | |
CN114443802A (zh) | 一种接口文档处理方法、装置、电子设备和存储介质 | |
CN113900956A (zh) | 测试用例的生成方法、装置、计算机设备及存储介质 | |
CN114443493A (zh) | 一种测试案例生成方法、装置、电子设备和存储介质 | |
CN113791860A (zh) | 一种信息转换方法、装置和存储介质 | |
CN112559331A (zh) | 测试方法和装置 | |
CN109710305A (zh) | 一种开发信息的获取方法、装置、存储介质及终端设备 | |
CN116483735B (zh) | 一种代码变更的影响分析方法、装置、存储介质及设备 | |
CN113495753B (zh) | 项目的标签获取方法、装置、电子设备及存储介质 | |
CN113849785B (zh) | 针对应用程序的移动终端信息资产使用行为识别方法 | |
CN114492383B (zh) | 一种数字货币交易地址的实体名称识别方法和装置 | |
CN112417252B (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 |