Paper Review Detecting Incorrect Build Rules

Potential future work:

  1. Automatically fixing incorrect build rules
    1. FIX by human: spreadsheet


  1. Root cause analysis / Fault localization
  2. dependency graphs
    1. Unintended dependencies? Random/spurious dependencies
    2. Are these graph reproducible and deterministic?
  3. Configuration sensitivity
  4. How to calculate coverage
  5. Build system a la carte
    1. Will a good algebra alleviate the problems above?
  6. Essentially, this work is based on some mathematical property about a good build system
    1. Reproducibility?
  7. Is this dependency graph the best representation?

Key ideas:

  1. Under-constraining
    1. Missing dependencies
  2. over-constraining
    1. pipes
    2. Gradle


Projects had to contain a CMakeLists.txt, a Makefile or a SConstruct in the root folder: this excluded some poorly written projects with no documentation, or large projects with complex build instructions

How prevalent is Makefile used?

Doesn’t compare with the related inference systems.

General design guide: over-spec dependencies.

Comparison of generated files. Missing edge.