A computer-implemented method for automatically configuring a compiler emulator, the method comprising: receiving an indication of a request by a build system to execute an executable in a first newly created process; determining that the executable of the newly created process is a compiler called by the build system to compile source code of a source code file; in response to the determining, determining (250, 252, 254) a plurality of configuration properties of the compiler called by the build system, the configuration properties including first properties of a plurality of built-in functions of the compiler, second properties of a plurality of built-in types of the compiler, or both, wherein built-in types of the compiler comprise types that come preinstalled with a compiler version and built-in functions of the compiler comprise functions that come preinstalled with a compiler version that source code can invoke, and wherein determining the plurality of configuration properties of the compiler called by the build system comprises: providing, as input to the compiler, source code that directly or indirectly determines one or more properties of one or more built-in types; examining an output of the compiler to determine the properties of the built-in types; and invoking the executable with source code that intentionally uses invalid arguments for built-in functions to cause the compiler to output information about the properties of the built-in functions; configuring a compiler emulator to emulate the behavior of the compiler called by the build system using the determined configuration properties, comprising providing the compiler emulator with a plurality of arguments, the plurality of arguments comprising arguments that directly specify values of the determined configuration properties and/or arguments that specify locations of files that include lists of values of the determined configuration properties; and providing access to the source code to the compiler emulator configured using the determined configuration properties, wherein the compiler emulator emulates the behavior of the compiler according to the determined configuration properties of the compiler called by the build system to generate a representation of the source code that corresponds to a representation that would have been generated by the compiler in the received indication of the request by the build system. receiving an indication of a request by a build system to execute an executable in a first newly created process; determining that the executable of the newly created process is a compiler called by the build system to compile source code of a source code file; in response to the determining, determining (250, 252, 254) a plurality of configuration properties of the compiler called by the build system, the configuration properties including first properties of a plurality of built-in functions of the compiler, second properties of a plurality of built-in types of the compiler, or both, wherein built-in types of the compiler comprise types that come preinstalled with a compiler version and built-in functions of the compiler comprise functions that come preinstalled with a compiler version that source code can invoke, and wherein determining the plurality of configuration properties of the compiler called by the build system comprises: providing, as input to the compiler, source code that directly or indirectly determines one or more properties of one or more built-in types; examining an output of the compiler to determine the properties of the built-in types; and invoking the executable with source code that intentionally uses invalid arguments for built-in functions to cause the compiler to output information about the properties of the built-in functions; providing, as input to the compiler, source code that directly or indirectly determines one or more properties of one or more built-in types; examining an output of the compiler to determine the properties of the built-in types; and invoking the executable with source code that intentionally uses invalid arguments for built-in functions to cause the compiler to output information about the properties of the built-in functions; configuring a compiler emulator to emulate the behavior of the compiler called by the build system using the determined configuration properties, comprising providing the compiler emulator with a plurality of arguments, the plurality of arguments comprising arguments that directly specify values of the determined configuration properties and/or arguments that specify locations of files that include lists of values of the determined configuration properties; and providing access to the source code to the compiler emulator configured using the determined configuration properties, wherein the compiler emulator emulates the behavior of the compiler according to the determined configuration properties of the compiler called by the build system to generate a representation of the source code that corresponds to a representation that would have been generated by the compiler in the received indication of the request by the build system.