1. A computer-implemented method for providing code analysis information, the method comprising: selecting a file to analyze; performing dynamic analysis on the selected file by executing the selected file to discover code elements defined within the selected file; determining whether dynamic analysis has reached a limit while executing the selected file; in response to determining that the limit has been reached, performing static analysis on the selected file by compiling the file and identifying code completion elements discovered during compiling; and saving state information produced during dynamic or static analysis that provides a cache of the execution context of the selected file, wherein the preceding steps are performed by at least one processor.