Report on the Differential Testing of Static Analyzers

G. Horváth, R. Kovács, Péter Szécsi
{"title":"Report on the Differential Testing of Static Analyzers","authors":"G. Horváth, R. Kovács, Péter Szécsi","doi":"10.14232/actacyb.282831","DOIUrl":null,"url":null,"abstract":"Program faults, best known as bugs, are practically unavoidable in today's ever growing software systems. One increasingly popular way of eliminating them, besides tests, dynamic analysis, and fuzzing, is using static analysis based bug-finding tools. Such tools are capable of finding surprisingly sophisticated bugs automatically by inspecting the source code. Their analysis is usually both unsound and incomplete, but still very useful in practice, as they can find non-trivial problems in a reasonable time (e.g. within hours, for an industrial project) without human intervention\n Because the problems that static analyzers try to solve are hard, usually intractable, they use various approximations that need to be fine-tuned in order to grant a good user experience (i.e. as many interesting bugs with as few distracting false alarms as possible). For each newly introduced heuristic, this normally happens by performing differential testing of the analyzer on a lot of widely used open source software projects that are known to use related language constructs extensively. In practice, this process is ad hoc, error-prone, poorly reproducible and its results are hard to share.\n We present a set of tools that aim to support the work of static analyzer developers by making differential testing easier. Our framework includes tools for automatic test suite selection, automated differential experiments, coverage information of increased granularity, statistics collection, metric calculations, and visualizations, all resulting in a convenient, shareable HTML report.","PeriodicalId":187125,"journal":{"name":"Acta Cybern.","volume":"200 1","pages":"0"},"PeriodicalIF":0.0000,"publicationDate":"2020-10-22","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":"3","resultStr":null,"platform":"Semanticscholar","paperid":null,"PeriodicalName":"Acta Cybern.","FirstCategoryId":"1085","ListUrlMain":"https://doi.org/10.14232/actacyb.282831","RegionNum":0,"RegionCategory":null,"ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":null,"EPubDate":"","PubModel":"","JCR":"","JCRName":"","Score":null,"Total":0}
引用次数: 3

Abstract

Program faults, best known as bugs, are practically unavoidable in today's ever growing software systems. One increasingly popular way of eliminating them, besides tests, dynamic analysis, and fuzzing, is using static analysis based bug-finding tools. Such tools are capable of finding surprisingly sophisticated bugs automatically by inspecting the source code. Their analysis is usually both unsound and incomplete, but still very useful in practice, as they can find non-trivial problems in a reasonable time (e.g. within hours, for an industrial project) without human intervention Because the problems that static analyzers try to solve are hard, usually intractable, they use various approximations that need to be fine-tuned in order to grant a good user experience (i.e. as many interesting bugs with as few distracting false alarms as possible). For each newly introduced heuristic, this normally happens by performing differential testing of the analyzer on a lot of widely used open source software projects that are known to use related language constructs extensively. In practice, this process is ad hoc, error-prone, poorly reproducible and its results are hard to share. We present a set of tools that aim to support the work of static analyzer developers by making differential testing easier. Our framework includes tools for automatic test suite selection, automated differential experiments, coverage information of increased granularity, statistics collection, metric calculations, and visualizations, all resulting in a convenient, shareable HTML report.
查看原文
分享 分享
微信好友 朋友圈 QQ好友 复制链接
本刊更多论文
静态分析仪差分试验报告
程序错误,也就是众所周知的bug,在当今不断发展的软件系统中几乎是不可避免的。除了测试、动态分析和模糊测试之外,一种日益流行的消除bug的方法是使用基于静态分析的bug查找工具。这些工具能够通过检查源代码自动发现令人惊讶的复杂错误。他们的分析通常既不健全又不完整,但在实践中仍然非常有用,因为他们可以在合理的时间内(例如,在几个小时内,对于一个工业项目)发现不重要的问题,而无需人工干预。因为静态分析器试图解决的问题很难,通常是棘手的,他们使用各种需要微调的近似,以提供良好的用户体验(即尽可能多的有趣的bug和尽可能少的分散注意力的假警报)。对于每一个新引入的启发式,这通常是通过在许多广泛使用的开源软件项目上执行分析器的差异测试来实现的,这些项目已知广泛使用相关的语言结构。在实践中,这个过程是临时的、容易出错的、可重复性差的,而且其结果很难共享。我们提供了一组工具,旨在通过简化差异测试来支持静态分析器开发人员的工作。我们的框架包括用于自动测试套件选择、自动差异实验、增加粒度的覆盖信息、统计数据收集、度量计算和可视化的工具,所有这些都会产生一个方便的、可共享的HTML报告。
本文章由计算机程序翻译,如有差异,请以英文原文为准。
求助全文
约1分钟内获得全文 去求助
来源期刊
自引率
0.00%
发文量
0
期刊最新文献
Proving the Stability of the Rolling Navigation Inverses of Rational Functions Quantification of Time-Domain Truncation Errors for the Reinitialization of Fractional Integrators On Some Convergence Properties for Finite Element Approximations to the Inverse of Linear Elliptic Operators The Inventory Control Problem for a Supply Chain With a Mixed Type of Demand Uncertainty
×
引用
GB/T 7714-2015
复制
MLA
复制
APA
复制
导出至
BibTeX EndNote RefMan NoteFirst NoteExpress
×
×
提示
您的信息不完整,为了账户安全,请先补充。
现在去补充
×
提示
您因"违规操作"
具体请查看互助需知
我知道了
×
提示
现在去查看 取消
×
提示
确定
0
微信
客服QQ
Book学术公众号 扫码关注我们
反馈
×
意见反馈
请填写您的意见或建议
请填写您的手机或邮箱
已复制链接
已复制链接
快去分享给好友吧!
我知道了
×
扫码分享
扫码分享
Book学术官方微信
Book学术文献互助
Book学术文献互助群
群 号:481959085
Book学术
文献互助 智能选刊 最新文献 互助须知 联系我们:info@booksci.cn
Book学术提供免费学术资源搜索服务,方便国内外学者检索中英文文献。致力于提供最便捷和优质的服务体验。
Copyright © 2023 Book学术 All rights reserved.
ghs 京公网安备 11010802042870号 京ICP备2023020795号-1