{"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}
引用次数: 0
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.