During last weeks Code Recommenders stepped out of its fairly ad hoc build and test process and moved towards a somewhat more mature and defined process. We'll see whether the love we put into the build system pays out in future :-)
Apropos love: The project website is up with a new project logo and new screencasts. Please check out eclipse.org/recommenders/ and read eclipse.org/recommenders/about/logo for an explanation of the logo. We are curios to hear how you like website and logo!
But despite all this, let's get to the nitty-gritty stuff. What has changed in the code?
Okay, okay... let's get to the important stuff!
The guiding principle for the first
For instance, a lot effort has been spent on making Code Recommenders' code completion fast. There is still some extra overhead when a recommendation model has to be loaded the first time, but after that, computing recommendations for these types takes 10-50 milliseconds only! Compared to previous versions this is at least one order of magnitude faster!
Furthermore, given that most of the time is spent (re-) doing work that JDT code completion has done before (computing proposals, figuring out which completion kind was requested etc.), there is quite a lot potential push performance down to just a few milliseconds! The pure recommendation process is that fast!
What else changed? Let's look at the screenshots below:
Code Completion on Variables:
Well, this stayed the same compared to previous versions. Thus, just for completeness:
Of course, this works with prefix tokens as well:
Completion in Anonymous Inner Classes:
This is pretty new - and fast! Whenever you trigger code completion on variables even declared in an enclosing class, Code Recommenders can propose you a set of likely methods for this context too.
Completion on This:
Maybe obvious but somewhat tricky to implement is this:
Completion on Anonymous Method Returns:
Earlier versions of Code Recommenders required you assign anonymous types to local variables before anything was proposed. This is history now:
Completion on Class Bodies:
Want to know which methods you may override in the given class? Here you go:
Cool! What else changed?
The configuration. Code Recommenders is now enabled on a per project basis. Thus to enable Code Recommenders you have to either:
Enable Code Recommenders via code completion shown below:
or by selecting Add Recommenders Nature from the project's context menu:
Can I Use It For My Projects? Which Frameworks Are Supported?
To see which frameworks are currently well supported please checkout this temporary listing here. We will provide more detailed statistics as soon as we have the new data collection framework online. Promised.
Where do I get it?
Pick it from the Eclipse marketplace or direct your Eclipse update client to this update site: http://download.eclipse.org/recommenders/updates/dev
What Comes Next?
Exciting features are almost ready:
Andreas Kaluza further improve the call chain completion as described in this post. This feature will probably be part of the next
Stefan Henß' templates completion engine (somewhat similar to the SWT templates engine but driven by the calls recommender engine) is almost ready for
But there is quite a lot in the pipeline... stay tuned.
First, the Code Recommenders team now consists of two full time committers (and a bunch of students :-)). Johannes Lerch joined me back in December and has made a fantastic job since then. My thanks to him for his great passion on working on code recommenders' website, build/test system and in particular for improving code recommenders.
Second, I wanna thank the Eclipse IP team, namely Sharon Corbett and Gunnar Wagenknecht, who already spent quite some time on checking our dependencies - and will probably spent much more time later on. Thanks!
Third, thanks to my project mentor Chris Aniszczyk for pushing me through the IP process and initial steps, and thanks to Jochen Krause and Ralph Mueller for the meetings and discussions on Code Recommenders.
Please enjoy this
P.S.: Say it thousand times: "It's a drop, it's a drop, it's a drop..." until there is a official review by the EMO :-)