JavaScript代码检测方法、装置、设备和存储介质
技术领域
本申请涉及代码质量工具领域,尤其涉及一种JavaScript代码检测方法、装 置、设备和存储介质。
背景技术
随着互联网技术的飞速发展,诸如手机、平板电脑、个人电脑等终端日 益普及,各种依赖于终端运行的系统也应运而生,人们不仅在工作和生活中 越来越多地依赖于各种系统,而且对系统可以提供的功能提出越来越高的要 求。伴随着系统的功能的提高与加强,系统的代码的复杂程度也随之增加, 由此导致系统的稳定性和可靠性下降,使得系统在运行过程中可能出现各种 异常状态。为了跟踪和查找系统发生异常的确切位置,通常需要在系统中获 取异常信息,根据异常信息在系统中定位发生异常的变量,以便基于代码实现对异常的变量。
目前JavaScript解析引擎机制,在if语句中存在多个or的情况下,若前面的 判断语句已满足,那解析引擎就不会继续解析后面的条件语句。相关技术中, 在根据异常信息定位发生异常的变量时,需要获取系统在运行中的运行日志, 并利用日志分析工具对运行日志进行分析,在运行日志中定位发生异常的变 量。在获取系统的运行日志时,需要获取可能发生异常的时间段内产生的全 部运行日志,由于系统在运行过程中产生的运行日志的数据量很大,导致在 对运行日志进行分析时产生了大量的工作量,且不能实时定位发生异常的变 量,智能性较低。
发明内容
本申请提供了一种通过封装的页面开发功能的方法,能够解决现有技术 中页面开发效率的过低、无法对版本做快熟迭代的问题。
第一方面,本申请提供一种JavaScript代码检测方法,包括:
获取JavaScript代码,并构建所述JavaScript代码对应的抽象语法树。所述 抽象语法树是通过语法分析器创建。所述语法分析器是指编译器或解释器的 组件,所述语法分析器用于语法检查,并根据所述JavaScript代码中的变量来 构建数据结构。
通过自动化脚本查找JavaScript代码中的检查规则。所述检查规则是指通 过所述变量的适用场景、前提条件、规范种类以及判断标准进行生成用于检 测if语句中异常变量的规则。
通过遍历所述抽象语法树中的if语句,得到所述JavaScript代码的if语句。
分别所述JavaScript代码中每一个if语句中的变量设置标识信息。
使用正则表达式以及所述检查规则对所述JavaScript代码中每一行if语句 中的变量进行对比检测,以得到检测结果。
若所述检测结果为成功,则返回一个数组并更新所述正则表达式对象的 属性和所述正则表达式对象。
或者,若所述检测结果为失败,则返回空集并发出异常通知。
在一些可能的设计中,所述通过遍历所述抽象语法树中的if语句,得到 所述JavaScript代码的if语句,包括:
循环遍历所述抽象语法树的所有对象,若通过Object.name判断与if字符 串相等,并且匹配数组中包含了if,则确定所述JavaScript代码中包含if语句。 所述数组用于存放所述JavaScript代码的状态。所述状态包括代码的属性。
查找所述JavaScript代码中if语句中是否存在变量,若查找到所述 JavaScript代码中if语句中存在变量,则判断所述if语句中包含变量,并标识 所述if语句。
在一些可能的设计中,所述变量标识信息包括以下至少一项:JavaScript 的探测标记变量赋值语句所属函数的函数名、所述JavaScript代码中的探测标 记变量赋值语句的行号、所述JavaScript代码中代码段的探测标记变量赋值语 句所属源文件的文件名。
在一些可能的设计中,所述异常通知是指按照固定格式将代码行号、异 常变量、所述异常信息及异常标志组合生成的通知。
在一些可能的设计中,所述异常标志是指一个用于检测代码异常的32位 二进制数,所述二进制数的每一位代表传每一种代码运行的异常状态。
对比检测执行完后,返回一个32位的2进制数。
若第i位是1,则确定第i+1个功能的所述代码运行正常。
若第i位是0,则确定第i+1个功能的所述代码运行存在异常。所述i是 大于等于0且小于32的整数。
在一些可能的设计中,所述规范种类至少包括:命名规范、声明规范、 注释规范、常量规范、bean定义规范、事务规范、脚本规范、日志规范、异 常处理规范、Junit规范、错误类规范、警告类规范及提示类规范中的一项。
在一些可能的设计中,所述返回空集之后,所述方法还包括:
发出指示信息;所述指示信息用于指示所述JavaScript代码中的每个if语 句的检测结果。。
第二方面,本申请提供一种用于检测JavaScript代码的装置,具有实现对 应于上述第一方面提供的JavaScript代码检测的方法的功能。所述功能可以通 过硬件实现,也可以通过硬件执行相应的软件实现。硬件或软件包括一个或 多个与上述功能相对应的模块,所述模块可以是软件和/或硬件。
所述用于检测JavaScript代码的装置包括:
输入输出模块,用于获取JavaScript代码;
处理模块,用于构建所述JavaScript代码对应的抽象语法树。所述抽象语 法树是通过语法分析器创建。所述语法分析器是指编译器或解释器的组件, 所述语法分析器用于语法检查,并根据所述JavaScript代码中的变量来构建数 据结构。通过自动化脚本查找JavaScript代码中的检查规则。所述检查规则是 指通过所述变量的适用场景、前提条件、规范种类以及判断标准进行生成用 于检测if语句中异常变量的规则。通过遍历所述抽象语法树中的if语句,得 到所述JavaScript代码的if语句。分别所述JavaScript代码中每一个if语句中的 变量设置标识信息。使用正则表达式以及所述检查规则对所述JavaScript代码 中每一行if语句中的变量进行对比检测,以得到检测结果;
还用于若所述检测结果为成功,则通过所述输入输出模块返回一个数组 并更新所述正则表达式对象的属性和所述正则表达式对象;
或者,若所述检测结果为失败,则通过所述输入输出模块则返回空集并 发出异常通知。
在一些可能的设计中,所述处理模块还用于:
循环遍历所述抽象语法树的所有对象,若通过Object.name判断与if字符 串相等,并且匹配数组中包含了if,则确定所述JavaScript代码中包含if语句。 所述数组用于存放所述JavaScript代码的状态。所述状态包括代码的属性。
查找所述JavaScript代码中if语句中是否存在变量,若查找到所述 JavaScript代码中if语句中存在变量,则判断所述if语句中包含变量,并标识 所述if语句。
在一些可能的设计中,所述变量标识信息包括以下至少一项:JavaScript 的探测标记变量赋值语句所属函数的函数名、所述JavaScript代码中的探测标 记变量赋值语句的行号、所述JavaScript代码中代码段的探测标记变量赋值语 句所属源文件的文件名。
在一些可能的设计中,所述异常通知是指按照固定格式将代码行号、异 常变量、所述异常信息及异常标志组合生成的通知。
在一些可能的设计中,所述异常标志是指一个用于检测代码异常的32位 二进制数,所述二进制数的每一位代表传每一种代码运行的异常状态。
所述处理模块还用于:
对比检测执行完后,返回一个32位的2进制数。
若第i位是1,则确定第i+1个功能的所述代码运行正常。
若第i位是0,则确定第i+1个功能的所述代码运行存在异常。所述i是 大于等于0且小于32的整数。
在一些可能的设计中,所述规范种类至少包括:命名规范、声明规范、 注释规范、常量规范、bean定义规范、事务规范、脚本规范、日志规范、异 常处理规范、Junit规范中、错误类规范、警告类规范及提示类规范的一项。
在一些可能的设计中,所述处理模块还用于
发出指示信息;所述指示信息用于指示所述JavaScript代码中的每个if语 句的检测结果。
本申请又一方面提供了计算机设备,其包括至少一个连接的处理器、存 储器、输入输出单元,其中,所述存储器用于存储程序代码,所述处理器用 于调用所述存储器中的程序代码来执行上述各方面所述的方法。
本申请又一方面提供了一种计算机存储介质,其包括指令,当其在计算 机上运行时,使得计算机执行上述各方面所述的方法。
在现有机制中,JavaScript解析引擎机制,在if语句中存在多个or的情况 下,若前面的判断语句已满足,那解析引擎就不会继续解析后面的条件语句。 本发明提供一种检测if代码异常时变量信息的方法。所述方法指的是通过遍 历抽象语法树,找出if语句中的异常的变量,并标识if语句中的变量,若通 过正则表达式以及检查规则判断标识的变量存在异常,则发出异常通知给相 关的开发人员。以解决JavaScript代码中if语句变量未定义的问题,并对开发 人员进行报错提示,保证代码的健壮性。
附图说明
图1为本申请实施例中JavaScript代码检测的方法的流程示意图;
图2为本申请实施例中用于检测JavaScript代码的装置的结构示意图;
图3为本申请实施例中计算机设备的结构示意图。
本申请目的的实现、功能特点及优点将结合实施例,参照附图做进一步 说明。
具体实施方式
应当理解,此处所描述的具体实施例仅用以解释本申请,并不用于限定 本申请。本申请的说明书和权利要求书及上述附图中的术语“第一”、“第 二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应 该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够 以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具 有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系 列步骤或模块的过程、方法、系统、产品或设备不必限于清楚地列出的那些 步骤或模块,而是可包括没有清楚地列出的或对于这些过程、方法、产品或 设备固有的其它步骤或模块,本申请中所出现的模块的划分,仅仅是一种逻 辑上的划分,实际应用中实现时可以有另外的划分方式,例如多个模块可以 结合成或集成在另一个系统中,或一些特征可以忽略,或不执行。
本申请提供一种JavaScript代码检测方法、装置、设备和存储介质,可用 于JavaScript代码中检测if语句的异常变量。
为解决上述技术问题,本申请主要提供以下技术方案:
本申请提供一种检测if代码异常时变量信息的方法。所述方法指的是获 取JavaScript代码,并构建JavaScript代码对应的抽象语法树;通过自动化脚本 查找JavaScript代码中的检查规则;遍历抽象语法树中的if语句,得到JavaScript 代码的if语句;分别对JavaScript代码中每一个if语句中的变量设置标识信息; 使用正则表达式以及检查规则对所述JavaScript代码中每一行if语句中的变量 进行对比检测,以得到检测结果;若检测结果为失败,则返回空集并发出异 常通知。
请参照图1,以下对本申请提供一种JavaScript代码检测的方法进行举例 说明,所述方法包括:
101、获取JavaScript代码,并构建所述JavaScript代码对应的抽象语法树。 所述JavaScript是一种直译式脚本语言,是一种动态、基于原型的语言,并内 置支持类型。它的解释器被称为JavaScript引擎,是浏览器的组成部分,所述 JavaScript是用于客户端的脚本语言,并在超文本标记语言(Hyper TextMarkup Language,HTML)网页上使用,用来给HTML网页增加动态功能。由 ECMAScript、文档对象模型以及浏览器对象模型组成。所述ECMAScript描 述了所述JavaScript语法和基本对象。所述文档对象模型描述处理网页内容的 方法和接口。所述浏览器对象模型描述与浏览器进行交互的方法和接口。所 述JavaScript用于包括嵌入动态文本于HTML页面、对浏览器事件做出响应、 读写HTML元素、在数据被提交到服务器之前验证数据、检测访客的浏览器 信息、控制Cookies以及基于Node.js技术进行服务器端编程。所述Cookies 是在HTTP协议下,服务器或脚本可以维护客户工作站上信息的一种方式。 Cookies是由Web服务器保存在用户浏览器上的小文本文件,它可以包含有 关用户的信息。无论何时用户链接到服务器,Web站点都可以访问Cookie信息。
例如,Cookie是当访问某网站时,网站存储在你机器上的一个小文本文 件,所述Cookie记录了你的用户ID,密码、浏览过的网页、停留的时间等信 息,当再次访问网站时,网站通过读取Cookie,得知你的相关信息,就可以 做出相应的动作,如在页面显示欢迎你的标语,或者让你不用输入ID、密码 就直接登录等。可以在IE的“工具/Internet选项”的“常规”选项卡中,选 择“设置/查看文件”,查看所有保存到计算机里的Cookie。这些文件通常是 以user@domain格式命名的,user是你的本地用户名。
所述抽象语法树是通过语法分析器创建。所述语法分析器是指编译器或 解释器的组件,所述语法分析器用于语法检查,并根据所述JavaScript代码中 的变量来构建数据结构。所述数据结构是指相互之间存在一种或多种特定关 系的数据元素的集合。所述抽象语法树(Abstract Syntax Tree,AST),或简称 语法树(Syntax tree),是源代码语法结构的一种抽象表示。它以树状的形式 表现编程语言的语法结构,树上的每个节点都表示源代码中的一种结构。
抽象语法树作为程序的一种中间表示形式,在程序分析等诸多领域有广 泛的应用。利用抽象语法树可以方便地实现多种源程序处理工具,比如源程序 浏览器、智能编辑器以及语言翻译器。通过所述抽象语法树可以分析代码。
102、通过自动化脚本查找JavaScript代码中的检查规则。
所述检查规则是指通过所述变量的适用场景、前提条件、规范种类以及 判断标准进行生成用于检测if语句中异常变量的规则。
所述检查规则是指用于检测if语句中异常变量的规则。
通过遍历所述抽象语法树中的if语句,得到所述JavaScript代码的if语句。
通过深度优先方法遍历抽象语法树。以给定G的初态是所有顶点均未曾 访问过。在G中任选一顶点v为初始出发点为例,则所述深度优先遍历可定 义如下:首先访问出发点v,并将其标记为已访问过;然后依次从v出发搜索 v的每个邻接点w。若w未曾访问过,则以w为新的出发点继续进行深度优 先遍历,直至图中所有和源点v有路径相通的顶点均已被访问为止。若此时 图中仍有未访问的顶点,则另选一个尚未访问的顶点作为新的源点重复上述 过程,直至图中所有顶点均已被访问为止。
104、分别所述JavaScript代码中每一个if语句中的变量设置标识信息。
所述变量至少包括全局变量或者局部变量。所述局部变量(LocalVariable) 是指函数内部的变量,它的作用域仅限于函数内部,离开该函数后就是无效 的,再使用就会报错。全局变量(Global Variable)是指在所有函数外部定义 的变量,它的作用域默认是整个程序,也就是所有的源文件。所述源文件是 指用存储汇编语言或高级语言所编写的代码文件。
105、使用正则表达式以及所述检查规则对所述JavaScript代码中每一行if 语句中的变量进行对比检测,以得到检测结果。
所述正则表达式是指规则表达式(Regular Expression、regexp),用于检 索和替换符合规则的文本。正则表达式是指字符串操作的一种逻辑公式,用 事先定义好的一些特定字符以及这些特定字符的组合,组成一个“规则字符 串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。通过正则表 达式可以达到以下目的:
1.给定的字符串是否符合正则表达式的过滤逻辑。
2.可以通过正则表达式,从字符串中获取我们想要的特定部分。
106、若所述检测结果为成功,则返回一个数组并更新所述正则表达式对 象的属性和所述正则表达式对象。
或者,若所述检测结果为失败,则返回空集(NULL)并发出异常通知。
正则表达式是对字符串和特殊字符操作的一种逻辑公式,就是用事先定 义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”, “规则字符串”用来表达对字符串的一种过滤逻辑。正则表达式是一种文本 模式,该模式描述在搜索文本时要匹配的一个或多个字符串。
以分析数组为例,定义结构是[下标变量名]格式,当所述下标变量名]标变 量在使用之前未做值范围判断。根据检查规则,[下标变量名]满足以下格式:
[由字母或下划线开头第二位开始由字母、下划线、数字组成)]
例如扫描到vEveryKom[index]代码语句,根据[下标变量名]的格式以及通 过正则表达式去所,index这个字符串满足“由字母或下划线开头第二位开始 由字母、下划线、数字等组成”的词法规则,并也符合其后面是]符号的规则, 因此分割出来的下标变量为index。
结束对比检测以后,会将变量的异常信息保存到数据库并汇总,用监控 日志呈现汇总成的文件信息。所记录变量的异常信息至少包括:检查路径、 待检代码名称、出错行数以及错误描述中的至少一种。通过可视化图表统计 和展示监控日志的信息。所述可视化图表至少包括条形图、直方图、折线图 和饼图。所述可视化图表通过选择可视化图表类型进行选择,可以保存展示 任意一项或者多项可视化图表。新增了整体的统计报表功能,更加直观的反 馈JavaScript代码中容易出现的变量异常问题。
上述实施方式中,通过遍历抽象语法树,找出if语句中的异常的变量, 并标识if语句中的变量,若通过正则表达式以及检查规则判断标识的变量存 在异常,则发出异常通知给相关的开发人员。以解决JavaScript代码中if语句 变量未定义的问题,并对开发人员进行报错提示,保证代码的健壮性。所述 健壮性是指软件对于规范要求以外的输入情况的处理能力。健壮的系统具有 对于规范要求以外的输入能够判断出这个输入不符合规范要求,并能有合理 的处理方式。
一些实施方式中,所述通过遍历所述抽象语法树中的if语句,得到所述JavaScript代码的if语句包括:
循环遍历所述抽象语法树的所有对象,若通过Object.name判断与if字符 串相等,并且匹配数组中包含了if,则确定所述JavaScript代码中包含if语句。 所述数组用于存放所述JavaScript代码的状态。所述状态包括代码的属性。
查找所述JavaScript代码中if语句中是否存在变量,若查找到所述 JavaScript代码中if语句中存在变量,则判断所述if语句中包含变量,并标识 所述if语句。
上述实施方式中,通过所述方法可以查找JavaScript代码中的if语句,并 对包含if语句的代码进行标识。
一些实施方式中,所述变量标识信息包括以下至少一项:JavaScript的探 测标记变量赋值语句所属函数的函数名、所述JavaScript代码中的探测标记变 量赋值语句的行号、所述JavaScript代码中代码段的探测标记变量赋值语句所 属源文件的文件名。
上述实施方式中,通过标识信息可以更好的发现异常的变量,例如表示 为源程序文件中的第101行的sinx函数x变量存在异常。又例如检测到代码 行号110行有一个A变量存在未定义的问题,该变量标志信息为32768,若采 用固定格式为错误X标志信息-第X行代码行号中存在变量X存在X异常信 息,则所述异常信息提醒为错误32768-第110行中的A变量存在未定义的问 题。
一些实施方式中,所述异常通知是指按照固定格式将代码行号、异常变 量、所述异常信息及异常标志组合生成的通知。
上述实施方式中,当确定异常代码后,可以基于异常代码、异常信息及 异常数据生成异常通知,以便基于异常通知对开发人员进行通知。
例如检测到代码行号555行有x、y以及z三个变量分别存在变量未定义, 变量重复定义以及全局域中使用局部变量的问题,所述变量标志信息分别为 32768,12668以及654,若采用固定格式为错误XX标志信息-第XX行代码行 号中存在变量XX存在XX异常信息,则所述异常信息提醒为错误32768-第 555行中的x变量存在未定义的问题。
当x变量异常处理完毕后,再次执行检测,则所述异常信息提醒为错误 12668-第555行中的y变量存在变量重复定义的问题。
当x变量与y变量的异常处理完毕以后,则所述异常信息提醒为错误654- 第555行中的z变量存在全局域中使用局部变量的问题。
一些实施方式中,所述异常标志是指一个用于检测代码异常的32位二进 制数,所述二进制数的每一位代表传每一种代码运行的异常状态。
对比检测执行完后,返回一个32位的2进制数。
若第i位是1,则确定第i+1个功能的所述代码运行正常。
若第i位是0,则确定第i+1个功能的所述代码运行存在异常。所述i是 大于等于0且小于32的整数。
上述实施方式中,以变量类型定义错误为例,所述2进制数的第0位代 表变量类型定义错误。执行完整个流程后,返回一个32位的2进制数来检测 各个功能的执行状态,若第0位是1,则变量类型定义正确,若第0位是0, 则变量类型定义错误,通过此方法判断变量类型定义是否存在问题。
一些实施方式中,所述规范种类至少包括:命名规范、声明规范、注释 规范、常量规范、bean定义规范、事务规范、脚本规范、日志规范、异常处 理规范、Junit规范、错误类规范、警告类规范及提示类规范中的一项。
上述实施方式中,通过以上规范,建立了变量的检查规则。例如变量重 复定义、变量没有初始化、字符变量类型无法使用以及变量没有定义等。所 述命名规范是指对函数命名,变量命名,文件命名,命名管理最重要的是一致 性规则;包括:项目名全部小写、包名全部小写、类名首字母大写、变量名、 方法名首字母小写、常量名全部大写;所述命名规则还包括:名称只能由字 母、数字、下划线、$符号组成、不能以数字开头、名称不能使用JAVA中的 关键字以及坚决不允许出现中文及拼音命名。所述注释规范包括版权注释、 类注释(Class)、构造函数注释(Constructor)、方法注释(Methods)、代码块注释 (Block)、单句注释以及字段名注释。所述bean定义规范包括类必须使用public 修饰、必须保证有公共无参数构造器、包含了属性的操作手段。所述Junit规 范包括:测试类的命名定义规范、测试用例的命名定义规范、测试程序的包 名定义规范以及变量的命名规范。
以测试程序的变量名均采用大小写混合的方式,第一个单词的首字母小 写,其后单词的首字母大写为例。例如:MaxValue、SetMobileBind以及 GetMobileBind等命名。当命名中出现不符合规则的,如maxValue中的maxValue 的max首字母并未大写,根据检查规则将max寻找出来并更改成MaxValue。
一些实施方式中,所述返回空集之后,所述方法还包括:
发出指示信息;所述指示信息用于指示所述JavaScript代码中的每个if语 句的检测结果。
上述实施方式中,可以指示异常的变量信息和异常的责任人,实现不同 异常信息传递给不同的责任人。例如第一异常的变量信息的责任人为A,第 二异常的变量信息责任人为B,通过配置将A的联系方式与第一异常的变量 信息配置在一起,以及通过配置将B的联系方式与第二异常的变量信息配置 在一起,从而完成了第一异常的变量信息,与A的联系方式的关联以及B的 联系方式与第二异常的变量信息的关联,当任务出错时,通过指示知道了具 体任务出错的责任人是谁,将更加高效的处理异常任务。
如图2所示的一种用于检测JavaScript代码的装置20的结构示意图,其可 应用于JavaScript代码检测。本申请实施例中的用于检测JavaScript代码的装置 能够实现对应于上述图1所对应的实施例中所执行的JavaScript代码检测的方 法的步骤。所述用于检测JavaScript代码的装置20实现的功能可以通过硬件实 现,也可以通过硬件执行相应的软件实现。硬件或软件包括一个或多个与上 述功能相对应的模块,所述模块可以是软件和/或硬件。所述用于检测JavaScript代码的装置可包括输入输出模块201和处理模块202,所述处理模块 202和输入输出模块201的功能实现可参考图1所对应的实施例中所执行的操作,此处不作赘述。输入输出模块201可用于控制所述输入输出模块201的输 入、输出以及获取操作。
一些实施方式中,所述输入输出模块201可用于获取JavaScript代码。
所述处理模块202可用于构建所述JavaScript代码对应的抽象语法树。所 述抽象语法树是通过语法分析器创建。所述语法分析器是指编译器或解释器 的组件,所述语法分析器用于语法检查,并根据所述JavaScript代码中的变量 来构建数据结构。通过自动化脚本查找JavaScript代码中的检查规则。所述检 查规则是指通过所述变量的适用场景、前提条件、规范种类以及判断标准进 行生成用于检测if语句中异常变量的规则。通过遍历所述抽象语法树中的if 语句,得到所述JavaScript代码的if语句。分别所述JavaScript代码中每一个if 语句中的变量设置标识信息。使用正则表达式以及所述检查规则对所述JavaScript代码中每一行if语句中的变量进行对比检测,以得到检测结果。
若所述检测结果为成功,通过所述输入输出模块201则返回一个数组并更 新所述正则表达式对象的属性和所述正则表达式对象。
或者,若所述检测结果为失败,通过所述输入输出模块201则返回空集并 发出异常通知。
一些实施方式中,所述处理模块202还用于:
循环遍历所述抽象语法树的所有对象,若通过Object.name判断与if字符 串相等,并且匹配数组中包含了if,则确定所述JavaScript代码中包含if语句。 所述数组用于存放所述JavaScript代码的状态。所述状态包括代码的属性。
查找所述JavaScript代码中if语句中是否存在变量,若查找到所述 JavaScript代码中if语句中存在变量,则判断所述if语句中包含变量,并标识 所述if语句。
一些实施方式中,所述变量标识信息包括以下至少一项:JavaScript的探 测标记变量赋值语句所属函数的函数名、所述JavaScript代码中的探测标记变 量赋值语句的行号、所述JavaScript代码中代码段的探测标记变量赋值语句所 属源文件的文件名。
一些实施方式中,所述异常通知是指按照固定格式将代码行号、异常变 量、所述异常信息及异常标志组合生成的通知。
一些实施方式中,所述异常标志是指一个用于检测代码异常的32位二进 制数,所述二进制数的每一位代表传每一种代码运行的异常状态。
所述处理模块202还用于:
对比检测执行完后,返回一个32位的2进制数。
若第i位是1,则确定第i+1个功能的所述代码运行正常。
若第i位是0,则确定第i+1个功能的所述代码运行存在异常。所述i是 大于等于0且小于32的整数。
一些实施方式中,所述规范种类至少包括:命名规范、声明规范、注释 规范、常量规范、bean定义规范、事务规范、脚本规范、日志规范、异常处 理规范、Junit规范、错误类规范、警告类规范及提示类规范中的一项。
一些实施方式中,所述处理模块202还用于:
发出指示信息;所述指示信息用于指示所述JavaScript代码中的每个if语 句的检测结果。
上面从模块化功能实体的角度分别介绍了本申请实施例中的创建装置, 以下从硬件角度介绍一种计算机设备,如图3所示,其包括:处理器、存储 器、输入输出单元(也可以是收发器,图3中未标识出)以及存储在所述存 储器中并可在所述处理器上运行的计算机程序。例如,该计算机程序可以为 图1所对应的实施例中JavaScript代码检测的方法对应的程序。例如,当计算 机设备实现如图2所示的用于检测JavaScript代码的装置20的功能时,所述处 理器执行所述计算机程序时实现上述图2所对应的实施例中由用于检测JavaScript代码的装置20执行的JavaScript代码检测的方法中的各步骤。或者, 所述处理器执行所述计算机程序时实现上述图2所对应的实施例的用于检测 JavaScript代码的装置20中各模块的功能。又例如,该计算机程序可以为图1 所对应的实施例中JavaScript代码检测的方法对应的程序。
所称处理器可以是中央处理单元(Central ProcessingUnit,CPU),还可以是 其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成 电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或 者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处 理器也可以是任何常规的处理器等,所述处理器是所述计算机装置的控制中 心,利用各种接口和线路连接整个计算机装置的各个部分。
所述存储器可用于存储所述计算机程序和/或模块,所述处理器通过运行 或执行存储在所述存储器内的计算机程序和/或模块,以及调用存储在存储器 内的数据,实现所述计算机装置的各种功能。所述存储器可主要包括存储程 序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需 的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储 根据手机的使用所创建的数据(比如音频数据、视频数据等)等。此外,存 储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(SmartMedia Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)、至少一个磁盘存储器件、闪存器件、 或其他易失性固态存储器件。
所述输入输出单元也可以用接收器和发送器代替,可以为相同或者不同 的物理实体。为相同的物理实体时,可以统称为输入输出单元。该输入输出 可以为收发器。
所述存储器可以集成在所述处理器中,也可以与所述处理器分开设置。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述 实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通 过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的 技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体 现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM)中,包括 若干指令用以使得一台终端(可以是手机,计算机,服务器或者网络设备等) 执行本申请各个实施例所述的方法。
上面结合附图对本申请的实施例进行了描述,但是本申请并不局限于上 述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的, 本领域的普通技术人员在本申请的启示下,在不脱离本申请宗旨和权利要求 所保护的范围情况下,还可做出很多形式,凡是利用本申请说明书及附图内 容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领 域,这些均属于本申请的保护之内。