skip to main content
10.1145/3377812.3382150acmconferencesArticle/Chapter ViewAbstractPublication PagesicseConference Proceedingsconference-collections
demonstration

Phoenix: a tool for automated data-driven synthesis of repairs for static analysis violations

Published:01 October 2020Publication History

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.

References

  1. Nathaniel Ayewah, David Hovemeyer, J. David Morgenthaler, John Penix, and William Pugh. 2008. Using Static Analysis to Find Bugs. IEEE Software '08 (2008).Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. Johannes Bader, Andrew Scott, Michael Pradel, and Satish Chandra. 2019. Getafix: Learning to Fix Bugs Automatically. OOPSLA '19 (2019), 159:1--159:27.Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. T. Barik et al. 2016. From Quick Fixes to Slow Fixes: Reimagining Static Analysis Resolutions to Enable Design Space Exploration. In ICSME '16.Google ScholarGoogle ScholarCross RefCross Ref
  4. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  5. Cristiano Calcagno and Dino Distefano. 2011. Infer: An Automatic Program Verifier for Memory Safety of C Programs. In NFM '11. 459--465.Google ScholarGoogle Scholar
  6. DARPA. 2014. Mining big code to improve software reliability and construction. https://www.darpa.mil/news-events/2014-03-06a.Google ScholarGoogle Scholar
  7. 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 ScholarGoogle Scholar
  8. L. Gazzola, D. Micucci, and L. Mariani. 2018. Automatic Software Repair: A Survey. IEEE Transactions on Software Engineering (2018), 1--1.Google ScholarGoogle Scholar
  9. Google. 2017. Error Prone, https://errorprone.info/.Google ScholarGoogle Scholar
  10. 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 ScholarGoogle Scholar
  11. Eclipse IDE. 2018. Java Editor Quickfix. https://help.eclipse.org/neon/topic/org.eclipse.jdt.doc.user/reference/ref-java-editor-quickfix.htm.Google ScholarGoogle Scholar
  12. JetBrains. 2018. IntelliJ Quick Fixes, https://www.jetbrains.com/resharper/features/quick_fixes.html.Google ScholarGoogle Scholar
  13. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  14. Microsoft. 2018. Visual Studio - Common Quick Actions. https://docs.microsoft.com/en-us/visualstudio/ide/common-quick-actions.Google ScholarGoogle Scholar
  15. Martin Monperrus. 2018. Automatic Software Repair: A Bibliography. Comput. Surveys 51, 1, Article 17 (Jan. 2018), 24 pages.Google ScholarGoogle Scholar
  16. Hoang Duong Thien Nguyen, Dawei Qi, Abhik Roychoudhury, and Satish Chandra. 2013. SemFix: Program Repair via Semantic Analysis. In ICSE '13. 772--781.Google ScholarGoogle Scholar
  17. Oleksandr Polozov and Sumit Gulwani. 2015. FlashMeta: A Framework for Inductive Program Synthesis. In OOPSLA 2015.Google ScholarGoogle Scholar
  18. Rijnard van Tonder and Claire Le Goues. 2018. Static Automated Program Repair for Heap Properties. In ICSE '18. 151--162.Google ScholarGoogle Scholar

Index Terms

  1. Phoenix: a tool for automated data-driven synthesis of repairs for static analysis violations

        Recommendations

        Comments

        Login options

        Check if you have access through your login credentials or your institution to get full access on this article.

        Sign in
        • Published in

          cover image ACM Conferences
          ICSE '20: Proceedings of the ACM/IEEE 42nd International Conference on Software Engineering: Companion Proceedings
          June 2020
          357 pages
          ISBN:9781450371223
          DOI:10.1145/3377812

          Copyright © 2020 Owner/Author

          Permission to make digital or hard copies of part or all of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for third-party components of this work must be honored. For all other uses, contact the Owner/Author.

          Publisher

          Association for Computing Machinery

          New York, NY, United States

          Publication History

          • Published: 1 October 2020

          Check for updates

          Qualifiers

          • demonstration

          Acceptance Rates

          Overall Acceptance Rate276of1,856submissions,15%

          Upcoming Conference

          ICSE 2025

        PDF Format

        View or Download as a PDF file.

        PDF

        eReader

        View online with eReader.

        eReader