The KaVE recommender system is installed in two easy steps. First, you have to follow the installation instructions for the KaVE plugin, which includes the component that integrates the recommendations in you regular IntelliSense proposals. Second, you need to download models that are used to compute the proposals.

We learn the models from a huge number of typical examples that we found while statically analyzing thousands of open source repositories. We decided to split the models to keep the installed component small and to make it easier to update the models independently of the recommender, e.g., when we added more examples.

How do I install the models?

The installation is super simple. Download the current archive that contains all models from our data repository. Unzip the file into a folder (say C:\KaVE-Models\). The folder structure should be similar to the following screenshot. While your download contains more models, the general structure remains the same.

Now open the General Options of the KaVE plugin (in the menubar, select ReSharper » Options » KaVE Options » Genreal). You will find an option to select the model directory. Select the same folder into which you unpacked the zip folder (in our example C:\KaVE-Models\).

Now, every time you invoke IntelliSense, the recommender will try to find the corresponding model in your model folder and will create intelligent completions, when the model is found.

How can I check that it is working?

In short, you will automatically see intelligent proposals for all types for which you have models. The model files are organized in a straight forward manner: the model for the type System.Text.StringBuilder is found in the folder «models»\System\Test\

So for example, if you write the following code snippet and invoke IntelliSense for the variable sb, you will notice the new proposals in the list that are marked with the golden symbols.

If you do not see this proposals, make sure that you have extracted the models to the right folder, and that this folder is selected in the option page. Additionally, you should make sure that you are working with the most recent version of the plugin and that you also downloaded the most recent version of the models.

I have a model for TypeX, why do I never see recommendations ?

We are very sorry. To be perfectly honest, this means the model of this exact type is deactivated or you (it will never happen for StringBuilder). We don't like this either, but it is a necessary measure for us. In the following, we will describe our reasons.

Evaluating recommendation systems is hard, but it is of paramount importance for the quality of our models. We capture the interactions of developers with IntelliSense and use these real interactions to make the evaluation results more realistic.

This kind of evaluation has a problem, if a developers uses our tool and receives intelligent proposals. If this happens, the recommender influenced the selection and the interaction has to be filtered from the evaluation. This means that we can no longer evaluate models for types that we support with our recommendation system. To circumvent this, we could completely deactivate intelligent proposals, but nobody would install a tool that captures a lot of data but does not provide any value. So we decided for a compromise.

We offer the intelligent code completion for many types and APIs for all users for our tool, completely free of charge. Separately for each user, we will randomly select a (very!) small set of types that are disabled for each user such that we can capture valid interactions with these types. At the same time, users will receive intelligent completions for most types.