# API Errors and Warnings Preferences

The following preferences can be set using the Plug-in Development > API Errors/Warnings preference page.

API problems are created during project builds (auto and full builds), the tooling breaks down the types of problems reported into one of three categories:

1. Usage Problems - restricted code is being called by unauthorized plug-ins
2. API Incompatibilities - changes between versions are not compatible
3. Version Problems - plug-in versions or code versions (@since tags) not correct
4. Analysis Options - general options

You can also configure the problem severities on a per project basis as well, by using the API Errors/Warnings property page for a project

## API Use

### General

Option | Description | Default
--- | --- | ---
Unsupported use of API Javadoc Tags | When enabled the API analysis builder will check for API Javadoc tags used incorrectly. | Ignore
Invalid references to system libraries | When enabled the API analysis builder will check for references to system libraries that might be illegal according to the execution environment specified for the bundle. | Ignore

### Restrictions

Option | Description | Default
--- | --- | ---
Implementing an interface marked as '@noimplement' | When enabled the API analysis builder will check for illegal implementation of marked interfaces. | Warning
Extending a type marked '@noextend' | When enabled the API analysis builder will check for classes that extend marked types. | Warning
Referencing a field or method marked '@noreference' | When enabled the API analysis builder will check for field and method references to tagged members. | Warning
Instantiating a class tagged '@noinstantiate' | When enabled the API analysis builder will check that tagged classes are not instantiated. | Warning
Overriding a method marked as '@nooverride' | When enabled the API analysis builder will check that tagged methods in parent classes are not overridden in any child class either by extending (re-implement with a call to the overridden parent) or re-implementing (with no call to the overridden parent). | Warning

### Leaks

Option | Description | Default
--- | --- | ---
Extends a non-API class | When enabled the API analysis builder will check if any API classes extend non-API types. | Warning
Implements a non-API interface | When enabled the API analysis builder will check if any API classes implement a non-API interface | Warning
Field with non-API type | When enabled the API analysis builder will check if any API types have public or protected fields with non-API types. | Warning
Method with a non-API return type | When enabled the API analysis builder will check if any API types have public or protected methods with non-API return types. | Warning
Method with non-API parameter type | When enabled the API analysis builder will check if any API types have public or protected methods with non-API parameter types. | Warning

## API Compatibility

Option | Description | Default
--- | --- | ---
Report API breakage even if authorized by major version increment | When enabled the API analysis builder will report problems for API breakages even if the major version of the bundle has already been incremented. | Disabled

### Bundle

Option | Description | Default
--- | --- | ---
An API type has become non-API | When enabled the API analysis builder will check if any API types in the current bundle have been changed to non-API types. | Error
A type has been removed | When enabled the API analysis builder will check if any API types have been removed from the API scope in the given bundle. | Error
An API re-exported type has become non-API | When enabled the API analysis builder will check if any API re-exported types in the current bundle have been changed to non-API types. | Error
A re-exported type has been removed | When enabled the API analysis builder will check if any API re-exported types have been removed from the API scope in the given bundle. | Error

### Class

Option | Description | Default
--- | --- | ---
A method (that needs to be implemented) has been added: | When enabled the API analysis builder will check if any public or protected methods that need to be implemented have been added to any API types. | Error
Restrictions have been added | When enabled the API analysis builder will check if API restrictions have been added for any API classes. | Error
A type parameter has been added | When enabled the API analysis builder will check if any type parameters have been added to any API classes. | Error
The superinterfaces hierarchy has been reduced | When enabled the API analysis builder will check if any parent interfaces have been removed from any API classes. | Error
The keyword 'abstract' has been added | When enabled the API analysis builder will check if the 'abstract' keyword has been added to any API classes. | Error
The keyword 'final' has been added | When enabled the API analysis builder will check if the 'final' keyword has been added to any API classes. | Error
Converted to annotation, enum, or interface | When enabled the API analysis builder will check if any API classes have been changed to annotations, enums, or interfaces. | Error
The visibility has been reduced | When enabled the API analysis builder will check if any public API classes have been made private or default scope. | Error
A field has been removed | When enabled the API analysis builder will check if any public or protected fields have been removed from any API classes. | Error
A method has been removed | When enabled the API analysis builder will check if any public or protected methods have been removed from any API classes. | Error
A constructor has been removed | When enabled the API analysis builder will check if any public or protected constructors have been removed from any API classes. | Error
The superclass hierarchy has been reduced | When enabled the API analysis builder will check if any superclasses have been removed from the hierarchy. | Error
A member type has been removed | When enabled the API analysis builder will check if any member types have been removed from any API classes. | Error
A type parameter has been removed | When enabled the API analysis builder will check if any type parameters have been removed from any API classes. | Error

### Interface

Option | Description | Default
--- | --- | ---
A field (interface not tagged as '@noimplement') has been added | When enabled the API analysis builder will check if any public fields have been added to any API interfaces. | Error
A method (interface not tagged as '@noimplement') has been added | When enabled the API analysis builder will check if any public methods have been added to any API interfaces. | Error
Restrictions have been added | When enabled the API analysis builder will check if API restrictions have added for any API interfaces. | Error
A type parameter has been added | When enabled the API analysis builder will check if any type parameters have been added to any API interfaces. | Error
Converted to class, enum, or annotation | When enabled the API analysis builder will check if any API interfaces have been changed to classes, enums, or interfaces. | Error
The superinterfaces hierarchy has been reduced | When enabled the API analysis builder will check if any parent interfaces have been removed for any API interfaces. | Error
A type parameter has been removed | When enabled the API analysis builder will check if any type parameters have been removed from any API interfaces. | Error
A field has been removed | When enabled the API analysis builder will check if any public fields have been removed from any API interfaces. | Error
A method has been removed | When enabled the API analysis builder will check if any public methods have been removed from any API interfaces. | Error
A member type has been removed | When enabled the API analysis builder will check if nay member types have been removed from any API interfaces. | Error

### Enum

Option | Description | Default
--- | --- | ---
The superinterfaces hierarchy has been reduced | When enabled the API analysis builder will check if any parent interfaces have been removed from any API enums. | Error
Converted to annotation, class, or interface | When enabled the API analysis builder will check if any API enums have been changed to annotations, classes, or interfaces. | Error
A field has been removed | When enabled the API analysis builder will check if any public fields have been removed from any API enums. | Error
An enum constant has been removed | When enabled the API analysis builder will check if any enum constants have been removed from any API enums. | Error
A method has been removed | When enabled the API analysis builder will check if any public methods have been removed from any API enums. | Error
A member type has been removed | When enabled the API analysis builder will check if any member types have been removed from any API enums. | Error

### Annotation

Option | Description | Default
--- | --- | ---
A method without a default value has been added | When enabled the API analysis builder will check if a method without a default value has been added to API annotations. | Error
Converted to class, enum, or interface | When enabled the API analysis builder will check if any API annotations have been converted to classes, enums or interfaces. | Error
A field has been removed | When enabled the API analysis builder will check if any public fields have been removed from any API annotations. | Error
A method has been removed | When enabled the API analysis builder will check if any public methods have been removed from any API annotations. | Error
A member type has been removed | When enabled the API analysis builder will check if any public member types have been removed from any API annotations. | Error

### Field

Option | Description | Default
--- | --- | ---
A constant value has been added | When enabled the API analysis builder will check if a constant value has been added to any previously un-initialized public or protected field constants for any API types. | Error
The type has been modified | When enabled the API analysis builder will check if the type of any public or protected fields has been changed for any API types. | Error
The constant value has been modified | When enabled the API analysis builder will check if the value of any public or protected field constants has been changed in any API types. | Error
The visibility has been reduced | When enabled the API analysis builder will check if any public or protected fields have been made private in any API types. | Error
The keyword 'final' has been removed for static constant | When enabled the API analysis builder will check if any public or protected fields have had the final keyword removed in any API types. | Error
The keyword 'final' has been added | When enabled the API analysis builder will check if the final keyword has been added to any public or protected fields in any API types. | Error
The keyword 'static' has been removed | When enabled the API analysis builder will check if the static keyword has been removed from any public or protected fields in any API types. | Error
The keyword 'static' has been added | When enabled the API analysis builder will check if the static keyword has been added to any public or protected fields in any API types. | Error
The constant value has been removed | When enabled the API analysis builder will check if the value of a constant field has been removed for any public or protected field constants in any API types. | Error
A type argument has been removed | When enabled the API analysis builder will check if a type argument has been removed from any public or protected fields in any API types. | Error

### Method

Option | Description | Default
--- | --- | ---
The @nooverride restriction has been added | When enabled the API analysis builder will check if the restrictions of any public or protected methods have been changed in any API types by adding the @nooverride tag. | Error
A type parameter has been added | When enabled the API analysis builder will check if a type parameter has been added to any public or protected methods for any API types. | Error
Converted variable argument to array type | When enabled the API analysis builder will check if a varargs argument has been expanded to an object array for any public or protected methods for any API types. | Error
The visibility has been reduced | When enabled the API analysis builder will check if any public or protected methods have been made private for any API types. | Error
The keyword 'abstract' has been added | When enabled the API analysis builder will check if any public or protected methods have been made abstract in any API types. | Error
The keyword 'static' has been added | When enabled the API analysis builder will check if any public or protected methods have been made static in any API types. | Error
The keyword 'static' has been removed | When enabled the API analysis builder will check if any public or protected methods have been made non-static in any API types. | Error
The keyword 'final' has been added (type tagged '@noextend') | When enabled the API analysis builder will check if any public or protected methods have been made final in any API types that have been tagged @noextend. | Error
The annotation default value has been removed | When enabled the API analysis builder will check if the default value associated with any API annotation method has been removed. | Error
A type parameter has been removed | When enabled the API analysis builder will check if a type parameter has been removed from any public or protected methods for any API types. | Error

### Constructor

Option | Description | Default
--- | --- | ---
A type parameter has been added | When enabled the API analysis builder will check if a type parameter has been added to any public constructors for any API types. | Error
Converted variable argument to array type | When enabled the API analysis builder will check if any varargs parameters have been expanded to object arrays for any public constructors for any API types. | Error
The visibility has been reduced | When enabled the API analysis builder will check if any public constructors have been made non-public in any API types. | Error
A type parameter has been removed | When enabled the API analysis builder will check if a type parameter has been removed from any public constructors for any API types. | Error

### Type Parameter

Option | Description | Default
--- | --- | ---
A class bound has been added | When enabled the API analysis builder will check if a class bound has been added to any type parameter of any API types. | Error
An interface bound has been added | When enabled the API analysis builder will check if any interface bounds have been added to any type parameter of any API types. | Error
A class bound has been modified | When enabled the API analysis builder will check if any class bounds have been changed on any type parameter of any API types. | Error
An interface bound has been modified | When enabled the API analysis builder will check if any interface bounds have been changed on any type parameter of any API types. | Error
A class bound has been removed | When enabled the API analysis builder will check if any class bounds have been removed from any type parameter of any API types. | Error
An interface bound has been removed | When enabled the API analysis builder will check if any interface bounds have been removed from any type parameter of any API types. | Error

## Version Management

Option | Description | Default
--- | --- | ---
Report missing '@since' tags | When enabled the API analysis builder will check if @since tags are missing for types or members added since the version of the API baseline in use. | Error
Report malformed '@since' tags | When enabled the API analysis builder will check if any @since tags currently in use are malformed (incorrect syntax). | Error
Report invalid '@since' tag version | When enabled the API analysis builder will check if any @since tags currently in use have the wrong version. | Error
Report incompatible bundle version | When enabled the API analysis builder will check if the bundle version for the plug-in is incorrect, based on any API changes and the current API baseline in use. | Error
Ignore minor version increment without API changes | If reporting for incompatible version numbers is enabled, this option can be used to tell the API analysis builder to ignore minor version changes if there has not been an API change compared to the current API baseline. | On
Ignore major version increment without API changes | If reporting for incompatible version numbers is enabled, this option can be used to tell the API analysis builder to ignore major version changes if there has not been an API change compared to the current API baseline. | On

## Analysis Options

Option | Description | Default
--- | --- | ---
Bundle missing required constraint/prerequisite | When enabled the API analysis builder will report any missing required constraint or prerequisite that prevents the builder from performing a complete analysis. Regardless of the value of this option the analysis is skipped for the corresponding bundle. | Error
Unused API problem filters | When enabled the API analysis builder will report any API problem filters that are no longer being used. | Warning

API Errors and Warnings Property Page
API Baselines Preferences