parceler icon indicating copy to clipboard operation
parceler copied to clipboard

Ability to treat reflection warnings as errors

Open TWiStErRob opened this issue 5 years ago • 5 comments

Given the following class:

@Parcel
data class Parceled @ParcelConstructor constructor(
	val privateField: String
)

I get this build output:

> Task :kaptDebugKotlin
fail-on-warning\build\tmp\kapt3\stubs\debug\com\example\Parceled.java:9: warning: Parceler: Reflection is required to access private field: String privateField, consider using non-private.
    private final java.lang.String privateField = null;

I'm looking for a way to make this warning an error, similar to how lint and javac and kotlinc allows me to.

TWiStErRob avatar Mar 08 '20 13:03 TWiStErRob

I found a workaround: https://github.com/TWiStErRob/repros/tree/master/parceler/fail-on-warning, but it's quite elaborate.

TWiStErRob avatar Mar 08 '20 13:03 TWiStErRob

I like this idea. We could just change this decorator out for one that validates to an error based on an annotation processor configuration in this location: https://github.com/johncarl81/parceler/blob/master/parceler/src/main/java/org/parceler/internal/ParcelerInvocationBuilderStrategy.java#L40

johncarl81 avatar Mar 08 '20 20:03 johncarl81

Or use a validator that validates a warning to an error.

johncarl81 avatar Mar 08 '20 20:03 johncarl81

Something like dagger.moduleBindingValidation would be nice.

TWiStErRob avatar Mar 08 '20 20:03 TWiStErRob

Hmm, that actually gave me an idea for another workaround:

kapt {
   javacOptions {
      option("-Werror")
   }
}

since these warnings are coming from Javac running the annotation processor on kapt stubs.

Finer control is still appreciated though. 🤓 It is possible that there are multiple annotation processors in one kapt run, and someone would want Parceler to error, but another one has to have the warning (e.g. one a project I work on DBFlow warns, and it can't be fixed); meaning -Werror doesn't work here.

TWiStErRob avatar Mar 08 '20 20:03 TWiStErRob