groovy-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Andres Almiray <aalmi...@gmail.com>
Subject Re: Groovy and code coverage
Date Fri, 08 Sep 2017 13:21:03 GMT
I see. Also, the retention policy JaCoCo expects is CLASS, not SOURCE.

-------------------------------------------
Java Champion; Groovy Enthusiast
http://andresalmiray.com
http://www.linkedin.com/in/aalmiray
--
What goes up, must come down. Ask any system administrator.
There are 10 types of people in the world: Those who understand binary, and
those who don't.
To understand recursion, we must first understand recursion.

On Fri, Sep 8, 2017 at 3:11 PM, Remi Forax <forax@univ-mlv.fr> wrote:

>
>
> ------------------------------
>
> *De: *"Cédric Champeau" <cedric.champeau@gmail.com>
> *À: *"dev" <dev@groovy.apache.org>
> *Envoyé: *Vendredi 8 Septembre 2017 15:03:05
> *Objet: *Re: Groovy and code coverage
>
> Damn, who thought it was a good idea to put TIMESTAMPS in generated
> sources?
>
>
> It's a drop in replacement for javax.annotation.Generated [1] which is in
> a module what will be removed [2] from the modules of Java SE,
> so a long time ago :)
>
> Rémi
>
> [1] https://docs.oracle.com/javase/8/docs/api/javax/
> annotation/Generated.html
> [2] https://bugs.openjdk.java.net/browse/JDK-8152842
>
>
> 2017-09-08 15:00 GMT+02:00 Remi Forax <forax@univ-mlv.fr>:
>
>> A standard annotation for generated code was added in Java 9:
>> http://download.java.net/java/jdk9/docs/api/javax/annotation/processing/
>> Generated.html
>>
>> Rémi
>>
>> ------------------------------
>>
>> *De: *"Andres Almiray" <aalmiray@gmail.com>
>> *À: *dev@groovy.apache.org
>> *Envoyé: *Vendredi 8 Septembre 2017 11:41:18
>> *Objet: *Groovy and code coverage
>>
>> Hello everyone,
>>
>> As you may be aware there are only a few choices in the Java pace that
>> can be used for code coverage, JaCoCo being the one that gives the most
>> accurate results. While it's easy to setup JaCoco for Groovy sources there
>> are times where the tool reports no coverage for some lines of code that
>> should not have been counted for coverage in the first case, these are some
>> of the methods coming from GroovyObject and AST transformations,
>> specifically `getProperty`, `setProperty`, `getMetaClass`, and
>> `invokeMethod`.
>>
>> I had a chat with Marc Hoffmann yesterday about this situation, which is
>> a topic we've discussed a few times in the past. I've got some good news,
>> Groovy is not alone in this problem, the Lombok project has suffered the
>> same fate which has prompted them to seek a solution. The alternative they
>> came up with is to have Lombok identified generated code that should not be
>> covered with a special annotation (@lombok.Generated), JaCoCo has a
>> filtering feature (not yet public) that can identify elements annotated
>> with said annotation and skip them from coverage reports. See
>>
>> https://projectlombok.org/api/index.html?lombok/Generated.html
>> https://github.com/jacoco/jacoco/pull/513
>> https://github.com/jacoco/jacoco/blob/master/org.jacoco.
>> core/src/org/jacoco/core/internal/analysis/filter/
>> LombokGeneratedFilter.java
>>
>> This feature will be available for consumption in the next releases of
>> Lombok (1.16.8+) and JaCoCo (0.7.9+).
>>
>> Given this, Marc suggested that Groovy could follow the same idea and
>> provide an annotation that JaCoCo can identify, say for example
>> @groovy.transform.Generated.
>>
>> If such annotation were to be added to Groovy we would need (at least)
>> the following steps too:
>>  - update compiler to annotate `getProperty`, `setProperty`,
>> `getMetaClass`, and `invokeMethod` when the class does not explicitly
>> defines any of those methods.
>>  - review and update all core AST xforms that generate methods that
>> should be skipped from coverage.
>>  - document the usage of this annotation and encourage AST xform
>> developers to use it once they upgrade.
>>
>> Would be great to have this feature in the 2.6.0 release if possible.
>>
>> Thoughts?
>>
>> -------------------------------------------
>> Java Champion; Groovy Enthusiast
>> http://andresalmiray.com
>> http://www.linkedin.com/in/aalmiray
>> --
>> What goes up, must come down. Ask any system administrator.
>> There are 10 types of people in the world: Those who understand binary,
>> and those who don't.
>> To understand recursion, we must first understand recursion.
>>
>>
>

Mime
View raw message