CN116414444A - 目标应用的依赖项检测方法、装置、设备及存储介质 - Google Patents
目标应用的依赖项检测方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN116414444A CN116414444A CN202111671542.8A CN202111671542A CN116414444A CN 116414444 A CN116414444 A CN 116414444A CN 202111671542 A CN202111671542 A CN 202111671542A CN 116414444 A CN116414444 A CN 116414444A
- Authority
- CN
- China
- Prior art keywords
- subtask
- dependency
- task
- code
- program
- 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
- 238000001514 detection method Methods 0.000 title claims abstract description 41
- 238000000034 method Methods 0.000 claims abstract description 109
- 230000001419 dependent effect Effects 0.000 claims abstract description 52
- 230000004044 response Effects 0.000 claims abstract description 28
- 230000006870 function Effects 0.000 claims description 99
- 230000008569 process Effects 0.000 claims description 37
- 238000004590 computer program Methods 0.000 claims description 12
- 238000010845 search algorithm Methods 0.000 claims description 9
- 238000012360 testing method Methods 0.000 abstract description 14
- 230000008859 change Effects 0.000 abstract description 4
- 238000010586 diagram Methods 0.000 description 15
- 238000011161 development Methods 0.000 description 11
- 238000010367 cloning Methods 0.000 description 9
- 230000003287 optical effect Effects 0.000 description 5
- 238000012545 processing Methods 0.000 description 5
- 238000004458 analytical method Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 230000006978 adaptation Effects 0.000 description 2
- 239000004973 liquid crystal related substance Substances 0.000 description 2
- 239000013307 optical fiber Substances 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 1
- 230000007717 exclusion Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000008571 general function Effects 0.000 description 1
- 230000008676 import Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 238000011897 real-time detection Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/75—Structural analysis for program understanding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
-
- 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)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
Abstract
本公开实施例提供一种目标应用的依赖项检测方法、装置、设备及存储介质,该方法包括:通过运行的主任务,周期性的执行第一任务指令,第一任务指令用于执行第一子任务和第二子任务;响应于第一子任务的执行,从代码仓库获取代码数据,代码数据包括目标应用的程序代码;响应于第二子任务的执行,解析代码数据,得到依赖项,依赖项表征代码数据中引用的外部函数。由于通过运行的主任务,周期性的执行第一子任务和第二子任务后,实现了目标应用的程序代码的自动获取,以及程序代码中依赖项的自动检测,在依赖项发生变化时,可以针对性的进行回归测试,提高应用程序的稳定性。
Description
技术领域
本公开实施例涉及互联网技术领域,尤其涉及一种目标应用的依赖项检测方法、装置、设备及存储介质。
背景技术
当前,在应用(Application,APP)的开发过程中,会通过开发并集成多个外部依赖项,来实现一些通用型的功能,从而提高应用的开发和维护效率。但由于应用版本和依赖项的版本之间是独立进行开发和迭代的,因此,在依赖项的版本更新后,需要对集成该公共依赖项的应用进行相应的回归测试,避免出现兼容性问题。
现有技术中,各应用中所使用的依赖项,通常是通过开发人员的手动记录和汇总来进行识别和定位的。
然而,随着应用规模的扩大,检测应用内的依赖项的成本会随之升高,甚至部分依赖项会处于无法定位的状态。导致在依赖项发生版本迭代时,造成依赖项与应用程序之间出现适配问题,影响应用程序的稳定性。
发明内容
本公开实施例提供一种目标应用的依赖项检测方法、装置、设备及存储介质,以克服由于应用中的公共依赖项无法定位,导致的应用程序的稳定性差的问题。
第一方面,本公开实施例提供一种目标应用的依赖项检测方法,包括:
通过运行的主任务,周期性的执行第一任务指令,所述第一任务指令用于执行第一子任务和第二子任务;响应于第一子任务的执行,从代码仓库获取代码数据,所述代码数据包括目标应用的程序代码;响应于第二子任务的执行,解析所述代码数据,得到依赖项。
第二方面,本公开实施例提供一种目标应用的依赖项检测装置,包括:
主任务模块,用于通过运行的主任务,周期性的执行第一任务指令,所述第一任务指令用于执行第一子任务和第二子任务;
第一子任务模块,用于响应于第一子任务的执行,从代码仓库获取代码数据,所述代码数据包括目标应用的程序代码;
第二子任务模块,用于响应于第二子任务的执行,解析所述代码数据,得到依赖项。
第三方面,本公开实施例提供一种电子设备,包括:
处理器,以及与所述处理器通信连接的存储器;
所述存储器存储计算机执行指令;
所述处理器执行所述存储器存储的计算机执行指令,以实现如上第一方面以及第一方面各种可能的设计所述的目标应用的依赖项检测方法。
第四方面,本公开实施例提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如上第一方面以及第一方面各种可能的设计所述的目标应用的依赖项检测方法。
第五方面,本公开实施例提供一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现如上第一方面以及第一方面各种可能的设计所述的目标应用的依赖项检测方法。
本实施例提供的目标应用的依赖项检测方法、装置、设备及存储介质,该方法包括:通过运行的主任务,周期性的执行第一任务指令,所述第一任务指令用于执行第一子任务和第二子任务;响应于第一子任务的执行,从代码仓库获取代码数据,所述代码数据包括目标应用的程序代码;响应于第二子任务的执行,解析所述代码数据,得到依赖项。由于通过运行的主任务,周期性的执行第一子任务和第二子任务后,实现了程序代码中依赖项的自动检测,从而使目标应用中所使用的依赖项始终处于可检测的状态,在依赖项发生变化时,可以针对性的进行回归测试,提高应用程序的稳定性。
附图说明
为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本公开实施例提供的一种应用程序的依赖项的示意图;
图2为本公开实施例提供的目标应用的依赖项检测方法的一种应用场景图;
图3为本公开实施例提供的目标应用的依赖项检测方法的流程示意图一;
图4为本公开实施例提供的一种异步执行第一子任务和第二子任务的示意图;
图5为本公开实施例提供的目标应用的依赖项检测方法的流程示意图二;
图6为图5所示实施例中步骤S207的实现步骤流程图;
图7为本公开实施例提供的目标应用的依赖项检测装置的结构框图;
图8为本公开实施例提供的一种电子设备的结构示意图;
图9为本公开实施例提供的电子设备的硬件结构示意图。
具体实施方式
为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本公开一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。
图1为本公开实施例提供的一种应用程序的依赖项的示意图,如图1所示,在应用的开发过程中,会通过集成外部的依赖项来实现特定的功能,即在应用中部署外部函数的调用接口,对外部函数进行调用,来实现对应的功能。此类集成在应用内的外部函数即为应用的依赖项。对于同一个企业或同一个应用产品,往往会存在多个开发组,来开发不同的应用产品或产品功能,而其中有部分通用型的功能,例如“用户登录”等功能模块,可以被多个应用项目所共用,因此,此类被多个应用共同引用的独立的功能模块,也称为公共依赖项。现有技术中,各应用中所使用的依赖项,通常是通过开发人员的手动记录和汇总来进行识别和定位的,即由开发人员手动的记录在应用开发过程中所使用的库、函数或功能模块中的涉及的依赖项。当应用项目的规模较小时,其所涉及的依赖项较少,应用项目的结构也比较简单,上述方案基本可实现对简单应用中的依赖项的检测。然而,随着应用规模的扩大,检测应用内的依赖项的成本会随之升高,尤其涉及到多个开发小组进行合作开发的场景下时,多层嵌套的函数会导致依赖项会处于无法定位的状态,即开发者无法确定哪些程序代码中使用了依赖项,也无法针对依赖项进行回归测试。因此,导致在依赖项发生版本迭代时,造成依赖项与应用程序之间出现适配问题,影响应用程序的稳定性。因此,当前亟需一种方法,来解决大规模的应用程序中无法定位依赖项的问题。
图2为本公开实施例提供的目标应用的依赖项检测方法的一种应用场景图,本公开实施例提供的目标应用的依赖项检测方法,可以应用于应用程序的回归测试的应用场景中。具体地,如图2所示,本公开实施例提供的方法,可以应用于代码服务器,具体地,代码服务器内部署有目标应用的代码仓库,代码仓库内存储有目标应用的程序代码。代码服务器通过本公开实施例提供的目标应用的依赖项检测方法,对代码仓库内目标应用的程序代码进行实时的检测,并将检测结果,即表征目标应用的依赖项的依赖项信息,发送给用于应用开发和测试的终端设备,使终端设备一侧的开发用户,能够实时的得到目标应用当前使用了哪些公共依赖项,并根据公共依赖项的版本变化,对目标应用进行回归测试,保证目标应用于其所使用的公共依赖项的兼容性,提高目标应用的稳定性,从而解决上述大规模的应用程序中无法定位依赖项的问题。
图3为本公开实施例提供的目标应用的依赖项检测方法的流程示意图一,本实施例的方法可以应用于服务器或终端设备内,示例性地,本实施例以服务器为本实施例方法的执行主体进行介绍。如图3所示,本实施例提供的目标应用的依赖项检测方法包括:
步骤S101,通过运行的主任务,周期性的执行第一任务指令,第一任务指令用于执行第一子任务和第二子任务。
示例性地,在服务器(即本实施例所提供方法的执行主体)内,持续运行有用于实现本实施例提供方法的依赖项检测任务,即主任务,该主任务可以在特定触发条件下启动,并始终运行在服务器内,其中,上述所指的特定调节,例如包括服务器启动、特定时间、收到用户输入的启动指令等。示例性地,主任务可以以服务的形式运行在服务器内,在主任务运行过程中,会通过周期性的执行第一任务指令,来运行第一子任务和第二子任务。
具体地,例如,主任务每隔一个小时,执行一次第一任务指令,而每执行一次第一任务指令,则会调用一次第一子任务和第二子任务。其中,主任务,与第一子任务(以及第二子任务)之间是异步执行的,即响应第一任务指令后,第一子任务、第二子任务通过与主任务不同的进程执行,在第一子任务和/或第二子任务的执行过程中,主任务也仍然在运行。更具体地,在一种可能的实现方式中,主任务通过主进程运行,通过运行的主任务,周期性的执行第一任务指令的实现步骤包括:响应于主进程的指令,通过子进程调用第一子任务函数和第二子任务函数,其中,第一子任务函数用于执行第一子任务;第二子任务函数用于执行第二子任务。具体来说,由于是通过子进程来调用第一子任务函数和第二子任务函数,来实现对对应的第一子任务和第二子任务的执行,因此服务器在执行第一子任务和第二子任务的过程中,主任务中的计时器仍然在运行,从而保证主任务执行第一任务指令时准确的周期性,提高依赖项检测的实时性。
需要说明的是,在一种可能的情况下,第一子任务和第二子任务可以分别通过两个独立的子进程运行,此种情况下,主任务、第一子任务、第二子任务之间均异步执行;在另一种可能的情况下,第一子任务和第二子任务可以通过同一个子进程运行,此处情况下,第一子任务、第二子任务之间顺序执行,即先执行第一子任务后,再执行第二子任务;而主任务与第一子任务之间异步执行。
其中,需要说明的是,在主任务、第一子任务、第二子任务运行前,还包括在服务器内注册主任务、第一子任务、第二子任务的步骤,具体地,该过程可以通过register()方法来实现,从而使主任务、第一子任务、第二子任务能够在服务器内异步的运行,register()方法的具体使用和实现原理为本领域技术人员知晓的现有技术,此处不再赘述。
步骤S102,响应于第一子任务的执行,从代码仓库获取代码数据,代码数据包括目标应用的程序代码。
进一步地,第一子任务是用于从代码仓库获取代码数据的任务,响应于第一子任务的执行,服务器通过子进程从代码仓库读取代码数据,其中,代码仓库可以部署于服务器内,也可以部署于其他外部的电子设备内,当部署于外部的电子设备时,服务器通过网络从部署于外部的电子设备内的代码仓库获取代码数据。而代码数据中包括目标应用的程序代码,通过后续步骤中对该代码数据进行分析,即可确定目标应用的程序代码中的依赖项。
步骤S103,响应于第二子任务的执行,解析代码数据,得到依赖项。
进一步地,第二子任务是用于解析代码数据得到目标应用的依赖项的任务,其中,依赖项表征代码数据中引用的外部函数。响应于第二子任务的执行,服务器通过子进程将从代码仓库读取的代码数据进行解析,确定其中的所引用的外部函数。其中,解析代码数据的实现方式有多种,例如,直接对代码数据中的程序代码进行关键字搜索,根据关键字在代码行中的位置,确定依赖项;或者,将代码数据解析为抽象语法树,再通过遍历抽象语法树,检测目标关键字,从而确定依赖项,此处不再一一赘述。
需要说明的是,在本实施例中,步骤S102和步骤S103可以由服务器的同一个子进程依次执行,也可以由两个子进程执行独立执行。在由同一个子进程依次执行的情形下,步骤S102和步骤S103依次执行(即图3所示流程图),此时,由于第二子任务执行时所使用的代码数据是由在该步骤之前执行的第一子任务执行时最新获得的代码数据,因此,能够保证输出的依赖项是最新版本的目标应用中所使用的依赖项,进而提高对目标应用中的依赖项的检测实时性。
在另一种可能的实现方式中,步骤S102和步骤S103由两个独立的子进程分别异步执行,即第一子进程执行第一子任务,第二子进程执行第二子任务,图4为本公开实施例提供的一种异步执行第一子任务和第二子任务的示意图,如图4所示,在此种情况下,主任务通过主进程以预设周期执行第一任务指令后,第一子任务和第二子任务可以通过对应的第一子进程和第二子进程非实时的异步执行,其中,示例性地,第一子进程执行第一子任务后获取的代码数据被存储在预设位置,第二子进程通过从预设位置读取代码数据,并进行解析,获得依赖项,完成第二子任务。需要说明的是,在第二子进程首次执行第二子任务时,由于第一子任务和第二子任务异步执行,可能存在第一子任务未执行完毕的情况,即预设位置不存在代码数据,此种情况下第二子任务返回空即可,在下一周期时,由于第一子任务已执行完成,第二子进程即可正常执行第二子任务。
对于第二子任务的目的,是为了确定目标应用中的依赖项,从而能够针对该依赖项进行回归测试,避免由于该依赖项更新后,造成目标应用无法适配的问题。但其中有一些依赖项,虽然是外部函数,但是不需要对其进行监测,例如更新概率极低、或已经停止更新支持的功能库,或者基础性的依赖项(即绝大部分的代码文件都对其进行了引用),而通常公共依赖项更近较为频繁,需要重点进行检测。因此,在解析代码数据并检测其中的依赖项的过程中,会涉及一些具体的解析规则,例如排除规则,将特定的依赖项排除,不进行监测,而仅监测公共依赖项,来实现对公共依赖项的精准检测,避免检测到几乎不更新的非公共依赖项,导致后续增加回归测试的工作量。而第二子任务中涉及的具体的解析规则,需要用户通过配置信息进行设置,因此,在一种具体的公共依赖性检测的应用场景下,若用户需要多次调整配置信息来改变或测试解析规则,以验证对公共依赖项的检测效果时,在第一子任务和第二子任务使用一个同子进程执行的情况下,则在每次调整配置信息后,必须先执行第一子任务,才能执行第二子任务,而第一子任务在通过网络获取代码数据的过程,需要消耗较长时间,因此,造成了耗时增加,配置效率降低的问题。而通过本实施例步骤中的异步执行第一子任务和第二子任务的方式,可以单独对第二子任务进行配置并运行,第二子任务对应的配置信息修改后,可以通过读取预设位置的代码数据,实时的完成对依赖项的检测,提高依赖项检测方法的灵活性和时效性。
在本实施例中,通过运行的主任务,周期性的执行第一任务指令,第一任务指令用于执行第一子任务和第二子任务;响应于第一子任务的执行,从代码仓库获取代码数据,代码数据包括目标应用的程序代码;响应于第二子任务的执行,解析代码数据,得到依赖项,依赖项表征代码数据中引用的外部函数。由于通过运行的主任务,周期性的执行第一子任务和第二子任务后,实现了目标应用的程序代码的自动获取,以及程序代码中依赖项的自动检测,从而使目标应用中所使用的依赖项始终处于可监测的状态,在依赖项发生变化时,可以针对性的进行回归测试,提高应用程序的稳定性。
图5为本公开实施例提供的目标应用的依赖项检测方法的流程示意图二。本实施例在图3所示实施例的基础上,对步骤S102-S103进一步细化,该目标应用的依赖项检测方法包括:
步骤S201,响应于主进程的指令,周期性地通过子进程调用第一子任务函数和第二子任务函数,其中,第一子任务函数用于执行第一子任务;第二子任务函数用于执行第二子任务。
示例性地,主进程执行第一任务指令的一种实现方式为调用对应的主函数,之后执行主函数内部的代码并生成对应的执行指令,其中,主函数中包括有第一子任务函数和第二子任务函数,主进程通过定时任务来实现周期性的调用第一子任务函数和第二子任务函数,从而实现执行第一子任务和第二子任务的目的。其中,第一子任务函数和第二子任务函数被调用后,由对应的子进程来执行,具体的实现过程在图3所示实施例的步骤S101中已进行过详细介绍,此处不再赘述。
示例性地,第一子任务函数和第二子任务函数是基于预设脚本函数实现的,其中,预设脚本函数例如为shell函数,shell函数的本质是一段可以重复使用的脚本代码,这段脚本代码被提前编写好并放在指定位置,通过直接调用该shell函数,既可以执行对应的脚本代码。具体地,本实施例中,第一子任务函数为包含从代码仓库获取代码数据的脚本,而第二子任务函数为包含对代码数据进行解析,得到依赖项的脚本。
步骤S202,执行第一子任务函数,获取数据列表,数据列表包括至少一个应用标识,应用标识用于表征对应的应用在代码仓库内的项目编号。
示例性地,在代码仓库内,存储有多个应用的程序代码,目标应用即为其中之一,每一应用对应一个项目,应用标识即为表征应用在代码仓库中归类存储时所使用的项目编号,该应用标识是唯一的,即根据应用标识可以唯一的确定一个应用,此处,应用标识既可以唯一的对应一个应用(APP)本身,也可以对应一个应用的具体的版本(例如,APP_v2.0版本)。
在执行第一子任务函数后,通过访问代码仓库,获取包括至少一个应用标识的数据列表,之后,在后续步骤中即可获取数据列表中任意一个或多个应用标识对应的程序代码。
步骤S203,遍历数据列表中的应用标识,确定目标应用的应用标识对应的数据路径。
步骤S204,基于目标应用的应用标识对应的数据路径,进行数据克隆,得到代码数据。
进一步地,在获取数据列表,遍历该数据列表,查找预设的目标应用的应用标识,即可定位到目标应用,数量列表中除应用标识外,还可以包括与各应用标识分别对应的应用信息,应用信息例如包括数据路径,即存储应用标识对应的应用的程序代码的路径。因此,在确定目标应用的应用标识后,根据应用信息可获得对应的数据路径。进一步地,对数据路径下的程序代码进行克隆、拷贝,将代码数据复制至预设存储地址,即可得到目标应用对应的代码数据。
其中,示例性地,服务器内预设有版本控制系统,版本控制系统是指用于对软件开发过程中各种程序代码、配置文件及说明文档等文件变更进行管理的系统。更具体地,例如,通过预置的Git系统,基于各目标应用的应用标识对应的数据路径和Git系统中的克隆指令,得到代码数据。其中,Git是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。其采用了分布式版本库的方式,不必服务器端软件支持。在本实施例中,通过Git系统能够实现大规模应用的管理,尤其适用于本实施例所应用的多个开发小组进行合作开发的场景下。
步骤S205,执行第二子任务函数,基于异步任务队列,依次获取第一子任务对应的代码数据对应的预设存储地址,预设存储地址为主任务能够访问的地址。
步骤S206,基于深度优先搜索算法,遍历预设存储地址下的目标文件夹,各目标文件夹中包括至少一个目标应用的程序文件。
示例性地,在克隆目标应用的代码数据至预设存储地址后,由第二子进程执行第二子任务函数,对代码数据进行解析。其中,具体地,由于代码数据不是一个单一的代码文件,可能包括多个文件夹,在文件夹内才是应用的程序文件。同时,当目标应用包括多个应用时,其对应的代码数据也包括多组,因此,需要以异步任务队列的方式排队对各组代码数据进行处理。其中,异步任务队列可以通过promise函数实现,promise函数为异步编程的一个解决方案,其具体的实现方法为现有技术,此处不再赘述。
进一步地,通过异步任务队列,依次获取各代码数据对应的预设存储地址,并基于深度优先搜索算法,针对每一预设存储地址下的目标文件夹进行遍历,从而获得目标文件夹的文件,即目标应用的程序文件。其中,深度优先搜索算法是搜索算法的一种,指沿着树的深度遍历树的节点,尽可能深的搜索树的分支。在本实施例中,通过深度优先搜索算法进行搜索,即在遍历各目标文件夹时,以文件夹深度为优先搜索方向,在一个文件夹没有下一级文件夹时(到达根节点),再搜索其他文件夹,从而实现对目标应用的程序文件的高效搜索。
步骤S207,基于预设的解析器,依次对各目标文件夹内的程序文件进行解析,得到依赖项。
示例性地,在搜索到目标文件夹内的程序文件后,通过预设的解析器,依次对各程序文件进行解析,确定各程序文件中所包括的外部引用函数,即依赖项。
可选地,如图6所示,步骤S207包括步骤S2071、S2072两个具体的实现步骤:
步骤S2071,基于预设的解析器,解析各程序文件,生成各程序文件对应的抽象语法树,抽象语法树表征程序文件的程序结构;
步骤S2072,基于抽象语法树,检测目标关键字,获得程序文件的依赖项。
示例性地,本实施例中预设的解析器,可以是typescript解析器,typescript解析器与扫描器配合,可以将包含程序代码的程序文件解析成抽象语法树(AST),抽象语法树是代码的抽象语法结构的树状表示,抽象语法树上的每个节点都表示代码中的一种结构,也即程序文件的程序结构。通过解析器解析程序文件,得到抽象语法树的具体实现步骤为本领域技术人员知晓的现有技术,此处不再赘述。
进一步,在获得抽象语法树后,对抽象语法树中的节点进行遍历,检测目标关键字,例如“import”相关的语句,进而确定该语句对应的函数、库为依赖项。
步骤S208,输出依赖项对应的依赖文件,依赖文件为引用依赖项的程序代码所对应的程序文件。
进一步地,在确定依赖项后,将依赖项所在的文件,作为依赖文件输出。由于在后续进行回归测试的过程中,某些情况下需要以程序文件作为测试对象,因此,在确定依赖项后,输出依赖项对应的依赖文件,作为依赖项检测服务的检测结果的一部分,能够提高后续基于该检测结果对目标应用进行回归测试的效率。
对应于上文实施例的目标应用的依赖项检测方法,图7为本公开实施例提供的目标应用的依赖项检测装置的结构框图。为了便于说明,仅示出了与本公开实施例相关的部分。参照图7,目标应用的依赖项检测装置3包括:
主任务模块31,用于通过运行的主任务,周期性的执行第一任务指令,第一任务指令用于执行第一子任务和第二子任务;
第一子任务模块32,用于响应于第一子任务的执行,从代码仓库获取代码数据,代码数据包括目标应用的程序代码;
第二子任务模块33,用于响应于第二子任务的执行,解析代码数据,得到依赖项。
在本公开的一个实施例中,主任务通过主进程运行,主任务模块31,具体用于:响应于主进程的指令,周期性地通过子进程调用第一子任务函数和第二子任务函数,其中,第一子任务函数用于执行第一子任务;第二子任务函数用于执行第二子任务。
在本公开的一个实施例中,子进程包括异步执行的第一子进程和第二子进程,主任务模块31在响应于主进程的指令,周期性地通过子进程调用第一子任务函数和第二子任务函数时,具体用于:在每个预设周期内,通过第一子进程调用第一子任务函数,通过第二子进程调用第二子任务函数。
在本公开的一个实施例中,第一子任务函数和第二子任务函数是基于预设脚本函数实现的。
在本公开的一个实施例中,第一子任务模块32,具体用于:响应于第一子任务的执行,获取数据列表,数据列表包括至少一个应用标识,应用标识用于表征对应的应用在代码仓库内的项目编号;遍历数据列表中的应用标识,确定目标应用的应用标识对应的数据路径;基于目标应用的应用标识对应的数据路径,进行数据克隆,得到代码数据。
在本公开的一个实施例中,第一子任务模块32在基于各应用标识对应的数据路径,进行数据克隆,得到代码数据时,具体用于:通过预置的版本控制系统,基于各目标应用的应用标识对应的数据路径和版本控制系统中的克隆指令,得到代码数据。
在本公开的一个实施例中,第二子任务模块33,具体用于:响应于第二子任务的执行,获取代码数据对应的预设存储地址,预设存储地址为主任务能够访问的地址;基于深度优先搜索算法,遍历预设存储地址下的目标文件夹,各目标文件夹中包括至少一个目标应用的程序文件;基于预设的解析器,依次对各目标文件夹内的程序文件进行解析,得到依赖项。
在本公开的一个实施例中,第二子任务模块33,在基于预设的解析器,依次对各目标文件夹内的程序文件进行解析,得到依赖项时,具体用于:基于预设的解析器,解析各程序文件,生成各程序文件对应的抽象语法树,抽象语法树表征程序文件的程序结构;基于抽象语法树,检测目标关键字,获得程序文件的依赖项。
在本公开的一个实施例中,在得到依赖项之后,第二子任务模块33,还用于:输出依赖项对应的依赖文件,依赖文件为引用依赖项的程序代码所对应的程序文件。
其中,主任务模块31、第一子任务模块32、第二子任务模块33依次连接。本实施例提供的目标应用的依赖项检测装置3可以执行上述方法实施例的技术方案,其实现原理和技术效果类似,本实施例此处不再赘述。
图8为本公开实施例提供的一种电子设备的结构示意图,如图8所示,该电子设备4包括:
处理器41,以及与处理器41通信连接的存储器42;
存储器42存储计算机执行指令;
处理器41执行存储器42存储的计算机执行指令,以实现如图3-图6所示实施例中的目标应用的依赖项检测方法。
其中,可选地,处理器41和存储器42通过总线43连接。
相关说明可以对应参见图3-图6所对应的实施例中的步骤所对应的相关描述和效果进行理解,此处不做过多赘述。
参考图9,其示出了适于用来实现本公开实施例的电子设备900的结构示意图,该电子设备900可以为终端设备或服务器。其中,终端设备可以包括但不限于诸如移动电话、笔记本电脑、数字广播接收器、个人数字助理(Personal Digital Assistant,简称PDA)、平板电脑(Portable Android Device,简称PAD)、便携式多媒体播放器(Portable MediaPlayer,简称PMP)、车载终端(例如车载导航终端)等等的移动终端以及诸如数字TV、台式计算机等等的固定终端。图9示出的电子设备仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图9所示,电子设备900可以包括处理装置(例如中央处理器、图形处理器等)901,其可以根据存储在只读存储器(Read Only Memory,简称ROM)902中的程序或者从存储装置908加载到随机访问存储器(Random Access Memory,简称RAM)903中的程序而执行各种适当的动作和处理。在RAM 903中,还存储有电子设备900操作所需的各种程序和数据。处理装置901、ROM 902以及RAM 903通过总线904彼此相连。输入/输出(I/O)接口905也连接至总线904。
通常,以下装置可以连接至I/O接口905:包括例如触摸屏、触摸板、键盘、鼠标、摄像头、麦克风、加速度计、陀螺仪等的输入装置906;包括例如液晶显示器(Liquid CrystalDisplay,简称LCD)、扬声器、振动器等的输出装置907;包括例如磁带、硬盘等的存储装置908;以及通信装置909。通信装置909可以允许电子设备900与其他设备进行无线或有线通信以交换数据。虽然图9示出了具有各种装置的电子设备900,但是应理解的是,并不要求实施或具备所有示出的装置。可以替代地实施或具备更多或更少的装置。
特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信装置909从网络上被下载和安装,或者从存储装置908被安装,或者从ROM902被安装。在该计算机程序被处理装置901执行时,执行本公开实施例的方法中限定的上述功能。
需要说明的是,本公开上述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读信号介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、RF(射频)等等,或者上述的任意合适的组合。
上述计算机可读介质可以是上述电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。
上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该电子设备执行时,使得该电子设备执行上述实施例所示的方法。
可以以一种或多种程序设计语言或其组合来编写用于执行本公开的操作的计算机程序代码,上述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LocalArea Network,简称LAN)或广域网(Wide Area Network,简称WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本公开实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。其中,单元的名称在某种情况下并不构成对该单元本身的限定,例如,第一获取单元还可以被描述为“获取至少两个网际协议地址的单元”。
本文中以上描述的功能可以至少部分地由一个或多个硬件逻辑部件来执行。例如,非限制性地,可以使用的示范类型的硬件逻辑部件包括:现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、片上系统(SOC)、复杂可编程逻辑设备(CPLD)等等。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
第一方面,根据本公开的一个或多个实施例,提供了一种目标应用的依赖项检测方法,包括:
通过运行的主任务,周期性的执行第一任务指令,所述第一任务指令用于执行第一子任务和第二子任务;响应于第一子任务的执行,从代码仓库获取代码数据,所述代码数据包括目标应用的程序代码;响应于第二子任务的执行,解析所述代码数据,得到依赖项。
根据本公开的一个或多个实施例,所述主任务通过主进程运行,所述通过运行的主任务,周期性的执行第一任务指令,包括:响应于所述主进程的指令,周期性地通过子进程调用第一子任务函数和第二子任务函数,其中,所述第一子任务函数用于执行所述第一子任务;所述第二子任务函数用于执行所述第二子任务。
根据本公开的一个或多个实施例,所述子进程包括异步执行的第一子进程和第二子进程,响应于所述主进程的指令,周期性地通过子进程调用第一子任务函数和第二子任务函数,包括:在每个预设周期内,通过第一子进程调用第一子任务函数,通过第二子进程调用第二子任务函数。
根据本公开的一个或多个实施例,所述第一子任务函数和所述第二子任务函数是基于预设脚本函数实现的。
根据本公开的一个或多个实施例,响应于第一子任务的执行,从代码仓库获取代码数据,包括:响应于第一子任务的执行,获取数据列表,所述数据列表包括至少一个应用标识,所述应用标识用于表征对应的应用在所述代码仓库内的项目编号;遍历所述数据列表中的应用标识,确定所述目标应用的应用标识对应的数据路径;基于所述目标应用的应用标识对应的数据路径,得到所述代码数据。
根据本公开的一个或多个实施例,基于各所述应用标识对应的数据路径,进行数据克隆,得到所述代码数据,包括:通过预置的版本控制系统,基于各所述目标应用的应用标识对应的数据路径和所述版本控制系统中的克隆指令,得到所述代码数据。
根据本公开的一个或多个实施例,响应于第二子任务的执行,解析所述代码数据,得到依赖项,包括:响应于第二子任务的执行,获取所述代码数据对应的预设存储地址,所述预设存储地址为所述主任务能够访问的地址;基于深度优先搜索算法,遍历所述预设存储地址下的目标文件夹,各所述目标文件夹中包括至少一个所述目标应用的程序文件;基于预设的解析器,依次对各所述目标文件夹内的程序文件进行解析,得到所述依赖项。
根据本公开的一个或多个实施例,基于预设的解析器,依次对各所述目标文件夹内的程序文件进行解析,得到所述依赖项,包括:基于所述预设的解析器,解析各所述程序文件,生成各所述程序文件对应的抽象语法树,所述抽象语法树表征所述程序文件的程序结构;基于所述抽象语法树,检测目标关键字,获得所述程序文件的依赖项。
根据本公开的一个或多个实施例,在所述得到依赖项之后,所述方法还包括:输出所述依赖项对应的依赖文件,所述依赖文件为引用所述依赖项的程序代码所对应的程序文件。
第二方面,根据本公开的一个或多个实施例,提供了一种目标应用的依赖项检测装置,包括:
主任务模块,用于通过运行的主任务,周期性的执行第一任务指令,所述第一任务指令用于执行第一子任务和第二子任务;
第一子任务模块,用于响应于第一子任务的执行,从代码仓库获取代码数据,所述代码数据包括目标应用的程序代码;
第二子任务模块,用于响应于第二子任务的执行,解析所述代码数据,得到依赖项。
根据本公开的一个或多个实施例,所述主任务通过主进程运行,所述主任务模块,具体用于:响应于所述主进程的指令,周期性地通过子进程调用第一子任务函数和第二子任务函数,其中,所述第一子任务函数用于执行所述第一子任务;所述第二子任务函数用于执行所述第二子任务。
根据本公开的一个或多个实施例,所述子进程包括异步执行的第一子进程和第二子进程,所述主任务模块在响应于所述主进程的指令,周期性地通过子进程调用第一子任务函数和第二子任务函数时,具体用于:在每个预设周期内,通过第一子进程调用第一子任务函数,通过第二子进程调用第二子任务函数。
根据本公开的一个或多个实施例,所述第一子任务函数和所述第二子任务函数是基于预设脚本函数实现的。
根据本公开的一个或多个实施例,所述第一子任务模块,具体用于:响应于第一子任务的执行,获取数据列表,所述数据列表包括至少一个应用标识,所述应用标识用于表征对应的应用在所述代码仓库内的项目编号;遍历所述数据列表中的应用标识,确定所述目标应用的应用标识对应的数据路径;基于所述目标应用的应用标识对应的数据路径,得到所述代码数据。
根据本公开的一个或多个实施例,所述第一子任务模块在基于各所述应用标识对应的数据路径,进行数据克隆,得到所述代码数据时,具体用于:通过预置的版本控制系统,基于各所述目标应用的应用标识对应的数据路径和所述版本控制系统中的克隆指令,得到所述代码数据。
根据本公开的一个或多个实施例,所述第二子任务模块,具体用于:响应于第二子任务的执行,获取所述代码数据对应的预设存储地址,所述预设存储地址为所述主任务能够访问的地址;基于深度优先搜索算法,遍历所述预设存储地址下的目标文件夹,各所述目标文件夹中包括至少一个所述目标应用的程序文件;基于预设的解析器,依次对各所述目标文件夹内的程序文件进行解析,得到所述依赖项。
根据本公开的一个或多个实施例,所述第二子任务模块,在基于预设的解析器,依次对各所述目标文件夹内的程序文件进行解析,得到所述依赖项时,具体用于:基于所述预设的解析器,解析各所述程序文件,生成各所述程序文件对应的抽象语法树,所述抽象语法树表征所述程序文件的程序结构;基于所述抽象语法树,检测目标关键字,获得所述程序文件的依赖项。
根据本公开的一个或多个实施例,在所述得到依赖项之后,所述第二子任务模块,还用于:输出所述依赖项对应的依赖文件,所述依赖文件为引用所述依赖项的程序代码所对应的程序文件。
第三方面,根据本公开的一个或多个实施例,提供了一种电子设备,包括:处理器,以及与所述处理器通信连接的存储器;
所述存储器存储计算机执行指令;
所述处理器执行所述存储器存储的计算机执行指令,以实现如上第一方面以及第一方面各种可能的设计所述的目标应用的依赖项检测方法。
第四方面,根据本公开的一个或多个实施例,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如上第一方面以及第一方面各种可能的设计所述的目标应用的依赖项检测方法。
第五方面,本公开实施例提供一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现如上第一方面以及第一方面各种可能的设计所述的目标应用的依赖项检测方法。
以上描述仅为本公开的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本公开中所涉及的公开范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述公开构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本公开中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
此外,虽然采用特定次序描绘了各操作,但是这不应当理解为要求这些操作以所示出的特定次序或以顺序次序执行来执行。在一定环境下,多任务和并行处理可能是有利的。同样地,虽然在上面论述中包含了若干具体实现细节,但是这些不应当被解释为对本公开的范围的限制。在单独的实施例的上下文中描述的某些特征还可以组合地实现在单个实施例中。相反地,在单个实施例的上下文中描述的各种特征也可以单独地或以任何合适的子组合的方式实现在多个实施例中。
尽管已经采用特定于结构特征和/或方法逻辑动作的语言描述了本主题,但是应当理解所附权利要求书中所限定的主题未必局限于上面描述的特定特征或动作。相反,上面所描述的特定特征和动作仅仅是实现权利要求书的示例形式。
Claims (12)
1.一种目标应用的依赖项检测方法,其特征在于,包括:
通过运行的主任务,周期性的执行第一任务指令,所述第一任务指令用于执行第一子任务和第二子任务;
响应于第一子任务的执行,从代码仓库获取代码数据,所述代码数据包括目标应用的程序代码;
响应于第二子任务的执行,解析所述代码数据,得到依赖项。
2.根据权利要求1所述的方法,其特征在于,所述主任务通过主进程运行,所述通过运行的主任务,周期性的执行第一任务指令,包括:
响应于所述主进程的指令,周期性地通过子进程调用第一子任务函数和第二子任务函数,其中,所述第一子任务函数用于执行所述第一子任务;所述第二子任务函数用于执行所述第二子任务。
3.根据权利要求2所述的方法,其特征在于,所述子进程包括异步执行的第一子进程和第二子进程,响应于所述主进程的指令,周期性地通过子进程调用第一子任务函数和第二子任务函数,包括:
在每个预设周期内,通过第一子进程调用第一子任务函数,通过第二子进程调用第二子任务函数。
4.根据权利要求2所述的方法,其特征在于,所述第一子任务函数和所述第二子任务函数是基于预设脚本函数实现的。
5.根据权利要求1所述的方法,其特征在于,响应于第一子任务的执行,从代码仓库获取代码数据,包括:
响应于第一子任务的执行,获取数据列表,所述数据列表包括至少一个应用标识,所述应用标识用于表征对应的应用在所述代码仓库内的项目编号;
遍历所述数据列表中的应用标识,确定所述目标应用的应用标识对应的数据路径;
基于所述目标应用的应用标识对应的数据路径,得到所述代码数据。
6.根据权利要求1所述的方法,其特征在于,响应于第二子任务的执行,解析所述代码数据,得到依赖项,包括:
响应于第二子任务的执行,获取所述代码数据对应的预设存储地址,所述预设存储地址为所述主任务能够访问的地址;
基于深度优先搜索算法,遍历所述预设存储地址下的目标文件夹,各所述目标文件夹中包括至少一个所述目标应用的程序文件;
基于预设的解析器,依次对各所述目标文件夹内的程序文件进行解析,得到所述依赖项。
7.根据权利要求6所述的方法,其特征在于,基于预设的解析器,依次对各所述目标文件夹内的程序文件进行解析,得到所述依赖项,包括:
基于所述预设的解析器,解析各所述程序文件,生成各所述程序文件对应的抽象语法树,所述抽象语法树表征所述程序文件的程序结构;
基于所述抽象语法树,检测目标关键字,获得所述程序文件的依赖项。
8.根据权利要求1-7任一项所述的方法,其特征在于,在所述得到依赖项之后,所述方法还包括:
输出所述依赖项对应的依赖文件,所述依赖文件为引用所述依赖项的程序代码所对应的程序文件。
9.一种目标应用的依赖项检测装置,其特征在于,包括:
主任务模块,用于通过运行的主任务,周期性的执行第一任务指令,所述第一任务指令用于执行第一子任务和第二子任务;
第一子任务模块,用于响应于第一子任务的执行,从代码仓库获取代码数据,所述代码数据包括目标应用的程序代码;
第二子任务模块,用于响应于第二子任务的执行,解析所述代码数据,得到依赖项。
10.一种电子设备,其特征在于,包括:处理器,以及与所述处理器通信连接的存储器;
所述存储器存储计算机执行指令;
所述处理器执行所述存储器存储的计算机执行指令,以实现如权利要求1至9中任一项所述的目标应用的依赖项检测方法。
11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如权利要求1至8任一项所述的目标应用的依赖项检测方法。
12.一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现权利要求1至8中任一项所述的目标应用的依赖项检测方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111671542.8A CN116414444A (zh) | 2021-12-31 | 2021-12-31 | 目标应用的依赖项检测方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111671542.8A CN116414444A (zh) | 2021-12-31 | 2021-12-31 | 目标应用的依赖项检测方法、装置、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116414444A true CN116414444A (zh) | 2023-07-11 |
Family
ID=87048365
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111671542.8A Pending CN116414444A (zh) | 2021-12-31 | 2021-12-31 | 目标应用的依赖项检测方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116414444A (zh) |
-
2021
- 2021-12-31 CN CN202111671542.8A patent/CN116414444A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111506900B (zh) | 漏洞检测方法、装置、电子设备及计算机存储介质 | |
CN109992498B (zh) | 测试用例的生成方法及系统、计算机系统 | |
KR20180032669A (ko) | 콜경로 파인더 | |
CN111324342B (zh) | 一种生成接口层代码的方法、装置、介质和电子设备 | |
CN114035805B (zh) | 用于预编译器的代码转换方法、装置、介质及设备 | |
US20140297679A1 (en) | Analytics based on pipes programming model | |
CN111796865B (zh) | 一种字节码文件修改方法、装置、终端设备及介质 | |
CN113419740B (zh) | 程序数据流的分析方法、装置、电子设备及可读存储介质 | |
CN111338813B (zh) | 一种动态生成中间件的方法、装置、介质和电子设备 | |
CN111506904B (zh) | 漏洞在线修复的方法和装置 | |
US20240338187A1 (en) | Method and apparatus for implementing conditional compilation, device and storage medium | |
CN112954056B (zh) | 监控数据处理方法、装置、电子设备及存储介质 | |
US9064042B2 (en) | Instrumenting computer program code by merging template and target code methods | |
CN111240987B (zh) | 移植程序检测方法、装置、电子设备及计算机可读存储介质 | |
CN112527302B (zh) | 错误检测的方法及装置、终端和存储介质 | |
CN109582347B (zh) | 一种获取前端代码的方法及装置 | |
CN116521317A (zh) | 镜像管理方法及装置、电子设备和计算机可读存储介质 | |
CN115421831A (zh) | 生成活动组件调用关系的方法、装置、设备及存储介质 | |
CN116414444A (zh) | 目标应用的依赖项检测方法、装置、设备及存储介质 | |
CN117667663A (zh) | 控件定位路径确定方法、装置、设备、存储介质及产品 | |
CN117493150A (zh) | 代码质量检测方法、装置、设备、存储介质及程序 | |
CN115185535A (zh) | 依赖关系显示方法及装置、存储介质及电子设备 | |
Tchamgoue et al. | Verification of data races in concurrent interrupt handlers | |
CN115729797A (zh) | 代码相似函数检测方法、装置、电子设备及存储介质 | |
CN114115908A (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 |