spotify / dataenum

Algebraic data types in Java.
Apache License 2.0
166 stars 16 forks source link

Avoid synthetic constructors by default #14

Closed pettermahlen closed 6 years ago

pettermahlen commented 6 years ago

This PR does two things:

togi commented 6 years ago

I think it'd be good to include a note in the readme about this feature and its default configuration. And on a separate not It would be nice if we could set up an integration test to check for synthetic methods, eg using https://github.com/JakeWharton/dex-method-list

codecov-io commented 6 years ago

Codecov Report

Merging #14 into master will decrease coverage by 1.23%. The diff coverage is 81.81%.

Impacted file tree graph

@@             Coverage Diff              @@
##             master      #14      +/-   ##
============================================
- Coverage     94.78%   93.55%   -1.24%     
- Complexity      179      192      +13     
============================================
  Files            21       23       +2     
  Lines           556      605      +49     
  Branches         80       83       +3     
============================================
+ Hits            527      566      +39     
- Misses           22       30       +8     
- Partials          7        9       +2
Impacted Files Coverage Δ Complexity Δ
...num/src/main/java/com/spotify/dataenum/Access.java 0% <0%> (ø) 0 <0> (?)
...potify/dataenum/processor/parser/ValuesParser.java 94.11% <100%> (ø) 5 <0> (ø) :arrow_down:
...com/spotify/dataenum/processor/util/Iterables.java 94.11% <100%> (+0.36%) 10 <1> (+1) :arrow_up:
...um/processor/generator/value/ValueTypeFactory.java 98.05% <100%> (ø) 42 <4> (ø) :arrow_down:
.../spotify/dataenum/processor/DataEnumProcessor.java 92.85% <100%> (+0.75%) 17 <0> (ø) :arrow_down:
...enum/processor/generator/spec/SpecTypeFactory.java 97.22% <100%> (+0.34%) 3 <0> (ø) :arrow_down:
...com/spotify/dataenum/processor/AccessSelector.java 85.71% <85.71%> (ø) 12 <12> (?)

Continue to review full report at Codecov.

Legend - Click here to learn more Δ = absolute <relative> (impact), ø = not affected, ? = missing data Powered by Codecov. Last update ff2aafa...08f8ab8. Read the comment docs.

pettermahlen commented 6 years ago

README docs added - about an integration test, I think it would be better to use something that looks at the actual modifiers, looking for SYNTHETIC (see for instance http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/java/lang/reflect/Modifier.java#Modifier.0SYNTHETIC) - it's 'secret', but that should anyway be safer than checking for a particular kind of method names to identify synthetic methods (cf the synthetic constructor names listed in #13). But that's for some other PR, I'd say. :)