7 research outputs found

    Extracting Build Changes with BUILDDIFF

    Full text link
    Build systems are an essential part of modern software engineering projects. As software projects change continuously, it is crucial to understand how the build system changes because neglecting its maintenance can lead to expensive build breakage. Recent studies have investigated the (co-)evolution of build configurations and reasons for build breakage, but they did this only on a coarse grained level. In this paper, we present BUILDDIFF, an approach to extract detailed build changes from MAVEN build files and classify them into 95 change types. In a manual evaluation of 400 build changing commits, we show that BUILDDIFF can extract and classify build changes with an average precision and recall of 0.96 and 0.98, respectively. We then present two studies using the build changes extracted from 30 open source Java projects to study the frequency and time of build changes. The results show that the top 10 most frequent change types account for 73% of the build changes. Among them, changes to version numbers and changes to dependencies of the projects occur most frequently. Furthermore, our results show that build changes occur frequently around releases. With these results, we provide the basis for further research, such as for analyzing the (co-)evolution of build files with other artifacts or improving effort estimation approaches. Furthermore, our detailed change information enables improvements of refactoring approaches for build configurations and improvements of models to identify error-prone build files.Comment: Accepted at the International Conference of Mining Software Repositories (MSR), 201

    Migrating to GraphQL: A Practical Assessment

    Full text link
    GraphQL is a novel query language proposed by Facebook to implement Web-based APIs. In this paper, we present a practical study on migrating API clients to this new technology. First, we conduct a grey literature review to gain an in-depth understanding on the benefits and key characteristics normally associated to GraphQL by practitioners. After that, we assess such benefits in practice, by migrating seven systems to use GraphQL, instead of standard REST-based APIs. As our key result, we show that GraphQL can reduce the size of the JSON documents returned by REST APIs in 94% (in number of fields) and in 99% (in number of bytes), both median results.Comment: 11 pages. Accepted at 26th International Conference on Software Analysis, Evolution and Reengineerin

    Use and misuse of the term "Experiment" in mining software repositories research

    Get PDF
    The significant momentum and importance of Mining Software Repositories (MSR) in Software Engineering (SE) has fostered new opportunities and challenges for extensive empirical research. However, MSR researchers seem to struggle to characterize the empirical methods they use into the existing empirical SE body of knowledge. This is especially the case of MSR experiments. To provide evidence on the special characteristics of MSR experiments and their differences with experiments traditionally acknowledged in SE so far, we elicited the hallmarks that differentiate an experiment from other types of empirical studies and characterized the hallmarks and types of experiments in MSR. We analyzed MSR literature obtained from a small-scale systematic mapping study to assess the use of the term experiment in MSR. We found that 19% of the papers claiming to be an experiment are indeed not an experiment at all but also observational studies, so they use the term in a misleading way. From the remaining 81% of the papers, only one of them refers to a genuine controlled experiment while the others stand for experiments with limited control. MSR researchers tend to overlook such limitations, compromising the interpretation of the results of their studies. We provide recommendations and insights to support the improvement of MSR experiments.This work has been partially supported by the Spanish project: MCI PID2020-117191RB-I00.Peer ReviewedPostprint (author's final draft

    Automated analysis for auto-generated build systems

    Get PDF
    Software build systems are crucial for software development as they translate the source code and resources into a deliverable. Prior work has identified that build systems account for 9% of software systems. However, their maintenance imposes a 36% overhead on software development. This overhead stems from the unique and hard to comprehend the nature of build systems. When executed, the build system is evaluated into a dependency-graph that captures how the system’s artifacts relate to each other. The graph generated depends on the selected build configurations. This graph is then traversed to perform the build. Prior work has emphasized the need for analysis support to tackle the challenges of evolving and maintaining build systems. In this thesis, we tackle three challenges associated with the maintenance and evolution of build systems. As the build system evolves, it’s not trivial to understand the impact of build code changes on its semantics. To tackle this, we propose a build code differencing technique to identify the semantic changes between two versions of a given build system. This would provide visibility on how the build system is evolving along with the software system. The second challenge we tackle is localizing faults within build systems. Build-time failures occur after the build code has been evaluated, and during the traversal of the dependency graph, it’s challenging to trace back the failure from the graph back to its root cause in the build system code. To this end, we propose a novel approach to localize faults in build code. For a given build failure, it returns a ranked list of statements in the build code that are suspected of causing the failure. This would aid in reducing the overhead of debugging and root causing build failures. The third challenge is to extract knowledge from build systems for analysis purposes. We propose an approach to extract the presence conditions of source code files from within the build system. This aims to support configuration aware analysis of configurable source code influenced by the build system. We then proceed to propose a foundation for developers to create analysis techniques to help them understand, maintain, and migrate their generator-based build system. We illustrate the use of the platform with two approaches: one to help developers better understand their build systems and another to detect build smells to improve the build code quality. To evaluate our work, we implement our proposed approaches against the widely used GNU build suite. Then, we use open-source projects to evaluate each of the approaches

    BuildDiff Supplementary Material

    No full text
    Supplementary Material for our study "Extracting Build Changes with BUILDDIFF" at the 14th International Conference on Mining Software Repositories
    corecore