Eclipse Project 4.3 M5 - New and Noteworthy

Here are some of the more noteworthy things available in milestone build M5 (February 1, 2013) which is now available for download.

JDT
Null annotations for fields The annotation-based null analysis — first released with Eclipse Indigo — has been extended to apply also to fields. If enabled, this analysis will now detect the following problems concerning any field annotated with @NonNull:
  • If the field is not properly initialized to a non-null value.
  • If a value is assigned to the field that is not known to be non-null.

In return to these obligations, dereferencing a @NonNull field is regarded as always safe.

If a field is marked as @Nullable, generally every direct dereference of the field is flagged as a potential null pointer access. Even a null check for such a field is not a perfect protection due to dangers of side effects, effects via aliased references, and concurrency.

As a compromise between safety and convenience, the compiler can be configured to apply "syntactic null analysis for fields". With this option enabled, the compiler syntactically recognizes a narrow range of code patterns where a null-check of a field is directly followed by a dereference or an assignment to a @NonNull variable. For these particular situations, no problem will be reported.

In the following example, the check in line 12 properly protects the access in line 13, whereas the knowledge that field nullable holds a non-null value (in line 15) is spoiled by the intermediate statement in line 16.

This is the option that enables the syntactic analysis (under the heading Java Compiler > Errors/Warnings):

Support for package Javadoc in Javadoc hover and view The Javadoc hover and view now display package Javadoc from either the package-info.java or the package.html file.

Quick Assist for unused type parameters The Java editor now provides a Quick Assist (Ctrl+1) to remove or document unused type parameters.

Pre-filling package name in creation wizards All the type and package creation wizards now pre-fill the package name if a suitable package name can be suggested for the selected project or source folder.

The suggested package name is the name of the project if the source folder does not contain any package and if the project name is a valid package name. In case of type creation wizards, if the source folder contains exactly one package then the name of that package is used as the suggested package name.

PDE
Bundles in the category editor The category editor now supports putting individual bundles into categories.

The category editor creates a category.xml that can define categories that the contents of a p2 repository should be organized into. Previously only features could be specified as belonging to a category and be visible to users. Now individual bundles can be added to the category.xml.

Category editor can include individual bundles

New API to contribute to the classpath of plug-in projects New API in PDE allows you to add additional classpath entries to a plug-in project. Contribute a Plug-in Classpath Contributor via the org.eclipse.pde.core.pluginClasspathContributors extension point. Whenever the PDE classpath is computed or a new plug-in dependency is added, your classpath contributor will be queried for additional entries.

If you are using Equinox Adapter hooks to load additional libraries at runtime you can use this API to add the correct libraries to the classpath at build time.

An example classpath contributor extension

Updating the classpath requires a workspace lock When a change is made to a plug-in that forces a classpath update, an update job is created that modifies the Plug-in Dependencies classpath container in the background. This job now acquires a workspace lock to prevent other operations such as builders from running on a stale classpath.

This behaviour can be enabled in 4.2.2 by setting the system property pde.lockWorkspaceForClasspath to true.

Problem filters apply to API Tools use scans Problem filter files (.api_filter) can be used to filter problems reported by the API Tools analysis task and the workspace analysis builder. These filter files can now be applied to API Tools use scans. Reference problems that are filtered out of the analysis results can be also filtered from the results of use scans.

Filters are specified in the task using the same property as the analysis task. Set the filters attribute on the apitooling.apiuse task, specifying the root directory of API filter files. Each filter file must be in a folder with a filename matching the component name the filter file applies to.

API Tools tasks warn about missing include or exclude files Many of the API Tools tasks, including Analysis, API Use, and API Freeze, provide includelist and excludelist attributes which can be used to limit the reported problems. Previously, if you set an include or exclude list, but the file wasn't found, the task would continue without warning about the incorrect filtering. Now a missing include or exclude list will result in the task failing with an explanation.

Example console output for missing include

Platform
Detection of shared install changes When Eclipse is running in a read-only folder (also known as shared install) and the read-only installation has changed (e.g. new plugins installed, new version of Eclipse installed), Eclipse will now detect this change and warn that your personal additional plugins have been uninstalled. In the next milestone, this warning will be replaced by a migration dialog allowing you to reinstall your plugins.

Dialog warning about a modified install

The above features are just the ones that are new since the previous milestone build. Summaries for earlier Kepler milestone builds: