检测JavaScript 类的内聚耦合Code Smell∗

2021-11-09 02:45:50黄子杰陈军华高建华
软件学报 2021年8期
关键词:文本结构分析

黄子杰 ,陈军华 ,高建华

1(上海师范大学 计算机科学与技术系,上海 200234)

2(华东理工大学 计算机科学与工程系,上海 200237)

JavaScript(简称JS)是一种使用弱类型和动态类型的解释型编程语言,JS 程序的结构和变量类型在运行时才会明确,因此,大量为Java 等强类型语言设计的静态分析手段难以奏效,导致其代码质量缺乏工具保障.同时,它还包含诸多增强语言灵活度(flexibility)的特性,例如原型链、闭包、头等函数等,它们形成了复杂的代码组件继承、组合方式.因此,编写JS 程序颇具挑战性,期间易产生Code Smell 和Bug[1,2].

Code Smell 是软件程序中存在不良设计和不良实现的征兆[3],其强度可由度量指标(metric)量化.正确地检测和量化Code Smell 可以指导软件重构,提高软件的可用性和可靠性.

然而,现有Code Smell 度量不足以理解JS 程序的复杂性和程序质量,常见的Code Smell 度量很少被JS 相关的研究使用[4],需对其进行开发或改进,以适应JS.目前已出现面向JS 的Code Smell 检测工具,例如SonarQube,JSNose[1],它们仅面向微观层面上(即函数、语句)的内聚或耦合问题.

JSNose 主要讨论了函数、代码块及对象内部的Code Smell,并引入了3 种通用类Code Smell 的检测方式来检测对象内部的问题,例如过大对象和不当的继承,但研究不涉及多个对象间的设计问题.研究还提及了一种文件层面的Code Smell,它面向JS,HTML 和CSS 这3 种语言在代码中混写的耦合问题.Saboury 等人[5]根据语言标准的新变化,扩充并修正了JSNose 的定义,此类修正主要发生在语法和语句层面上,涉及作用域和闭包等问题.该研究还就Code Smell 对JS 代码易错性(fault-proneness)的影响排序,结果显示……

登录APP查看全文

猜你喜欢
文本结构分析
《形而上学》△卷的结构和位置
哲学评论(2021年2期)2021-08-22 01:53:34
隐蔽失效适航要求符合性验证分析
论结构
中华诗词(2019年7期)2019-11-25 01:43:04
在808DA上文本显示的改善
电力系统不平衡分析
电子制作(2018年18期)2018-11-14 01:48:24
基于doc2vec和TF-IDF的相似文本识别
电子制作(2018年18期)2018-11-14 01:48:06
电力系统及其自动化发展趋势分析
论《日出》的结构
文本之中·文本之外·文本之上——童话故事《坐井观天》的教学隐喻
创新治理结构促进中小企业持续成长
现代企业(2015年9期)2015-02-28 18:56:50