Awesome Open Source
Awesome Open Source

= Revapi :toc:

image:https://travis-ci.org/revapi/revapi.svg?branch=master[Build Status,link=https://travis-ci.org/revapi/revapi] image:http://codecov.io/github/revapi/revapi/coverage.svg?branch=master[Code Coverage,link=https://codecov.io/github/revapi/revapi?branch=master] image:https://img.shields.io/gitter/room/nwjs/nw.js.svg[Gitter Chat,link=https://gitter.im/revapi/Lobby?utm_source=share-link&utm_medium=link&utm_campaign=share-link]

http://revapi.org[Revapi] is a tool for API analysis and change tracking.

INFO: Revapi requires Java8 update 40 (1.8.0_40) or later to run. Older versions may produce wrong results.

== Summary

While Revapi is designed to be extensible and in theory should support API checks in other languages than Java (not just programming languages but anything that can be decomposed to a tree structure) the only extension in existence today is the Java API checker.

The main distinguishing features of the Java API checker include:

  • large number of http://revapi.org/modules/revapi-java/differences.html[API checks] ** categorized by their influence on source, binary and "semantical" compatibility
  • support for computing the API "surface" by tracking usages of types across the checked library and also its dependencies (ability to report type "leakage" from deps)
  • support for Java8 constructs (default methods in particular)
  • powerful filtering stuff to check and reclassification of found problems
  • ability to filter by annotation presence
  • Maven plugin automatically includes depenendcies in the check

Other features:

== Building

This is a maven project, so to build you simply:

mvn install

== Usage

Revapi can be invoked in a couple of ways. It can be used as a standalone program, as a maven plugin or it can also be embedded in your application and used as a library.

=== Standalone

http://revapi.org/downloads.html[Download] the standalone distribution zip and

unzip revapi-XXX-standalone.zip cd revapi-XXX-standalone ./revapi.sh

Read the usage info and go.

=== Maven

[source,xml]

org.revapi revapi-maven-plugin ... org.revapi revapi-java ... com.acme my-extension ... ... ... api-check check ... ... ... ... ----

=== Gradle

There is an external Gradle plugin available for Revapi, https://github.com/palantir/gradle-revapi.

=== Embedding

[source,java]

Revapi revapi = Revapi.builder().withAllExtensionsFromThreadContextClassLoader().build();

AnalysisContext analysisContext = AnalysisContext.builder() .withOldAPI(API.of(...)) .withNewAPI(API.of(...)) .withConfigurationFromJSON("json").build();

revapi.analyze(analysisContext);

== Extending Revapi

See the http://revapi.org/architecture.html[site] for more info.

== Getting in touch

Twitter:: https://twitter.com/revapi_org[@revapi_org] IRC:: #revapi @ freenode Mailing list:: https://groups.google.com/forum/#!forum/revapi, [email protected] Issues:: https://github.com/revapi/revapi/issues Code:: https://github.com/revapi/


Get A Weekly Email With Trending Projects For These Topics
No Spam. Unsubscribe easily at any time.
java (30,381
api (1,618
maven-plugin (50
compatibility (23

Find Open Source By Browsing 7,000 Topics Across 59 Categories