ABSTRACT
One of the major drawbacks of traditional automatic program repair (APR) techniques is their dependence on a test suite as a repair specification. In practice, it is often hard to obtain specification-quality test suites. This limits the performance and hence the viability of such test-suite-based approaches. On the other hand, static-analysis-based bug finding tools are increasingly being adopted in industry but still facing challenges since the reported violations are viewed as not easily actionable. In previous work, we proposed a novel technique that solves both these challenges through a technique for automatically generating high-quality patches for static analysis violations by learning from previous repair examples. In this paper, we present a tool Phoenix, implementing this technique. We describe the architecture, user interfaces, and salient features of Phoenix, and specific practical use cases of its technology. A video demonstrating Phoenix is available at https://phoenix-tool.github.io/demo-video.html.
- Nathaniel Ayewah, David Hovemeyer, J. David Morgenthaler, John Penix, and William Pugh. 2008. Using Static Analysis to Find Bugs. IEEE Software '08 (2008).Google ScholarDigital Library
- Johannes Bader, Andrew Scott, Michael Pradel, and Satish Chandra. 2019. Getafix: Learning to Fix Bugs Automatically. OOPSLA '19 (2019), 159:1--159:27.Google ScholarDigital Library
- T. Barik et al. 2016. From Quick Fixes to Slow Fixes: Reimagining Static Analysis Resolutions to Enable Design Space Exploration. In ICSME '16.Google ScholarCross Ref
- Rohan Bavishi, Hiroaki Yoshida, and Mukul R. Prasad. 2019. Phoenix: Automated Data-driven Synthesis of Repairs for Static Analysis Violations. In ESEC/FSE '19. 613--624. Google ScholarDigital Library
- Cristiano Calcagno and Dino Distefano. 2011. Infer: An Automatic Program Verifier for Memory Safety of C Programs. In NFM '11. 459--465.Google Scholar
- DARPA. 2014. Mining big code to improve software reliability and construction. https://www.darpa.mil/news-events/2014-03-06a.Google Scholar
- Jean-Rémy Fallen, Floréal Morandat, Xavier Blanc, et al. 2014. Fine-grained and Accurate Source Code Differencing. In ASE '14. 313--324.Google Scholar
- L. Gazzola, D. Micucci, and L. Mariani. 2018. Automatic Software Repair: A Survey. IEEE Transactions on Software Engineering (2018), 1--1.Google Scholar
- Google. 2017. Error Prone, https://errorprone.info/.Google Scholar
- Claire Le Goues et al. 2012. A Systematic Study of Automated Program Repair: Fixing 55 out of 105 Bugs for $8 Each. In ICSE '12. 3--13.Google Scholar
- Eclipse IDE. 2018. Java Editor Quickfix. https://help.eclipse.org/neon/topic/org.eclipse.jdt.doc.user/reference/ref-java-editor-quickfix.htm.Google Scholar
- JetBrains. 2018. IntelliJ Quick Fixes, https://www.jetbrains.com/resharper/features/quick_fixes.html.Google Scholar
- K. Liu, D. Kim, T. F. Bissyande, S. Yoo, and Y. Le Traon. 2018. Mining Fix Patterns for FindBugs Violations. IEEE Transactions on Software Engineering (2018).Google ScholarDigital Library
- Microsoft. 2018. Visual Studio - Common Quick Actions. https://docs.microsoft.com/en-us/visualstudio/ide/common-quick-actions.Google Scholar
- Martin Monperrus. 2018. Automatic Software Repair: A Bibliography. Comput. Surveys 51, 1, Article 17 (Jan. 2018), 24 pages.Google Scholar
- Hoang Duong Thien Nguyen, Dawei Qi, Abhik Roychoudhury, and Satish Chandra. 2013. SemFix: Program Repair via Semantic Analysis. In ICSE '13. 772--781.Google Scholar
- Oleksandr Polozov and Sumit Gulwani. 2015. FlashMeta: A Framework for Inductive Program Synthesis. In OOPSLA 2015.Google Scholar
- Rijnard van Tonder and Claire Le Goues. 2018. Static Automated Program Repair for Heap Properties. In ICSE '18. 151--162.Google Scholar
Index Terms
- Phoenix: a tool for automated data-driven synthesis of repairs for static analysis violations
Recommendations
Phoenix: automated data-driven synthesis of repairs for static analysis violations
ESEC/FSE 2019: Proceedings of the 2019 27th ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software EngineeringTraditional automatic program repair (APR) tools rely on a test-suite as a repair specification. But test suites even when available are not of specification quality, limiting the performance and hence viability of test-suite based repair. On the other ...
Angelix: scalable multiline program patch synthesis via symbolic analysis
ICSE '16: Proceedings of the 38th International Conference on Software EngineeringSince debugging is a time-consuming activity, automated program repair tools such as GenProg have garnered interest. A recent study revealed that the majority of GenProg repairs avoid bugs simply by deleting functionality. We found that SPR, a state-of-...
Program Repair Guided by Datalog-Defined Static Analysis
ESEC/FSE 2023: Proceedings of the 31st ACM Joint European Software Engineering Conference and Symposium on the Foundations of Software EngineeringAutomated program repair relying on static analysis complements test-driven repair, since it does not require failing tests to repair a bug, and it avoids test-overfitting by considering program properties. Due to the rich variety and complexity of ...
Comments