Skip to main content

Notice: This Wiki is now read only and edits are no longer possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.

Jump to: navigation, search

Difference between revisions of "PDE/API Tools"

< PDE
(Present state)
 
(97 intermediate revisions by the same user not shown)
Line 1: Line 1:
API tooling is a collection of utilities that can be used in API maintenance and consistency checks. We hope to explore four directions here:
+
{{API_Tools}}
<ul>
+
<li>'''[http://wiki.eclipse.org/PDE_UI_Incubator_ApiTools#API_Comparison_tool API Comparison tool]'''
+
<ul>
+
<li>API comparison – discover new APIs, modified APIs, flag APIs that are modified in a non-backward compatible way</li>
+
<li>Bundle version checking – use API comparison results to see if version number of a bundle has been properly incremented</li>
+
</ul>
+
</li>
+
<li>'''[http://wiki.eclipse.org/PDE_UI_Incubator_ApiTools#Reference_Extractor_tool Reference Extractor tool]'''<ul>
+
<li>Usage discovery – allow developers to discover who is using their APIs and non-APIs</li>
+
<li>Usage validation – check if usage of APIs from other bundles fits into Eclipse standards</li>
+
</ul></li>
+
</ul>
+
  
Also note that there is an ongoing work on [http://wiki.eclipse.org/index.php/PDE_UI_Incubator_Vis API visualization].
+
== Introduction ==
  
== Present state ==
+
API tooling will assist developers in API maintenance by reporting API defects such as binary incompatibilities, incorrect plug-in version numbers, missing or incorrect <code>@since</code> tags, and usage of non-API code between plug-ins. The tooling will be integrated in the Eclipse SDK and will be used in the automated build process. Specifically, the tooling is designed to do the following:
  
At present there are '''two''' branches/implementations of API tooling in the incubator.
+
* Identify binary compatibility issues between two versions of a software component or product.
 +
* Update version numbers for plug-ins (bundles) based on the Eclipse versioning scheme.
 +
* Update <code>@since</code> tags for newly added classes, interfaces, methods, etc.
 +
* Provide new Javadoc tags and code assist to annotate types with special restrictions.
 +
* Leverage existing information (in <code>MANIFEST.MF</code>) to define the visibility of packages between bundles.
 +
* Identify usage of non-API code between plug-ins.
 +
* Identity leakage of non-API types into API.
 +
* Identify usage of code from a JRE outside the bounds of the one specified in the bundle configuration (<code>MANIFEST.MF</code>).
  
The '''first''' implementation of API tooling is in HEAD. The comparison tool works by creating XML snapshots of each public type’s API. The snapshot for a type is generated by flattening the type hierarchy. Snapshots representing different versions of the same components can be compared to produce a report of binary incompatibilities. The reference analysis also works by extracting reference information into an XML file. At present there is a functional API comparison tool that received a moderate amount of testing. The reference extractor has reference extraction working but only skeleton code exists for processing of queries. More information on the [http://wiki.eclipse.org/PDE_UI_Incubator_ApiTools_take_i original implementation] of API tooling can be found here.
+
== Present state  ==
  
The '''second''' implementation of API tooling is in a branch named “manifest_tooling” and is currently '''under construction'''. This implementation is designed to compare class files to report binary incompatibilities. The tool has support to produce class file stubs (i.e. minimal class files with just member signatures and reference information). The comparison tool can process standard class files or class file stubs. The stubs allow “API components” to be produced that are smaller than the original code intended for distribution. The reference extraction portion of the tool will also analyze class files (or stubs) for reference information.
+
API tooling was released to the Eclipse SDK in the PDE project during the [http://www.eclipse.org/eclipse/development/eclipse_project_plan_3_4.html Eclipse 3.4] release. Our milestone development time line corresponds to that of the Eclipse SDK (currently in the 3.6 stream).
 +
 
 +
== Planning ==
 +
 
 +
All planned items (and wishes) can be found on our [[PDE/Plan/3.6#API Tools|3.6 plan]] page.
  
 
== Links ==
 
== Links ==
  
[http://wiki.eclipse.org/index.php/Evolving_Java-based_APIs Evolving Java-based APIs] - What is considered an API in Eclipse.
+
[[PDE/API Tools/Tasks|Ant Tasks]] - Description of the Ant Tasks available in API Tools
 +
 
 +
[[PDE/API_Tools/Restrictions|API Restrictions]] - Description of the restrictions supported on API types via Javadoc tags or annotations.
 +
 
 +
[[ApiTools Architecture|API Tooling Architecture]] - High level description of the tooling's architecture.
  
== Resources ==
+
[[Evolving Java-based APIs]] - What is considered an API in Eclipse.
  
[https://bugs.eclipse.org/bugs/ Eclipse Bugzilla] - Eclipse bug tracking database.
+
[[Version Numbering]] - Guidelines on versioning plug-ins
  
[http://wiki.eclipse.org/index.php/PDE_UI_Incubator PDE Incubator] - New projects that might be incorporated into PDE in future.
+
[[PDE/Incubator]- New projects that might be incorporated into PDE in future.
  
 
[http://www.eclipse.org/pde/pde-ui/ PDE UI Home Page] - The main PDE UI web site.
 
[http://www.eclipse.org/pde/pde-ui/ PDE UI Home Page] - The main PDE UI web site.
  
[[Category:API|API Tooling]]
+
[[Category:API|API Tools]]
[[Category:Equinox|API Tooling]]
+
[[Category:Equinox|API Tools]]
 +
[[Category:PDE|API Tools]]
 +
[[Category:Eclipse_Project|API Tools]]

Latest revision as of 15:11, 5 June 2014

API Tools
Website
Download
Community
Mailing ListForumsIRCmattermost
Issues
OpenHelp WantedBug Day
Contribute
Browse Source

Introduction

API tooling will assist developers in API maintenance by reporting API defects such as binary incompatibilities, incorrect plug-in version numbers, missing or incorrect @since tags, and usage of non-API code between plug-ins. The tooling will be integrated in the Eclipse SDK and will be used in the automated build process. Specifically, the tooling is designed to do the following:

  • Identify binary compatibility issues between two versions of a software component or product.
  • Update version numbers for plug-ins (bundles) based on the Eclipse versioning scheme.
  • Update @since tags for newly added classes, interfaces, methods, etc.
  • Provide new Javadoc tags and code assist to annotate types with special restrictions.
  • Leverage existing information (in MANIFEST.MF) to define the visibility of packages between bundles.
  • Identify usage of non-API code between plug-ins.
  • Identity leakage of non-API types into API.
  • Identify usage of code from a JRE outside the bounds of the one specified in the bundle configuration (MANIFEST.MF).

Present state

API tooling was released to the Eclipse SDK in the PDE project during the Eclipse 3.4 release. Our milestone development time line corresponds to that of the Eclipse SDK (currently in the 3.6 stream).

Planning

All planned items (and wishes) can be found on our 3.6 plan page.

Links

Ant Tasks - Description of the Ant Tasks available in API Tools

API Restrictions - Description of the restrictions supported on API types via Javadoc tags or annotations.

API Tooling Architecture - High level description of the tooling's architecture.

Evolving Java-based APIs - What is considered an API in Eclipse.

Version Numbering - Guidelines on versioning plug-ins

PDE/Incubator - New projects that might be incorporated into PDE in future.

PDE UI Home Page - The main PDE UI web site.

Back to the top