Static Extraction of Program Configuration Options

Ariel S. Rabkin and Randy Katz
UC Berkeley, USA
Debugging the Surf

Many programs use a key-value model for configuration options. We examined how this model is used in seven open source Java projects totaling over a million lines of code. We present a static analysis that extracts a list of configuration options for a program. Our analysis finds 95% of the options read by the programs in our sample, making it more complete than existing documentation.

Most configuration options we saw fall into a small number of types: a dozen types cover 90% of options. We present a second analysis that exploits this fact and can determine the type of most options. Together, these analyses enable more visibility into program configuration, helping reduce the burden of configuration documentation and configuration debugging.