google / error-prone

Catch common Java mistakes as compile-time errors
https://errorprone.info
Apache License 2.0
6.85k stars 744 forks source link

Compatibility of refaster rules file not documented #1318

Open PhilippWendler opened 5 years ago

PhilippWendler commented 5 years ago

Description of the feature request:

Refaster writes serialized data into a file which then needs to be given to Error-Prone. As far as I could see it is nowhere documented whether this rule file is compatible between different versions. I.e., can I pass a rule file created with an older version to a newer error-prone, or vice versa? If yes, for which version ranges is this guaranteed (e.g., same minor version, or just same major version)?

Please document the compatibility rules.

What underlying problem are you trying to solve with this feature?

I am creating a set of refaster rules that would be useful for all of my organization's Java projects. I am trying to define a workflow of getting the rules to the users, and for this I would like to know whether I can pass around the binary rule file or whether the refaster rules should be distributed as source code and compiled just before they are applied.

Stephan202 commented 5 years ago

The templates rely on Java's built-in serialization framework and thus come with the usual java.io.Serializable caveats. Last week I found that the templates are not compatible between versions 2.3.2 and 2.3.3.

I agree that having such compatibility between versions would be a boon; this would eventually allow libraries to share best-practice usages as compiled Refaster templates (using tooling such as alluded to in https://github.com/google/error-prone/issues/552#issuecomment-516054278).