理解与检测静态分析器的注解诱发故障
软件工程
2024-02-23 v1
摘要
静态分析器能够在不执行程序的情况下推理程序的属性和行为,并检测各种问题。因此,它们应提取必要信息以充分理解被分析的程序。自Java 5引入以来,注解已成为Java中广泛使用的特性,用于不同目的。注解可以在静态分析器不知情的情况下改变程序结构并传递语义信息,从而导致分析结果不精确。本文通过分析六个开源流行静态分析器(即PMD、SpotBugs、CheckStyle、Infer、SonarQube和Soot)中的246个问题,首次对注解诱发故障进行了全面研究。我们分析了问题的根本原因、症状和修复策略,得出了十项发现以及一些检测和修复注解诱发故障的实用指南。此外,我们基于这些发现中的三条蜕变关系,开发了一个名为AnnaTester的自动化测试框架。AnnaTester基于静态分析器的官方测试套件生成新测试,并揭示了43个新故障,其中20个已被修复。结果证实了本研究及其发现的价值。
引用
@article{arxiv.2402.14366,
title = {Understanding and Detecting Annotation-Induced Faults of Static Analyzers},
author = {Huaien Zhang and Yu Pei and Shuyun Liang and Shin Hwei Tan},
journal= {arXiv preprint arXiv:2402.14366},
year = {2024}
}
备注
23 pages, 16 figures