Showing posts with label API. Show all posts
Showing posts with label API. Show all posts

Wednesday, February 06, 2008

Api Tools is Official

With much joy, I am happy to say that the Api Tools incubator project is now part of the SDK proper. We (Darin, Olivier and myself) have been working very hard to get it up and running (and useful).

The project has come a long way since my last post....

We now have:
1. an incremental builder
2. problem markers for api usage problems / api breaking changes

Example problem marker

3. filters for api problem kinds

API filters property page for jdt.debug plugin

4. quick-fixes for a variety of api problem kinds

Quick fix for illegal api uasge problem

Quick fix for since tag problem

5. a wizard to set up api tooling on plugin projects

API Tooling setup wizard

6. preference / property pages to configure options for the tooling

Errors / Warnings preference page for api tooling

7. version management

Workbench showing plugin version numbering problem marker

8. @since tag management

Workbench showing since tag problem marker

Stay tuned for more updates...

Thursday, November 22, 2007

API Tooling is a work in progress

Lately I have had the chance to work on a new project a little outside the scope of debuggers: API tooling support for the platform. Ultimately the goal of this incubator project is to provide tools for 'working' with APIs. Working in this context is loosely defined as:

1. Manging API usage across builds/products
2. Creating API profiles to compare against
3. Tools to compare APIs
4. Tools to manage API breakage detection/repair
...

Alot more information can be found on the wiki for the project (here).

One of the features currently available in the project is the ability to manage API profiles. API profiles are considered to be a description of the API of a component (which can be a project, plugin, bundle, etc). These profiles can be used to compare current source to, or another component.

The following screenshot is the 'API Profiles' preference page used manage API profiles (hence its name :) )

Image

Another feature is the ability to use Javadoc source tags to define API restrictions. The tags are provided as completion proposals for classes, interfaces, methods and fields. For example you could add a @noimplement tag to an API interface that clients are intended to use but not implement.

The following screen cap is a shot of a Java editor showing a variety of source tags.

Image

These are of course previews of current ongoing work, so it could change at any time :)