Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
article

Understanding source code evolution using abstract syntax tree matching

Published: 17 May 2005 Publication History
  • Get Citation Alerts
  • Abstract

    Mining software repositories at the source code level can provide a greater understanding of how software evolves. We present a tool for quickly comparing the source code of different versions of a C program. The approach is based on partial abstract syntax tree matching, and can track simple changes to global variables, types and functions. These changes can characterize aspects of software evolution useful for answering higher level questions. In particular, we consider how they could be used to inform the design of a dynamic software updating system. We report results based on measurements of various versions of popular open source programs. including BIND, OpenSSH, Apache, Vsftpd and the Linux kernel.

    References

    [1]
    S. Horwitz. Identifying the semantic and textual differences between two versions of a program. In Proceedings of the ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI), pages 234--245, June 1990.
    [2]
    D. Jackson and D. A. Ladd. Semantic diff: A tool for summarizing the effects of modifications. In Proceedings of the IEEE International Conference on Software Maintenance (ICSM), pages 243--252, Sept. 1994.
    [3]
    G. C. Necula, S. McPeak, S. P. Rahul, and W. Weimer. CIL: Intermediate Language and Tools for Analysis and Transformation of C Programs. Lecture Notes in Computer Science, 2304:213--228, 2002.
    [4]
    G. Stoyle, M. Hicks, G. Bierman, P. Sewell, and I. Neamtiu. Mutatis Mutandis: Safe and flexible dynamic software updating. In Proceedings of the ACM SIGPLAN/SIGACT Conference on Principles of Programming Languages (POPL), pages 183--194, January 2005.
    [5]
    W. Yang. Identifying Syntactic differences Between Two Programs. Software - Practice and Experience, 21(7):739--755, 1991.
    [6]
    E. Yourdon and L. L. Constantine. Structured Design, 2nd Ed. Yourdon Press, New York, 1979.

    Cited By

    View all
    • (2024)Explaining Edits to Variability Annotations in Evolving Software Product LinesProceedings of the 18th International Working Conference on Variability Modelling of Software-Intensive Systems10.1145/3634713.3634725(93-102)Online publication date: 7-Feb-2024
    • (2024)Meta-Path Based Attentional Graph Learning Model for Vulnerability DetectionIEEE Transactions on Software Engineering10.1109/TSE.2023.334026750:3(360-375)Online publication date: Mar-2024
    • (2024)SGT: Aging-related bug prediction via semantic feature learning based on graph-transformerJournal of Systems and Software10.1016/j.jss.2024.112156217(112156)Online publication date: Nov-2024
    • Show More Cited By

    Index Terms

    1. Understanding source code evolution using abstract syntax tree matching

        Recommendations

        Comments

        Information & Contributors

        Information

        Published In

        cover image ACM SIGSOFT Software Engineering Notes
        ACM SIGSOFT Software Engineering Notes  Volume 30, Issue 4
        July 2005
        1514 pages
        ISSN:0163-5948
        DOI:10.1145/1082983
        Issue’s Table of Contents
        • cover image ACM Other conferences
          MSR '05: Proceedings of the 2005 international workshop on Mining software repositories
          May 2005
          109 pages
          ISBN:1595931236
          DOI:10.1145/1083142
        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: 17 May 2005
        Published in SIGSOFT Volume 30, Issue 4

        Check for updates

        Author Tags

        1. abstract syntax trees
        2. software evolution
        3. source code analysis

        Qualifiers

        • Article

        Contributors

        Other Metrics

        Bibliometrics & Citations

        Bibliometrics

        Article Metrics

        • Downloads (Last 12 months)186
        • Downloads (Last 6 weeks)15
        Reflects downloads up to 10 Aug 2024

        Other Metrics

        Citations

        Cited By

        View all
        • (2024)Explaining Edits to Variability Annotations in Evolving Software Product LinesProceedings of the 18th International Working Conference on Variability Modelling of Software-Intensive Systems10.1145/3634713.3634725(93-102)Online publication date: 7-Feb-2024
        • (2024)Meta-Path Based Attentional Graph Learning Model for Vulnerability DetectionIEEE Transactions on Software Engineering10.1109/TSE.2023.334026750:3(360-375)Online publication date: Mar-2024
        • (2024)SGT: Aging-related bug prediction via semantic feature learning based on graph-transformerJournal of Systems and Software10.1016/j.jss.2024.112156217(112156)Online publication date: Nov-2024
        • (2023)Roadmap to Reasoning in Microservice Systems: A Rapid ReviewApplied Sciences10.3390/app1303183813:3(1838)Online publication date: 31-Jan-2023
        • (2023)PACE: A Program Analysis Framework for Continuous Performance PredictionACM Transactions on Software Engineering and Methodology10.1145/363723033:4(1-23)Online publication date: 14-Dec-2023
        • (2023)Using expression parsing and algebraic operations to generate test sequences.Journal of Systems and Software10.1016/j.jss.2023.111798204(111798)Online publication date: Oct-2023
        • (2023)Typical Contract Graph Feature Enhanced Smart Contract Vulnerability DetectionPattern Recognition10.1007/978-3-031-47637-2_5(59-73)Online publication date: 5-Nov-2023
        • (2023)Advising OpenMP Parallelization via A Graph-Based Approach with TransformersOpenMP: Advanced Task-Based, Device and Compiler Programming10.1007/978-3-031-40744-4_1(3-17)Online publication date: 13-Sep-2023
        • (2022)Graph neural networks based memory inefficiency detection using selective samplingProceedings of the International Conference on High Performance Computing, Networking, Storage and Analysis10.5555/3571885.3571998(1-14)Online publication date: 13-Nov-2022
        • (2022)Inspect4pyProceedings of the 19th International Conference on Mining Software Repositories10.1145/3524842.3528497(232-236)Online publication date: 23-May-2022
        • Show More Cited By

        View Options

        Get Access

        Login options

        View options

        PDF

        View or Download as a PDF file.

        PDF

        eReader

        View online with eReader.

        eReader

        Media

        Figures

        Other

        Tables

        Share

        Share

        Share this Publication link

        Share on social media