Here are some research about code assistant conducted in software engineering research area. Those topics are pretty common, and a lot of people have developed various kinds of tools.
1. Mining Subclassing Directives to improve Framework Reuse.
Idea: reverse engineer from application-specific code, how-to-use documentation of a particular software artifact can be inferred from how it is actually used.
Propose four different kinds of subclassing directives
Mine framework subclassing from client code
2. Thex: Mining Metapatterns from Java
Meta-pattern is easier to detect. Difference design pattern may share a common underlying metapattern model. For example, state and strategy.
Presented four forms of metapatterns, based on relation between HOOK and TEMPLATE.
3. Micro-patterns in Java code
4. Mining API Mapping for Language Migration
Find mapping between two difference version of application.
use client code
5. Mining API Patterns as Partial Orders from Source Code: From Usage Scenarios to Specifications
6. Portfolio: Finding Relevant Functions and Their Usages
7. XSnippet: Mining For Sample Code
<pre><code> String foo = "bar"; </code></pre>