论文部分内容阅读
随着软件规模的不断扩大,软件故障诊断的难度也随之提升。软件日志记录软件运行时信息,在软件故障诊断中占据重要地位。但开源软件的日志质量参差不齐。一方面,日志开发缺少完善的规范,开发者往往依据个人经验和主观认识来进行日志决策。另一方面,日志代码会随软件演化中的故障诊断或功能更新而演化。现有工作往往从单一版本的软件中挖掘日志开发经验,忽略了软件演化中蕴含的日志管理知识,无法有效解决第二类问题。为此,本课题计划从软件演化的角度出发,指导日志修改。受代码克隆启发,课题调研了开源软件的日志演化特征,发现上下文相似的日志其修改行为也相似。基于该结论,本课题实现了一款自动化工具:LogTracker。LogTracker挖掘日志上下文和修改行为之间的关联关系,并基于学习的规则,自动检测日志缺陷,推荐合适的语法修改。综上,全文的主要工作如下:1.调研Httpd、Git、Postfix、Collectd等开源软件的日志演化特征。调研结果表明开源软件中平均有54.1%的日志修改包含相似的修改行为,其中67.0%是由上下文相似导致的。另外,课题发现平均80.3%上下文相似的日志修改包含相似的修改行为。上述结论表明上下文相似的日志往往经历相似的日志修改行为。2.基于调研结论,本课题设计了自动化工具LogTracker。该工具自动挖掘日志上下文与日志修改行为之间的关联关系,即日志修改规则。在八款调研软件中,LogTracker成功挖掘到1432条规则,这些规则涉及的日志修改类型多样。为准确描述日志上下文语义,课题提出的LCDM算法,改进了现有的代码上下文描述算法,利用关联函数表达日志上下文语义。实验结果表明LCDM算法的准确性较现有算法提升了12.4%。3.基于挖掘的日志修改规则,LogTracker可以自动定位代码内的日志缺陷,并为其推荐语法修改。实验结果表明,LogTracker定位日志缺陷的平均准确率为98.7%,且所推荐语法修改的准确率达到了86.5%。此外,LogTracker在调研的八款软件的最新版本中,检测到295条日志缺陷。目前,已经向开发者提交了43条,其中31条被接受。