Skip to main content

Notice: this Wiki will be going read only early in 2024 and edits will no longer be 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
 
(124 intermediate revisions by 12 users not shown)
Line 1: Line 1:
Welcome to the '''API Tooling''' Wiki Page.
+
{{API_Tools}}
  
API tooling is a collection of utilities that can be used in API maintenance and consistency checks. At present it has two portions: API comparison tool and API reference extractor.
+
== 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 <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:
  
== API Comparison tool ==
+
* 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>).
  
'''API Comparison tool''': discovers backward compatibility problems and new APIs
+
== Present state  ==
  
The tool can be used to create API snapshot of a set of bundles / jars / directories. The snapshot is used as a baseline to compare against another version of the source code to discover problems in API backward compatibility and new APIs.
+
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).
  
The tool is written in modular fashion. It has an “engine” with replaceable input and output. Presently OSGi bundles, Java jars, and directories can be used as an input sources. The snapshot output is saved into zip-ed xml file. Comparison results are produced as  XML file which is transformed into HTML for ease of reading.
+
== Planning ==
  
At this time only can be executed from Eclipse environment. UI and command line invocation will be added shortly.
+
All planned items (and wishes) can be found on our [[PDE/Plan/3.6#API Tools|3.6 plan]] page.
  
To use it at this time:
+
== Links ==
<ul>
+
<li>Install Eclipse SDK 3.2 and download org.eclipse.pde.api.tools and org.eclipse.pde.api.tools.ui plugins from dev.eclipse.org:/cvsroot/eclipse, folder pde-incubator/api-tooling/plugins</li>
+
<li>Create a baseline for comparison: Depending on what is the source for the comparison, modify CollectAllBundles.java / CollectBundle.java / CollectFile.java to point to the source being used as a base. Run them as a JUnit plugin test to create a baseline</li>
+
<li>To compare modify CompareAllBundles.java / CompareBundle.java / CompareBundleInProduct.java / CompareFile.java to point to your current code and the baseline created in the previous step. Run the modified java file as a JUnit plugin test. The HTML files will be producted with non-backward compatible differences and backward-compatible differences</li>
+
</ul>
+
  
== Reference extraction tool ==
+
[[PDE/API Tools/Tasks|Ant Tasks]] - Description of the Ant Tasks available in API Tools
  
'''Reference extraction tool''': produces list of references to all “outside” code
+
[[PDE/API_Tools/Restrictions|API Restrictions]] - Description of the restrictions supported on API types via Javadoc tags or annotations.
  
The result of the extraction is saved as an XML file grouped by the classes and interfaces used in the code.
+
[[ApiTools Architecture|API Tooling Architecture]] - High level description of the tooling's architecture.
  
== Links ==
+
[[Evolving Java-based APIs]] - What is considered an API in Eclipse.
  
[http://wiki.eclipse.org/index.php/Evolving_Java-based_APIs Evolving Java-based APIs] - What is considered an API in Eclipse.
+
[[Version Numbering]] - Guidelines on versioning plug-ins
  
== Resources ==
+
[[PDE/Incubator]]  - New projects that might be incorporated into PDE in future.
  
[https://bugs.eclipse.org/bugs/ Eclipse Bugzilla] - Eclipse bug tracking database.
+
[http://www.eclipse.org/pde/pde-ui/ PDE UI Home Page] - The main PDE UI web site.
  
[http://wiki.eclipse.org/index.php/PDE_UI_Incubator PDE Incubator] - New projects that might be incorporated into PDE in future.
+
[[Category:API|API Tools]]
 
+
[[Category:Equinox|API Tools]]
[http://www.eclipse.org/pde/pde-ui/ PDE UI Home Page] - The main PDE UI web site.
+
[[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