1. A method performed on a computing device comprising at least one processor, memory, and at least one program module, the method comprising: discovering, by the computing device according to the at least one program module, elements of code based on execution of at least some of the code, where the execution is part of a dynamic analysis of the code; and performing, by the computing device according to the at least one program module, auto-completion of at least a portion the code based on the dynamic analysis of the code and the discovered code elements, where at least a portion of the discovered code elements are not discoverable based on static analysis.