-- Configuration types --

Since the 4.0.0 release the Checkstyle Plug-in uses plain Checkstyle configuration files. For easier reuse of existing Checkstyle configurations and to support some common use cases different Configuration types were introduced into the plug-in. The following section explains the existing configuration types:

Built-in Configuration

Built-in configurations come shipped with the plug-in (or an extending fragment). They can not be edited nor deleted.
You can create an own configuration based on a built-in (or any other) configuration by copying the configuration.
Built-in configurations cannot be created by the user but can be added through a fragment which extends the plugin.
Please read here for more info.

Internal Configuration

Internal configurations are stored within the Eclipse metadata. Use an internal configuration if you don't want to manage the location of your configuration by yourself.
Internal Configuration
You need to provide a unique name for the configuration, the plugin will generate a file name on its own and store the configuration file within the plugins state location inside the workspace.

An existing Checkstyle configuration file can be imported into the internal configuration by using the Import... button. Note that this will overwrite the existing setup for this configuration.
If you ever need the configuration file outside the plug-in use the export functionality.

Internal configurations can be edited and deleted (which will also delete the Checkstyle configuration file).

External Configuration

Use this configuration type if you have a Checkstyle configuration file outside of an Eclipse workspace in your file system.
The External Configuration just points to this configuration file and uses it from its location.
External Configuration
You need to provide a unique name for the configuration together with the full absolute path to the Checkstyle configuration file.
Relative paths are not supported, but there is support to make the absolut path a bit dynamic to allow differing absolute paths on multiple developer machines.
To do this use ${property} style pattern(s) in the location string, these patterns will be resolved from equally named Classpath Variables or Environment properties (passed into Eclipse via -D parameter).

External configurations can by default be edited if the configuration file is writable.
If you have a carefully crafted configuration file (with nice comments and all that) - which you don't want to "destroy" accidently by using the configuration editor - you can use the Protect Checkstyle configuration file option.
When enabled the configuration editor will not touch your file even if it is write enabled.
If you delete an External Configuration from the plug-in the external configuration file will not be deleted.

Remote Configuration

This configuration type can be used if you want to publish your Checkstyle configuration on a web server and have all developer in your company use it.
Remote Configuration
As usual a unique name must be provided together with the URL of the Checkstyle configuration file.
If the webserver requires HTTP basic authentication a popup dialog will request the credentials input.
Optionally you can let the plugin store the password, which will be stored in the Eclipse keyring.
While this offers a reasonable level of security it is not impossible to crack.

For the travelling consultants out there - the Cache configuration file option is for you.
When your company has deployed the Checkstyle configuration file on an internal server which is of course not reachable when away at a customers site, using this option will tell the plugin to cache the configuration file once it is reachable.
When the configured location is not reachable anymore the plugin will use the cached configuration file.
This allows you to use the same Checkstyle configuration On- and Offsite.

A Remote Configuration can not be edited but can be removed from the plug-in.

Project Relative Configuration (behaviour changed in 4.1.0)

If you have your Checkstyle configuration file inside a project in your workspace the easiest thing is to use the Project Relative Configuration.
Project Relative Configuration
Like always a unique name must be provided along with the relative path consisting of project-name/relative-path-in-project.
Using the Browse... button you can easily select the configuration file from a project.

A Project Relative configuration can be edited using the Configuration Editor when the configuration file is writable.
Like with External Configuration type the configuration file can be protected from accidently rewriting it with the Configuration Editor.
When a Project Relative configuration is deleted the Checkstyle configuration file remains untouched.