论文部分内容阅读
软件重构技术可以消除软件系统中的CodeSmell,它的消除能够使软件使用的更久、更加可靠。软件重构在软件系统质量尤其是软件维护领域占据着重要地位,但其用户群却十分狭小,其中的关键原因在于软件重构前期工作,即CodeSmell的检测工作仍需人工完成,其低下的检测效率及低准确性在很大程度上限制了重构技术的发展应用。 本文对CodeSmell自动检测的研究是建立在对CodeSmell本身的分析和对软件度量理论的研究分析基础之上,通过对软件度量方法的扩展,并结合CodeSmell自身的表征给出了相应的检测方法。本文采用抽象语法树作为中间表示形式,利用自定义的SimpleCSParser从源代码中提取抽象语法树,并结合抽象语法树相关理论及相应的文法规则,遍历源代码抽象语法树,从中获取度量规则所需的度量信息。 随后,本文依次使用CodeSmell度量的描述、解释模板来得到相应CodeSmell的度量规则,这些度量规则主要源自对Martin Fowler关于CodeSmell原始的自然表述的剖析,并结合实际经验得到。这些度量规则主要服务于CodeSmell自动检测工具(CSADT),该工具会以插件的形式与Visual Studio 2010IDE的集成,这将有效保证使用它的便捷性,也能轻松的被广泛应用普及。CSADT是基于面向对象设计实现,并采用了一些经典的设计模式和编程技巧,确保其有效合理。通过它的应用最终将解决以往人工检测CodeSmell带来的问题。 最后,本文对CodeSmell自动检测工具CSADT的实现做了解析,包括整体框架搭建到最终的设计实现,尤其是对CSADT的CodeSmell检测和识别模块进行了相对详尽的解析。虽然本文仅仅给出了CSADT实现对3种CodeSmell的检测分析,但它本身的实现及其有效性证明了CodeSmell的实时自动检测是完全可行的,这是CodeSmell实时自动化检测工具的一次有益尝试。通过它以及类似它的工具的应用,必然能够给软件系统带来强有力的质量保障,促进软件系统的可持续稳定进化。