1. A computer-implemented method for providing code analysis information, the method comprising: selecting a file containing software source code to analyze to discover code elements to present in an editing application that provides code completion to a developer; performing dynamic analysis on the selected file by executing the software source code within the selected file to discover code elements defined within the selected file; determining whether dynamic analysis has reached a time-based limit while executing the selected file that would not provide results in a predictable period that is acceptable for an interactive user interface of the editing application; in response to determining that the time-based limit has been reached, performing static analysis on the selected file by compiling the software source code within the file and identifying code completion elements discovered during compiling; and saving state information produced during dynamic and static analysis that provides a cache of the execution context of the selected file that can speed up subsequent analysis of the file to provide results in a predictable period that is acceptable for the interactive user interface of the editing application, wherein the preceding steps are performed by at least one processor.