With the growing size of software frameworks and libraries, documenting code is becoming more and more important. This is especially true for dynamic languages such as Ruby, where type information is entirely absent and developers often rely on documentation provided by the authors of these frameworks and libraries. Nevertheless, the quality and completeness of code documentation is still very low even for many well known and widely used frameworks (e.g. Ruby on Rails).
The goal of this project is twofold. First, to write a byte-code evaluator that will analyse Ruby code and will attempt to infer the type of all parameters and return values for all methods of every class in the given project. Second, to use that information, together with contextual information such as class and method names, to annotate the methods with a brief summary and type signatures using documentation comments.
Thus an undocumented class such as:
class Project
def find_by_name(name)
[...]