• DocumentCode
    2442531
  • Title

    Build code analysis with symbolic evaluation

  • Author

    Tamrawi, Ahmed ; Nguyen, Hoan Anh ; Nguyen, Hung Viet ; Nguyen, Tien N.

  • Author_Institution
    Electr. & Comput. Eng. Dept., Iowa State Univ., Ames, IA, USA
  • fYear
    2012
  • fDate
    2-9 June 2012
  • Firstpage
    650
  • Lastpage
    660
  • Abstract
    Build process is crucial in software development. However, the analysis support for build code is still limited. In this paper, we present SYMake, an infrastructure and tool for the analysis of build code in make. Due to the dynamic nature of make language, it is challenging to understand and maintain complex Makefiles. SYMake provides a symbolic evaluation algorithm that processes Makefiles and produces a symbolic dependency graph (SDG), which represents the build dependencies (i.e. rules) among files via commands. During the symbolic evaluation, for each resulting string value in an SDG that represents a part of a file name or a command in a rule, SYMake provides also an acyclic graph (called T-model) to represent its symbolic evaluation trace. We have used SYMake to develop algorithms and a tool 1) to detect several types of code smells and errors in Makefiles, and 2) to support build code refactoring, e.g. renaming a variable/target even if its name is fragmented and built from multiple substrings. Our empirical evaluation for SYMake´s renaming on several real-world systems showed its high accuracy in entity renaming. Our controlled experiment showed that with SYMake, developers were able to understand Makefiles better and to detect more code smells as well as to perform refactoring more accurately.
  • Keywords
    graph theory; software maintenance; Makefiles; SDG; SYMake; acyclic graph; build code analysis; build process; code error detection; code refactoring; code smell detection; software development; symbolic dependency graph; symbolic evaluation; symbolic evaluation algorithm; symbolic evaluation trace; Concrete; Linux; Maintenance engineering; Protocols; Reactive power; Servers; build code analysis; build code maintenance;
  • fLanguage
    English
  • Publisher
    ieee
  • Conference_Titel
    Software Engineering (ICSE), 2012 34th International Conference on
  • Conference_Location
    Zurich
  • ISSN
    0270-5257
  • Print_ISBN
    978-1-4673-1066-6
  • Electronic_ISBN
    0270-5257
  • Type

    conf

  • DOI
    10.1109/ICSE.2012.6227152
  • Filename
    6227152