ProPy:基于prolog的Python故障定位工具

Janneke Morin, Krishnendu Ghosh
{"title":"ProPy:基于prolog的Python故障定位工具","authors":"Janneke Morin, Krishnendu Ghosh","doi":"10.1109/saner53432.2022.00137","DOIUrl":null,"url":null,"abstract":"Fault localization involves determining the root location of a program fault. The quicker and more accurately a fault is located, the easier it is to address. Hence, the software development cycle reaps the benefits of improvements in the efficiency, effectiveness, and speed of the fault localization process. Fault localization techniques developed through research often involve running a set of test cases on the program in question, then comparing their expected and actual results. By examining which statements of the program were executed in successful versus unsuccessful test cases, then extract insight into the “suspiciousness” of areas of the program. Many of the tools that execute these techniques are written in imperative programming languages that are not powerful enough to support recursively-called functions such as transitive closure at scale. Our research explores the utility of declarative programming languages in the fault localization problem as they are known to support efficient, built-in functions for such recursive actions. Specifically, we build upon existing work by combining the use of the declarative language Prolog with analyzing communities detected from Python control flow graphs. The source code is available at https://github.com/jannekemorin/new-leaf.","PeriodicalId":437520,"journal":{"name":"2022 IEEE International Conference on Software Analysis, Evolution and Reengineering (SANER)","volume":"33 1","pages":"0"},"PeriodicalIF":0.0000,"publicationDate":"2022-03-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":"0","resultStr":"{\"title\":\"ProPy: Prolog-based Fault Localization Tool for Python\",\"authors\":\"Janneke Morin, Krishnendu Ghosh\",\"doi\":\"10.1109/saner53432.2022.00137\",\"DOIUrl\":null,\"url\":null,\"abstract\":\"Fault localization involves determining the root location of a program fault. The quicker and more accurately a fault is located, the easier it is to address. Hence, the software development cycle reaps the benefits of improvements in the efficiency, effectiveness, and speed of the fault localization process. Fault localization techniques developed through research often involve running a set of test cases on the program in question, then comparing their expected and actual results. By examining which statements of the program were executed in successful versus unsuccessful test cases, then extract insight into the “suspiciousness” of areas of the program. Many of the tools that execute these techniques are written in imperative programming languages that are not powerful enough to support recursively-called functions such as transitive closure at scale. Our research explores the utility of declarative programming languages in the fault localization problem as they are known to support efficient, built-in functions for such recursive actions. Specifically, we build upon existing work by combining the use of the declarative language Prolog with analyzing communities detected from Python control flow graphs. The source code is available at https://github.com/jannekemorin/new-leaf.\",\"PeriodicalId\":437520,\"journal\":{\"name\":\"2022 IEEE International Conference on Software Analysis, Evolution and Reengineering (SANER)\",\"volume\":\"33 1\",\"pages\":\"0\"},\"PeriodicalIF\":0.0000,\"publicationDate\":\"2022-03-01\",\"publicationTypes\":\"Journal Article\",\"fieldsOfStudy\":null,\"isOpenAccess\":false,\"openAccessPdf\":\"\",\"citationCount\":\"0\",\"resultStr\":null,\"platform\":\"Semanticscholar\",\"paperid\":null,\"PeriodicalName\":\"2022 IEEE International Conference on Software Analysis, Evolution and Reengineering (SANER)\",\"FirstCategoryId\":\"1085\",\"ListUrlMain\":\"https://doi.org/10.1109/saner53432.2022.00137\",\"RegionNum\":0,\"RegionCategory\":null,\"ArticlePicture\":[],\"TitleCN\":null,\"AbstractTextCN\":null,\"PMCID\":null,\"EPubDate\":\"\",\"PubModel\":\"\",\"JCR\":\"\",\"JCRName\":\"\",\"Score\":null,\"Total\":0}","platform":"Semanticscholar","paperid":null,"PeriodicalName":"2022 IEEE International Conference on Software Analysis, Evolution and Reengineering (SANER)","FirstCategoryId":"1085","ListUrlMain":"https://doi.org/10.1109/saner53432.2022.00137","RegionNum":0,"RegionCategory":null,"ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":null,"EPubDate":"","PubModel":"","JCR":"","JCRName":"","Score":null,"Total":0}
引用次数: 0

摘要

故障定位包括确定程序故障的根位置。故障定位得越快、越准确,就越容易解决。因此,软件开发周期从故障定位过程的效率、有效性和速度的改进中获益。通过研究开发的故障定位技术通常涉及在有问题的程序上运行一组测试用例,然后比较它们的预期结果和实际结果。通过检查程序的哪些语句在成功和不成功的测试用例中执行,然后提取对程序的“可疑”区域的洞察力。执行这些技术的许多工具都是用命令式编程语言编写的,它们不够强大,无法大规模支持递归调用的函数,比如传递闭包。我们的研究探索了声明性编程语言在故障定位问题中的效用,因为它们为这种递归操作支持高效的内置函数。具体来说,我们将声明性语言Prolog的使用与从Python控制流图中检测到的社区分析结合起来,以此来构建现有的工作。源代码可从https://github.com/jannekemorin/new-leaf获得。
本文章由计算机程序翻译,如有差异,请以英文原文为准。
ProPy: Prolog-based Fault Localization Tool for Python
Fault localization involves determining the root location of a program fault. The quicker and more accurately a fault is located, the easier it is to address. Hence, the software development cycle reaps the benefits of improvements in the efficiency, effectiveness, and speed of the fault localization process. Fault localization techniques developed through research often involve running a set of test cases on the program in question, then comparing their expected and actual results. By examining which statements of the program were executed in successful versus unsuccessful test cases, then extract insight into the “suspiciousness” of areas of the program. Many of the tools that execute these techniques are written in imperative programming languages that are not powerful enough to support recursively-called functions such as transitive closure at scale. Our research explores the utility of declarative programming languages in the fault localization problem as they are known to support efficient, built-in functions for such recursive actions. Specifically, we build upon existing work by combining the use of the declarative language Prolog with analyzing communities detected from Python control flow graphs. The source code is available at https://github.com/jannekemorin/new-leaf.
求助全文
通过发布文献求助,成功后即可免费获取论文全文。 去求助
来源期刊
自引率
0.00%
发文量
0
×
引用
GB/T 7714-2015
复制
MLA
复制
APA
复制
导出至
BibTeX EndNote RefMan NoteFirst NoteExpress
×
提示
您的信息不完整,为了账户安全,请先补充。
现在去补充
×
提示
您因"违规操作"
具体请查看互助需知
我知道了
×
提示
确定
请完成安全验证×
copy
已复制链接
快去分享给好友吧!
我知道了
右上角分享
点击右上角分享
0
联系我们:info@booksci.cn Book学术提供免费学术资源搜索服务,方便国内外学者检索中英文文献。致力于提供最便捷和优质的服务体验。 Copyright © 2023 布克学术 All rights reserved.
京ICP备2023020795号-1
ghs 京公网安备 11010802042870号
Book学术文献互助
Book学术文献互助群
群 号:604180095
Book学术官方微信