Cited by 17Software Testing and Debugging TechniquesSoftware Engineering ResearchSoftware System Performance and Reliability

The DOI matches its Crossref record; the references it cites are not checked yet.

A model for detecting faults in build specifications

Open access
Sotiropoulos, Thodoris, Chaliasos, Stefanos, Mitropoulos, Dimitris, Spinellis, Diomidis·2020·Proceedings of the ACM on Programming Languages

Abstract

Incremental and parallel builds are crucial features of modern build systems. Parallelism enables fast builds by running independent tasks simultaneously, while incrementality saves time and computing resources by processing the build operations that were affected by a particular code change. Writing build definitions that lead to error-free incremental and parallel builds is a challenging task. This is mainly because developers are often unable to predict the effects of build operations on the file system and how different build operations interact with each other. Faulty build scripts may seriously degrade the reliability of automated builds, as they cause build failures, and non-deterministic and incorrect outputs. To reason about arbitrary build executions, we present BuildFS, a generally-applicable model that takes into account the specification (as declared in build scripts) and the actual behavior (low-level file system operation) of build operations. We then formally define different types of faults related to incremental and parallel builds in terms of the conditions under which a file system operation violates the specification of a build operation. Our testing approach, which relies on the proposed model, analyzes the execution of single full build, translates it into BuildFS, and uncovers faults by checking for corresponding violations. We evaluate the effectiveness, efficiency, and applicability of our approach by examining 612 Make and Gradle projects. Notably, thanks to our treatment of build executions, our method is the first to handle JVM-oriented build systems. The results indicate that our approach is (1) able to uncover several important issues (247 issues found in 47 open-source projects have been confirmed and fixed by the upstream developers), and (2) much faster than a state-of-the-art tool for Make builds (the median and average speedup is 39X and 74X respectively).

Overview

The claims and statistics of this paper haven’t been checked yet.

Run the check — free, no account needed. It reads the open-access text and checks the sources it cites.

A few free checks a day · papers already verified open instantly · results are public

Integrity signals

Registry

Crossref · 10.1145/3428212

Cites

Statistics

Verification

Claims the paper makes

The claims and statistics of this paper haven’t been checked yet.

Run the check — free, no account needed. It reads the open-access text and checks the sources it cites.

A few free checks a day · papers already verified open instantly · results are public

Self-check

Percentages, sums and reported differences re-computed from the paper’s own numbers.

The self-check needs the paper’s full text.

Citations

The citation lists haven’t been fetched yet

References 41 · Cited by 17

Research works printed but not linked: 24

  1. 10.1109/ICSM.2007.4362624 · DOI
  2. 10.1145/2591062.2591135 · DOI
  3. 10.1145/1138912.1138928 · DOI
  4. Avery Pennarun B. A., 2020, Debian popularity contest. https://popcon.debian.org/
  5. 2020, Build and test software of any size, quickly and reliably. https://bazel.build
  6. 10.1007/s10664-017-9510-8 · DOI · Paper page
  7. 10.1145/2151024.2151043 · DOI
  8. Calcote J., 2020, No Starch Press
  9. 10.1145/2950290.2950358 · DOI
  10. 10.1145/3106237.3106297 · DOI
  11. 10.1007/978-3-319-06410-9_43 · DOI
  12. Coetzee D., 2011, 2011 USENIX Annual Technical Conference (USENIX)
  13. 2020, sbuild. https://wiki.debian.org/sbuild
  14. 2020, https://wiki.debian.org/UltimateDebianDatabase/
  15. 10.1145/3133956.3134059 · DOI
  16. 10.1145/2858965.2814316 · DOI
  17. Feldman S. I., 1979, Make-a program for maintaining computer programs. Software: Practice & Experience, 9 ( 4 ): 255-265
  18. 10.1145/2660193.2660239 · DOI
  19. 10.1145/2771783.2771784 · DOI
  20. Gradle Inc., 2020, Gradle vs Maven: Performance comparison. https://gradle.org /gradle-vs-maven-performance/
  21. 10.1145/2642937.2643013 · DOI
  22. Visser J., 2016, Building Software Teams: Ten Best Practices for Efective Software Development. " O'Reilly Media
  23. 10.1145/3180155.3180254 · DOI
  24. 10.1145/3180155.3180198 · DOI

Metadata

Authors
Sotiropoulos, T., Chaliasos, S., Mitropoulos, D., & Spinellis, D.
Affiliations
Athens University of Economics and Business (GR)
Venue
Proceedings of the ACM on Programming Languages
Published
2020-11-13
Volume
4
Issue
OOPSLA
Pages
1-30
ISSN
2475-1421 (ISSN-L)
OpenAlex
W3110003940
Cited by
17
References
41
Citations by year
2026: 3 · 2025: 4 · 2024: 5 · 2023: 1 · 2022: 3 · 2021: 1
FWCI
2.30
Type
journal article
Language
en
Open access
Locations
  • Proceedings of the ACM on Programming Languages (publishedVersion, cc-by)
  • arXiv (Cornell University) (submittedVersion)
  • arXiv (Cornell University)
Funders
European Commission (825328)
Topics
  • Physical Sciences › Computer Science › Software › Software Testing and Debugging Techniques
  • Physical Sciences › Computer Science › Information Systems › Software Engineering Research
  • Physical Sciences › Computer Science › Computer Networks and Communications › Software System Performance and Reliability
Keywords
build systems, incremental build, file system operations, make, Gradle, non-determinism

About these checks

Registry, retraction, Cites and statistics results are computed, not judged, with one exception: a printed reference that no index lists is read once by a model before it counts as a citation error. Claims are extracted by a model and kept only when their quote appears verbatim in the text; each cited source is then checked, with a model’s help, for whether it says what the claim relies on. Those verdicts can be wrong — read the claim’s quote and the cited source before relying on one.

Statistics and arithmetic are recomputed, not judged.

Confidence bands are shown only for fields calibrated on our annotated test set. None is calibrated yet, so no band is shown.

What counts as a claim ›How we measure confidence ›How we check this ›

Are you an author, or do you see a problem with this page? Request a review