论文部分内容阅读
在软件编写过程中,开发人员不良的开发习惯以及经验不足等原因,他们单纯为实现功能而编写代码,忽视程序的结构性和可读性。代码编写上变得越来越混乱,使得整个代码结构变得臃肿不堪。代码异味会造成代码质量下降,会对软件开发人员在理解和维护项目代码时造成困扰,从而产生不必要的维护代价。目前对于代码异味的研究,大多数研究数据都集中在数种特定的代码异味上,很多种代码异味并未引起足够的重视;以及检测工具对代码异味的检测精度并不高。为找出代码异味检测工具究竟能支持检测哪些代码异味,同时尝试支持检测尽可能多种类的代码异味,并提高检测工具的检测精度,以及探索代码异味检测工具能否适用于对工业型项目的检测。本研究做了如下工作:(1)对代码异味进行系统文献审阅研究。通过电子检索,手工检索,滚雪球检索以及质量评估,总共收集到286篇与代码异味相关论文,然后把这些论文整理成数据记录。通过统计分析论文中的数据,我们发现对于代码异味-重复代码,巨类等易于定量分析的代码异味,支持其检测的工具较多,对于代码异味-慵懒类等不易于定量分析代码异味;第二,实验类的论文中选用的软件系统几乎都是实验室类型的,较少工业型项目。(2)本研究提出新的检测工具:DT。DT主要运用两种检测思想:动态规化算法DT和抽象语法树AST。动态规划算法主要运用于代码异味-重复代码的检测,利用求最长公共子序列的方法求得代码行之间的相似度来判定代码行之间是否存在重复代码倾向;抽象语法树AST运用于其他种类代码异味的检测,AST运用树结构来表示源代码,把源代码中的语法结构分解成一个个的树状节点,通过统计分析这些节点的存在情况来判定是否存在代码异味。(3)进行综合性实验。利用本研究提出的检测工具DT,能检测到10种代码异味;同时检测工具DT跟四种著名检测工具Checkstyle,PMD,JDeodorant和iPlasma相比,检测精度比它们更高;另外与DT进行对比的四种著名检测工具无法支持对工业型项目的检测,而检测工具DT可支持对工业型项目的检测。