CN111813695A - 代码检测方法、装置、介质及电子设备 - Google Patents

代码检测方法、装置、介质及电子设备 Download PDF

Info

Publication number
CN111813695A
CN111813695A CN202010850230.2A CN202010850230A CN111813695A CN 111813695 A CN111813695 A CN 111813695A CN 202010850230 A CN202010850230 A CN 202010850230A CN 111813695 A CN111813695 A CN 111813695A
Authority
CN
China
Prior art keywords
code
listener
detection
abnormal
text
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
CN202010850230.2A
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.)
Netease Hangzhou Network Co Ltd
Original Assignee
Netease Hangzhou Network 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 Netease Hangzhou Network Co Ltd filed Critical Netease Hangzhou Network Co Ltd
Priority to CN202010850230.2A priority Critical patent/CN111813695A/zh
Publication of CN111813695A publication Critical patent/CN111813695A/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/362Software debugging
    • G06F11/3628Software debugging of optimised code

Abstract

本公开实施例提供了一种代码检测方法、代码检测装置、计算机可读介质及电子设备,涉及软件开发技术领域。该代码检测方法包括:提取待检测工程中包含的多个代码文本;对所述代码文本中包含的监听者进行规范检测,检测出不符合所述规范检测的目标监听者,将包含所述目标监听者的代码文本作为异常代码;若所述代码文本中包含所述异常代码,则对所述待检测工程进行报错,并根据所述异常代码提供异常信息,以供用户对所述报错进行修改。本公开实施例的技术方案能够实现自动化代码规范检测,从而避免代码崩溃,提升代码安全性。

Description

代码检测方法、装置、介质及电子设备
技术领域
本公开涉及软件开发技术领域,具体而言,涉及一种代码检测方法、代码检测装置、计算机可读介质及电子设备。
背景技术
在软件开发过程中,开发人员编写的代码需要遵守代码规范,如果代码不符合规范编译器会发出警告,提醒开发人员对不规范的代码进行修改。然而,编译器通常只能对代码形式上的问题警告,不能对代码逻辑进行检查,例如,如果对特定的对象注册了监听,那么编译器并不会检查监听是否符合规范,只能靠开发者自觉遵守代码规范,如果监听不符合代码规范,在运行时可能会产生崩溃。
需要说明的是,在上述背景技术部分公开的信息仅用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。
发明内容
本公开实施例的目的在于提供一种代码检测方法、代码检测装置、计算机可读介质及电子设备,进而至少在一定程度上克服代码编写不符合规范而造成崩溃的问题。
本公开的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本公开的实践而习得。
根据本公开实施例的第一方面,提供了一种代码检测方法,所述方法可以包括:提取待检测工程中包含的多个代码文本;对所述代码文本中包含的监听者进行规范检测,检测出不符合所述规范检测的目标监听者,将包含所述目标监听者的代码文本作为异常代码;若所述代码文本中存在所述异常代码,则对所述待检测工程进行报错,并根据所述异常代码提供异常信息,以供用户对所述报错进行修改。
在本公开的一种示例性实施例中,对所述代码文本中包含的监听者进行规范检测包括:检测所述监听者对应的移除方法是否存在;在所述监听者对应的移除方法不存在时,确定所述监听者为不符合所述规范检测的目标监听者。
在本公开的一种示例性实施例中,对所述代码文本中包含的监听者进行规范检测包括:获取所述待检测工程的白名单;
根据所述白名单对所述待检测工程包含的多个代码文本进行过滤,以对过滤后的目标代码文本进行规范检测。
在本公开的一种示例性实施例中,检测所述监听者对应的移除方法是否存在包括:根据所述代码文本中包含的监听者,获取所述监听者的移除规则;通过所述移除规则匹配所述代码文本,以确定所述代码文本中是否存在所述移除方法。
在本公开的一种示例性实施例中,获取所述监听者的移除规则包括:根据所述代码文本中包含的监听者,获取所述监听者的创建方法;根据所述创建方法确定所述监听者的移除规则。
在本公开的一种示例性实施例中,根据所述异常代码提供异常信息,以供用户对所述报错进行修改包括:获取所述异常代码中包含的目标监听者的标识信息;根据所述标识信息提示用户所述目标监听者缺少移除方法。
在本公开的一种示例性实施例中,对所述代码文本中包含的监听者进行规范检测之后,还包括:若所述待检测工程中不包含所述异常代码,则运行所述待检测工程。
根据本公开实施例的第二方面,提供了一种代码检测装置,包括:代码提取模块,用于提取待检测工程中包含的多个代码文本;代码检测模块,用于对所述代码文本中包含的监听者进行规范检测,检测出不符合所述规范检测的目标监听者,将包含所述目标监听者的代码文本作为异常代码;异常报错模块,用于若所述代码文本中存在所述异常代码,则对所述待检测工程进行报错,并根据所述异常代码提供异常信息,以供用户对所述报错进行修改。
根据本公开实施例的第三方面,提供了一种计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现如上述实施例中第一方面所述的代码检测方法。
根据本公开实施例的第四方面,提供了一种电子设备,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如上述实施例中第一方面所述的代码检测方法。
本公开实施例提供的技术方案可以包括以下有益效果:
在本公开的一些实施例所提供的技术方案中,一方面,通过对待检测工程中的代码文本进行规范检测,可以确定出代码中使用不符合规范的监听者,从而避免人工检查代码规范花费时间过长的问题,能够提高代码检测效率;同时,能够提高代码质量和正确率,避免因代码规范问题造成程序崩溃;另一方面,在待检测工程中存在异常代码时能够进行报错并提供异常信息,可以使得开发人员根据异常信息对代码进行修改,有利于提高错误定位效率。
以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
图1示意性示出了本公开一示例性实施例的代码检测方法的流程图;
图2示意性示出了本公开另一示例性实施例的代码检测方法的流程图;
图3示意性示出了本公开又一示例性实施例的代码检测方法的流程图;
图4示意性示出了根据本公开的实施例的代码检测装置的框图;
图5示出了本实施例中一种用于实现上述方法的电子设备的结构示意图。
具体实施方式
现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本公开将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。
此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本公开的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本公开的技术方案而没有特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知方法、装置、实现或者操作以避免模糊本公开的各方面。
附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解,而有的操作/步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。
本实施例中首先提出一种代码检测方法,该代码检测方法的执行主体可以包括具有计算处理功能的设备,例如电脑、平板电脑等。
如图1所示,该代码检测方法可以包括步骤S110、步骤S120以及步骤S130。具体的:
步骤S110:提取待检测工程中包含的多个代码文本。
步骤S120:对所述代码文本中包含的监听者进行规范检测,检测出不符合所述规范检测的目标监听者,将包含所述目标监听者的代码文本作为异常代码。
步骤S130:若所述代码文本中存在所述异常代码,则对所述待检测工程进行报错,并根据所述异常代码提供异常信息,以供用户对所述报错进行修改。
在本公开的实施例所提供的技术方案中,一方面,通过对待检测工程中的代码文本进行规范检测,可以确定出不符合规范的监听者,从而解决代码编译时无法对监听者进行检测的问题,避免人工检查代码规范花费时间过长的问题,能够提高代码检测效率;同时,能够保证代码中的监听者符合规范,提高代码质量和正确率,避免因代码规范问题造成程序崩溃;另一方面,在待检测工程中存在异常代码时能够进行报错并提供异常信息,可以使得开发人员根据异常信息快速对代码进行修改,有利于提高错误定位效率。
下面,结合图1至图3对本实施例提供的代码检测方法的各个步骤的具体实施例进行更加详细的说明。
参考图1,在步骤S110中,提取待检测工程中包含的多个代码文本。
开发者可以在代码编辑工具中编写代码,编写完成之后运行,从而查看运行结果。在接收到用户端的代码运行指令时可以将用户端当前的工程作为待检测工程,从而提取待检测工程中的代码文本,以对待检测工程进行编译运行。举例而言,通过点击“运行”按键可以触发代码运行指令,或者通过其他方式也可以触发代码运行指令,例如通过脚本发起代码运行指令等。在接收到代码运行指令时可以获取到用户当前编辑的待检测工程,待检测工程中可以包含多个可执行的代码文件,提取代码文件中包含的内容可以得到代码文本。
在步骤S120中,对所述代码文本中包含的监听者进行规范检测,检测出不符合所述规范检测的目标监听者,将包含所述目标监听者的代码文本作为异常代码。
其中,监听者指的是软件开发过程中的一种设计模式,具体可以包括用于对对象进行监听的方法。对一个对象添加监听者时,被监听的对象的属性值发生变化时,该监听者可以得到通知或针对变化做出相应的处理。监听者可以通过Key-Value Observing(简称为KVO)来实现,KVO是Objective-C中的一种原生机制;或者,也可以通过其他方式来实现,例如通知机制等。
举例而言,在用户端运行代码时可以触发运行脚本,通过脚本提取待检测工程中包含的代码文本,然后遍历代码文本,对每一个代码文本进行检测,确定代码文本中是否包含监听者,如果代码文本中包含监听者,则可以根据监听者对该代码文本进行规范检测。具体的,规范检测的方法可以包括:检测所述监听者对应的移除方法是否存在;在所述监听者对应的移除方法不存在时,确定所述监听者为不符合规范检测的目标监听者。开发者可以在代码中添加监听者,但是如果添加了监听者需要在代码销毁阶段及时消除添加的监听者,否则可能会造成代码崩溃。因此,在代码文本中包含监听者时,则检测代码文本中是否还存在该监听者的移除方法,如果代码文本中包含监听者的移除方法,可以确定代码文本中包含的监听者通过规范检测,则继续检测下一个代码文本。如果代码文本中包含了一个监听者,而不包含该监听者的移除方法,则可以确定该监听者为不符合规范检测的目标监听者,包含该监听者的代码文本可以确定为异常代码。
需要理解的是,一个代码文本中可以包括多个不同的监听者,各个监听者可以通过名称进行唯一标识,也可以通过其他信息进行标识,本实施方式对此不做特殊限定。如果代码文本中包含多个监听者,则需要对每个监听者均进行规范检测,确定出该代码文本的多个监听者中移除方法不存在的目标监听者,并且将该代码文本确定为异常代码。本实施方式不仅可以确定出包含不规范监听者的代码文本,还可以具体确定出代码文本中不规范的目标监听者,减少了开发人员自检的工作量。
示例性的,检测代码文本中是否包含监听者对应的移除方法,可以通过移除方法的移除规则对代码文本进行匹配,如果代码文本能够匹配上则可以确定代码文本中包含监听者的移除方法。如图2所示,该方法可以包括步骤S210和步骤S220。
在步骤S210中,获取所述监听者的移除规则。当需要对一个对象添加监听者时需要先创建监听者,监听者的创建方法一般具有特定的格式,例如特定的方法名、特定的参数等,从而根据该特定的格式可以从代码文本中匹配出创建方法,通过该创建方法可以获取监听者的属性信息,例如监听者的名称、参数等;相应的,监听者的移除方法也具有特定的格式,进而根据移除方法的格式以及监听者的属性信息可以合成正则表达式,将得到的正则表达式可以作为移除规则,以对代码文本进行匹配。示例性的,在ios开发场景中,通过addObserver方法来注册一个监听者,通过removeObserver来移除监听者,则可以根据addObserver来匹配代码文本中是否存在监听者,若匹配到代码文本中包含监听者的注册方法,则可以获取该注册方法中包含的各个参数,从而根据参数以及移除方法removeObserver可以确定出该监听者的移除规则。举例而言,若代码文本中包含字符串addObserver,则可以获取匹配结果addObserver:aaa,其中aaa为监听者的名称,则根据该名称可以得到移除规则为removeObserver:aaa。
在步骤S220中,通过所述移除规则匹配所述代码文本,以确定所述代码文本中是否存在所述移除方法。移除规则可以包括监听者移除方法对应的正则表达式,通过该正则表达式可以对代码文本中包含的字符进行匹配,若代码文本中包含符合该正则表达式的字符串,则可以确定代码文本中包含监听者的移除方法。
对代码文本进行匹配之后,可以将不存在对应的移除方法的监听者确定为目标监听者,并且可以确定包含目标监听者的代码文本存在异常,将包含目标监听者的代码文本记为异常代码。对待检测工程中的多个代码文本一一进行规范检测,若发现某个代码文本存在异常,则可以停止规范检测,并记录异常代码。
示例性的实施方式中,对代码文本进行规范检测之前,还可以先获取待检测工程的白名单;进而根据该白名单对待检测工程中包含的代码文本进行过滤,过滤后再进行规范检测。具体的,对于需要跳过该规范检测的代码文件来说,可以将该代码文件的目录添加至白名单中。在需要运行待检测工程时,可以先从该待检测工程的文件目录中获取该待检测工程的白名单,得到白名单中包含的代码文件。将白名单中包含的代码文件可以作为待过滤的文件,然后从待检测工程的所有代码文件中将待过滤的文件过滤掉,将剩余的文件中包含的代码文本作为目标代码文本。在规范检测时可以只对目标代码文本进行检测,从而跳过不需要进行规范检测的文本,可以减少检测文本数量,加快检测速度。
在步骤S130中,若所述代码文本中存在所述异常代码,则对所述待检测工程进行报错,并根据所述异常代码提供异常信息,以供用户对所述报错进行修改。
如果待检测工程的多个代码文本中存在异常代码,则可以对待检测工程进行报错。举例而言,对待检测工程进行报错的方式可以包括在用户界面中弹窗显示提示信息,或者,在用户界面中可以显示一标识,用于提示用户工程中包含错误等。本实施方式中,在检测到一异常代码时可以停止检测进行报错,还可以在对所有代码文本全部检测完成后,确定出所有规范检测存在异常的异常代码,在报错时可以将异常代码的数量提供给用户,例如,提示用户一共存在5处异常代码等。
根据异常代码可以生成异常信息,进而通过异常信息为用户提供修改建议。示例性的,异常信息中可以包括异常代码的具体位置,例如异常代码的文件名称、代码文件目录等,还可以包括异常代码的监听者信息,例如监听者名称、被监听者名称等等。
通常代码文本中会存在多个监听者,对每个监听者进行自检对用户来说,工作量较大,而且容易造成遗漏、检查不全面的问题。本实施方式可以自动地对代码文本中的监听者进行规范检测,能够避免用户对监听者进行自检,减少开发者的工作量,提高代码开发效率;并且在出现异常时能够直接向用户提供不符合规范检测的目标监听者以及异常代码的信息,避免人工对异常进行定位,从而可以节省错误定位时间,进一步提高效率。
示例性的,进行报错时可以获取异常代码中包含的目标监听者的标识信息,然后通过该标识信息提示用户该目标监听者缺少移除方法。其中,目标监听者可以包括多个,不同的代码文本中可以包含不同的监听者。在检测出不符合规范检测的目标监听者时可以记录目标监听者的标识信息,例如目标监听者的名称,从而在报错时显示该目标监听者的名称,提示用户该监听者缺少移除方法。
本示例性实施方式中,如果对待检测工程中的所有代码文本均进行了规范检测,确定不存在异常代码时可以运行待检测工程,若待检测工程中包含异常代码则进行报错,能够将代码错误问题在编译阶段检测出来,保证待检测工程运行正常,从而避免代码崩溃,提高代码质量。
图3示出了本发明实施方式中的一种应用场景。在ios开发场景中,监听者的可以通过通知和KVO实现。如图3所示,在步骤S301中,提取待检测工程中代码文本;在步骤S302中,确定该代码文本是否包含在白名单内;若该代码文本包含在白名单中则执行跳过该代码文本,提取待检测工程中的下一个代码文本;若该代码文本不在白名单中,则执行步骤S303;在步骤S303中,确定该代码文本中是否包含通知;例如,若代码文本中包含[NSNotificationCenter defaultCenter]addObserver:aaa可以确定代码文本中包含通知;若该代码文本中包含通知则执行步骤S304;在步骤S304中,确定该通知对应的移除方法是否存在;例如,上述通知对应的移除方法可以为[[NSNotificationCenterdefaultCenter]removeObserver:aaa;若通知对应的移除方法存在,则确定该代码文本通过规范检测;若该通知对应的移除方法不存在,则确定该代码文本为异常代码,并进行报错;在步骤S303中,若代码文本中不包含通知,执行步骤S305,确定该代码文本中是否包含KVO;若代码文本中包含KVO,则执行步骤S306,例如,若代码文本中包含addObserver:aaaforKeyPath:bbb则可以确定代码文本中包含KVO;若代码文本中不包含KVO则可以确定该代码文本通过规范检测,继续对下一个代码文本进行规范检测;在步骤S306中,确定该KVO对应的移除方法是否存在;例如,若代码文本中包含removeObserver:aaa forKeyPath:bbb则可以确定该KVO对应的移除方法存在;若KVO对应的移除方法存在则执行步骤S307,确定该代码文本通过规范检测。此外,如果在步骤S303中,判定代码文本中不包含通知,则可以跳至步骤S305,进一步判断代码文本是否包含KVO;如果在步骤S305中,判定代码文本中也不包含KVO,则可以确定该代码文本通过规范检测。
需要说明的是,本实施方式中的步骤S301至步骤S307的具体实施细节在上述实施例中均已进行了说明,此处不再赘述。通过图3所示的实施方式,开发人员无需对代码文本进行人工检测,可以节省人力,并且提高代码安全性。
进一步的,本公开还提供一种代码检测装置,可以用于执行本公开上述的代码检测方法。如图4所示,该代码检测装置400可以包括代码提取模块410、代码检测模块420以及异常报错模块430。具体的:
代码提取模块410,用于提取待检测工程中包含的多个代码文本。
代码检测模块420,用于对所述代码文本中包含的监听者进行规范检测,检测出不符合所述规范检测的目标监听者,将包含所述目标监听者的代码文本作为异常代码。
异常报错模块430,用于若所述代码文本中存在所述异常代码,则对所述待检测工程进行报错,并根据所述异常代码提供异常信息,以供用户对所述报错进行修改。
在本公开的一种示例性实施例中,代码检测模块420可以包括移除方法检测单元以及异常确定单元,其中:
移除方法检测单元,用于在所述代码文本中包含监听者时,检测所述监听者对应的移除方法是否存在。
异常确定单元于在所述监听者对应的移除方法不存在时,确定所述监听者为不符合所述规范检测的目标监听者。
在本公开的一种示例性实施例中,代码检测模块420具体包括白名单获取单元和代码过滤单元,其中:
白名单获取单元,用于获取所述待检测工程的白名单。
代码过滤单元,用于根据所述白名单对所述待检测工程包含的多个代码文本进行过滤,以对过滤后的目标代码文本进行规范检测。
在本公开的一种示例性实施例中,移除方法检测单元具体包括移除规则获取单元以及规则匹配单元,其中:
移除规则获取单元,用于根据所述代码文本中包含的监听者,获取所述监听者的移除规则。
规则匹配单元,用于通过所述移除规则匹配所述代码文本,以确定所述代码文本中是否存在所述移除方法。
在本公开的一种示例性实施例中,移除规则获取单元具体包括创建方法获取单元,以及移除规则确定单元,其中:
创建方法获取单元,用于获取所述监听者的创建方法。
移除规则确定单元,用于根据所述创建方法确定所述监听者的移除规则。
在本公开的一种示例性实施例中,异常报错模块430具体可以包括标识信息获取单元以及提示单元,其中:
标识信息获取单元,用于获取所述异常代码中包含的目标监听者的标识信息。
提示单元,用于根据所述标识信息提示用户所述目标监听者缺少移除方法。
在本公开的一种示例性实施例中,所述装置还包括代码运行模块,用于若所述待检测工程中不包含所述异常代码,则运行所述待检测工程。
由于本公开的示例实施例的代码检测装置的各个功能模块与上述代码检测方法的示例实施例的步骤对应,因此对于本公开装置实施例中未披露的细节,请参照本公开上述的代码检测方法的实施例。
所属技术领域的技术人员能够理解,本公开的各个方面可以实现为系统、方法或程序产品。因此,本公开的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。
本公开的示例性实施例还提供了一种计算机可读介质,其上存储有能够实现本说明书上述方法的程序产品。在一些可能的实施方式中,本公开的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当程序产品在终端设备上运行时,程序代码用于使终端设备执行本说明书上述“示例性方法”部分中描述的根据本公开各种示例性实施方式的步骤。
本公开的示例性实施例还提供用于实现上述方法的程序产品,其可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在终端设备,例如个人电脑上运行。然而,本公开的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本公开操作的程序代码,程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
本公开的示例性实施例还提供了一种能够实现上述方法的电子设备。下面参照图5来描述根据本公开的这种示例性实施例的电子设备500。图5显示的电子设备500仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图5所示,电子设备500可以以通用计算设备的形式表现。电子设备500的组件可以包括但不限于:上述至少一个处理单元510、上述至少一个存储单元520、连接不同系统组件(包括存储单元520和处理单元510)的总线530、显示单元540。
其中,所述存储单元存储有程序代码,所述程序代码可以被所述处理单元510执行,使得所述处理单元510执行本说明书上述“示例性方法”部分中描述的根据本公开各种示例性实施方式的步骤。例如,所述处理单元510可以执行如图1中所示的:步骤S110,提取待检测工程中包含的多个代码文本;步骤S120,根据所述代码文本中包含的监听者对所述代码文本进行规范检测,检测出不符合所述规范检测的目标监听者,将包含所述目标监听者的代码文本作为异常代码;步骤S130,若所述代码文本中存在所述异常代码,则对所述待检测工程进行报错,并根据所述异常代码提供异常信息,以供用户对所述报错进行修改。
存储单元520可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(RAM)5201和/或高速缓存存储单元5202,还可以进一步包括只读存储单元(ROM)5203。
存储单元520还可以包括具有一组(至少一个)程序模块5205的程序/实用工具5204,这样的程序模块5205包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
总线530可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。
电子设备500也可以与一个或多个外部设备600(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与该电子设备500交互的设备通信,和/或与使得该电子设备500能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口550进行。并且,电子设备500还可以通过网络适配器560与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器560通过总线530与电子设备500的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备500使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、终端装置、或者网络设备等)执行根据本公开实施方式的方法。
此外,上述附图仅是根据本公开示例性实施例的方法所包括的处理的示意性说明,而不是限制目的。易于理解,上述附图所示的处理并不表明或限制这些处理的时间顺序。另外,也易于理解,这些处理可以是例如在多个模块中同步或异步执行的。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其他实施例。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由权利要求指出。

Claims (10)

1.一种代码检测方法,其特征在于,包括:
提取待检测工程中包含的多个代码文本;
对所述代码文本中包含的监听者进行规范检测,检测出不符合所述规范检测的目标监听者,将包含所述目标监听者的代码文本作为异常代码;
若所述代码文本中存在异常代码,则对所述待检测工程进行报错,并根据所述异常代码提供异常信息,以供用户对所述报错进行修改。
2.根据权利要求1所述的代码检测方法,其特征在于,对所述代码文本中包含的监听者进行规范检测包括:
检测所述监听者对应的移除方法是否存在;
在所述监听者对应的移除方法不存在时,确定所述监听者为不符合所述规范检测的目标监听者。
3.根据权利要求1所述的代码检测方法,其特征在于,对所述代码文本中包含的监听者进行规范检测包括:
获取所述待检测工程的白名单;
根据所述白名单对所述待检测工程包含的多个代码文本进行过滤,以对过滤后的目标代码文本进行规范检测。
4.根据权利要求2所述的代码检测方法,其特征在于,检测所述监听者对应的移除方法是否存在包括:
根据所述代码文本中包含的监听者获取所述监听者的移除规则;
通过所述移除规则匹配所述代码文本,以确定所述代码文本中是否存在所述移除方法。
5.根据权利要求4所述的代码检测方法,其特征在于,根据所述代码文本中包含的监听者获取所述监听者的移除规则包括:
获取所述监听者的创建方法;
根据所述创建方法确定所述监听者的移除规则。
6.根据权利要求2所述的代码检测方法,其特征在于,根据所述异常代码提供异常信息,以供用户对所述报错进行修改包括:
获取所述异常代码中包含的目标监听者的标识信息;
根据所述标识信息提示用户所述目标监听者缺少移除方法。
7.根据权利要求1所述的方法,其特征在于,对所述代码文本中包含的监听者进行规范检测之后,还包括:
若所述待检测工程中不包含所述异常代码,则运行所述待检测工程。
8.一种代码检测装置,其特征在于,包括:
代码提取模块,用于提取待检测工程中包含的多个代码文本;
代码检测模块,用于对所述代码文本中包含的监听者进行规范检测,检测出不符合所述规范检测的目标监听者,将包含所述目标监听者的代码文本作为异常代码;
异常报错模块,用于若所述代码文本中存在所述异常代码,则对所述待检测工程进行报错,并根据所述异常代码提供异常信息,以供用户对所述报错进行修改。
9.一种计算机可读介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1至7中任一项所述的代码检测方法。
10.一种电子设备,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如权利要求1至7中任一项所述的代码检测方法。
CN202010850230.2A 2020-08-21 2020-08-21 代码检测方法、装置、介质及电子设备 Pending CN111813695A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010850230.2A CN111813695A (zh) 2020-08-21 2020-08-21 代码检测方法、装置、介质及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010850230.2A CN111813695A (zh) 2020-08-21 2020-08-21 代码检测方法、装置、介质及电子设备

Publications (1)

Publication Number Publication Date
CN111813695A true CN111813695A (zh) 2020-10-23

Family

ID=72859632

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010850230.2A Pending CN111813695A (zh) 2020-08-21 2020-08-21 代码检测方法、装置、介质及电子设备

Country Status (1)

Country Link
CN (1) CN111813695A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113626245A (zh) * 2021-08-27 2021-11-09 四川虹美智能科技有限公司 防止ios应用程序崩溃的方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104503770A (zh) * 2015-01-12 2015-04-08 北京国双科技有限公司 异常信息的处理方法及装置
CN107908567A (zh) * 2017-11-27 2018-04-13 腾讯科技(深圳)有限公司 一种Java对象引用方法、装置和介质
CN108920150A (zh) * 2017-04-11 2018-11-30 武汉斗鱼网络科技有限公司 一种事件管理方法及装置
CN110618928A (zh) * 2019-06-25 2019-12-27 北京无限光场科技有限公司 一种内存泄露检测方法、装置、终端设备及介质
CN110750738A (zh) * 2018-07-06 2020-02-04 武汉斗鱼网络科技有限公司 一种为主播添加标签的方法及电子设备

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104503770A (zh) * 2015-01-12 2015-04-08 北京国双科技有限公司 异常信息的处理方法及装置
CN108920150A (zh) * 2017-04-11 2018-11-30 武汉斗鱼网络科技有限公司 一种事件管理方法及装置
CN107908567A (zh) * 2017-11-27 2018-04-13 腾讯科技(深圳)有限公司 一种Java对象引用方法、装置和介质
CN110750738A (zh) * 2018-07-06 2020-02-04 武汉斗鱼网络科技有限公司 一种为主播添加标签的方法及电子设备
CN110618928A (zh) * 2019-06-25 2019-12-27 北京无限光场科技有限公司 一种内存泄露检测方法、装置、终端设备及介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
肠粉白粥_HOBEN: "iOS通知/KVO移除 自动检测脚本", pages 1 - 2, Retrieved from the Internet <URL:《https://www.jianshu.com/p/bfe9c1d36676》> *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113626245A (zh) * 2021-08-27 2021-11-09 四川虹美智能科技有限公司 防止ios应用程序崩溃的方法
CN113626245B (zh) * 2021-08-27 2023-04-07 四川虹美智能科技有限公司 防止ios应用程序崩溃的方法

Similar Documents

Publication Publication Date Title
CN107515808B (zh) 日志记录方法、装置、计算机设备和计算机可读存储介质
US10761964B2 (en) Object monitoring in code debugging
CN112100072B (zh) 应用程序代码的静态检测方法、装置、设备及介质
US20060150150A1 (en) Editor support for modifying generated source code
CN111090641B (zh) 数据处理方法及装置、电子设备、存储介质
JP6119535B2 (ja) トレース方法、処理プログラム、および情報処理装置
US20090182753A1 (en) Recording user-driven events withi a computing system
CN108874441B (zh) 一种板卡配置方法、装置、服务器和存储介质
CN110659210A (zh) 一种信息获取方法、装置、电子设备及存储介质
CN111813695A (zh) 代码检测方法、装置、介质及电子设备
CN110286912B (zh) 代码检测方法、装置及电子设备
CN110688320B (zh) 全局变量的检测方法、装置及终端设备
US10318403B2 (en) Code update based on detection of change in runtime code during debugging
CN115756934A (zh) 一种应用崩溃分析方法及装置
CN113342431B (zh) 函数调用栈回溯、程序异常处理方法、装置、设备及介质
CN115794054A (zh) 代码生成方法、装置、存储介质及计算机设备
CN114356290A (zh) 一种数据处理方法、装置及计算机可读存储介质
CN110991147B (zh) 一种字体检测方法、装置、电子设备及存储介质
CN110096281B (zh) 代码解析方法、解析服务器、存储介质及装置
CN109948251B (zh) 基于cad的数据处理方法、装置、设备及存储介质
CN115374074A (zh) 日志处理方法、装置、存储介质及电子设备
CN113485688B (zh) 代码补全方法、装置、存储介质与电子设备
CN111124730A (zh) 一种服务器的错误定位方法、装置及计算机存储介质
CN116541305B (zh) 一种异常检测的方法、装置、电子设备及存储介质
CN112988593B (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