6 research outputs found

    Configuration Smells in Continuous Delivery Pipelines: A Linter and a Six-Month Study on GitLab

    Full text link
    An effective and efficient application of Continuous Integration (CI) and Delivery (CD) requires software projects to follow certain principles and good practices. Configuring such a CI/CD pipeline is challenging and error-prone. Therefore, automated linters have been proposed to detect errors in the pipeline. While existing linters identify syntactic errors, detect security vulnerabilities or misuse of the features provided by build servers, they do not support developers that want to prevent common misconfigurations of a CD pipeline that potentially violate CD principles (“CD smells”). To this end, we propose CD-Linter, a semantic linter that can automatically identify four different smells in pipeline configuration files. We have evaluated our approach through a large-scale and long-term study that consists of (i) monitoring 145 issues (opened in as many open-source projects) over a period of 6 months, (ii) manually validating the detection precision and recall on a representative sample of issues, and (iii) assessing the magnitude of the observed smells on 5,312 open-source projects on GitLab. Our results show that CD smells are accepted and fixed by most of the developers and our linter achieves a precision of 87% and a recall of 94%. Those smells can be frequently observed in the wild, as 31% of projects with long configurations are affected by at least one smell

    Characterizing and refactoring asynchronous JavaScript callbacks

    No full text
    Modern web applications make extensive use of JavaScript, which is now estimated to be one of the most widely used languages in the world. Callbacks are a popular language feature in JavaScript. However, they are also a source of comprehension and maintainability issues. We studied several features of callback usage across a large number of JavaScript applications and found out that over 43 of all callback-accepting function call sites are anonymous, the majority of callbacks are nested, and more than half of all callbacks are invoked asynchronously. Promises have been introduced as an alternative to callbacks for composing complex asynchronous execution flow and as a robust mechanism for error checking in JavaScript. We use our observations of callback usage to build a developer tool that refactors asynchronous callbacks into Promises. We show that our technique and tool is broadly applicable to a wide range of JavaScript applications.Applied Science, Faculty ofElectrical and Computer Engineering, Department ofGraduat

    MSR 2017 Attractiveness replication package

    No full text
    Replication package for the MSR project titled "The Impact of the Adoption of Continuous Integration on Developer Attraction and Retention"

    Data Set for "An Empirical Study of the Personnel Overhead of Continuous Integration"

    No full text
    This is the data set and code related to our paper entitled "An Empirical Study of the Personnel Overhead of Continuous Integration" to appear in International Conference on Mining Software Repositories, Mining Challenge.<div><br></div

    Revisiting "Programmers' Build Errors" in the Visual Studio Context - Replication Package

    No full text
    <div>The replication package for: Revisiting "Programmers’ Build Errors" in the Visual Studio Context</div><div><br></div><div>Authors: N. Rabbani, M. Harvey, S. Saquif, K. Gallaba, S. McIntosh.</div><div>Published At: In MSR’18: 15th International Conference on Mining Software Repositories , May 28–29, 2018, Gothenburg, Sweden.</div
    corecore