论文部分内容阅读
本文介绍了作者在疑问代码和不良习惯检测方面所做的工作,包括疑问代码模式收集、分析和检测,并对疑问代码中一类重要模式--重复代码模式提出和实现了一种参数化非连续重复代码检测方法。
疑问代码指那些令代码走查人员产生疑问、其运行时表现不同于预期、违反了良好的编程实践规则的代码。我们采用基于源码的静态分析技术构建了面向缺陷的静态分析工具DTS,通过构造源码的抽象语法树、控制流图以及编译时上下文等数据,跟踪发现各种缺陷模式所表现的特征。在实践中作者收集了涵盖C/C++和Java语言的多种疑问代码模式,对其产生原因和表现特征进行深入分析,并结合缺陷检测系统DTS实现对这些模式的检测,在实现过程中引入了别名分析、定义使用系列链分析等技术。重复代码的出现往往意味着设计不合理并令人产生疑问,作者对重复代码检测技术进行了深入研究,设计和实现了一种基于抽象语法树和上下文信息的检测方法。在该方法中,作者设计了一套哈希计算规则将基于树结构的比较化简为简单数值比较,降低了算法复杂度并能够进行灵活的参数化匹配,同时利用上下文信息以一种有效的方式决定搜索距离,最终实现参数化非连续重复代码检测,获得了较好的结果。