diff --git "a/database/tawos/tfidf/CLOV_tfidf-se.csv" "b/database/tawos/tfidf/CLOV_tfidf-se.csv" new file mode 100644--- /dev/null +++ "b/database/tawos/tfidf/CLOV_tfidf-se.csv" @@ -0,0 +1,337 @@ +"issuekey","created","storypoint","context","codesnippet","t_Bug","t_Suggestion","t_Sub.task","c_CEP.Plugin","c_CIJ.Plugin","c_Reporting","c_Maven.plugin","c_Test.Optimization","c_Grails.Plugin","c_Groovy","c_Ant.Tasks","c_Build.system","c_Documentation","c_Database","c_Instrumentation","c_Integrations","c_Scala" +"CLOV-1086","11/18/2008 04:51:25",2,"Line coverage data is inconsistent ""I'm running 2.4.1 on IDEA 7 and get inconsistent line and branch coverage in the editor: every line that is hit by the a test always gets """"1"""" as the hitcount. ""","",1,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0 +"CLOV-379","11/20/2008 13:34:07",2,"Surefire classpath is incorrect when depending on a jar and a test-jar from the same maven module ""We have two different applications that have the same symptom. Their test cases work properly when executed without clover, but when we run them with clover, they fail because classes or resource files are missing from the classpath. When running the builds with clover, the test cases are executed multiple times. Only the last time they run they fail. When checking the maven debug output (using the -X option), I found that the last time the test cases are run, a JAR file is missing from the classpath. With both applications it is a jar file from a maven module for which we both depend on the jar and test-jar types of the module. For example we have the following in the pom.xml file: ${parent.groupId} server-data-access ${version} test-jar test ${parent.groupId} server-data-access ${version} And for some reason, when the test cases are executed for the last time, the following second dependency is not included in the list of jars in the classpath. I have attached the pom.xml files from the module for which the test cases fail (server-web.pom), the pom.xml files from its parents, the pom.xml file for the module that generates both a jar and a test-jar (server-data-access.pom) and the log file that I get when running maven with the -X option. This is the classpath when the test cases fail (notice that /opt/bamboo/Bamboo/xml-data/build-dir/MONITORING-NIGHTLY/monitoring-server/server-data-access/target/server-data-access-1.0.2-SNAPSHOT.jar is missing): build 20-Nov-2008 08:47:57 [DEBUG] /opt/bamboo/Bamboo/xml-data/build-dir/MONITORING-NIGHTLY/monitoring-server/server-web/target/test-classes build 20-Nov-2008 08:47:57 [DEBUG] /opt/bamboo/Bamboo/xml-data/build-dir/MONITORING-NIGHTLY/monitoring-server/server-web/target/classes build 20-Nov-2008 08:47:57 [DEBUG] /opt/bamboo/.m2/repository/xerces/xercesImpl/2.9.1/xercesImpl-2.9.1.jar build 20-Nov-2008 08:47:57 [DEBUG] /opt/bamboo/.m2/repository/xml-apis/xml-apis/1.3.04/xml-apis-1.3.04.jar build 20-Nov-2008 08:47:57 [DEBUG] /opt/bamboo/Bamboo/xml-data/build-dir/MONITORING-NIGHTLY/monitoring-server/server-model/target/server-model-1.0.2-SNAPSHOT.jar build 20-Nov-2008 08:47:57 [DEBUG] /opt/bamboo/.m2/repository/commons-lang/commons-lang/2.1/commons-lang-2.1.jar build 20-Nov-2008 08:47:57 [DEBUG] /opt/bamboo/Bamboo/xml-data/build-dir/MONITORING-NIGHTLY/monitoring-server/server-actions/target/server-actions-1.0.2-SNAPSHOT.jar build 20-Nov-2008 08:47:57 [DEBUG] /opt/bamboo/.m2/repository/commons-logging/commons-logging/1.0.4/commons-logging-1.0.4.jar build 20-Nov-2008 08:47:57 [DEBUG] /opt/bamboo/.m2/repository/log4j/log4j/1.2.13/log4j-1.2.13.jar build 20-Nov-2008 08:47:57 [DEBUG] /opt/bamboo/.m2/repository/com/i4commerce/bml/util/8.19.0/util-8.19.0.jar build 20-Nov-2008 08:47:57 [DEBUG] /opt/bamboo/.m2/repository/com/i4commerce/bml/tk-util/8.19.0/tk-util-8.19.0.jar build 20-Nov-2008 08:47:57 [DEBUG] /opt/bamboo/.m2/repository/org/jboss/netty/netty/3.0.0.GA/netty-3.0.0.GA.jar build 20-Nov-2008 08:47:57 [DEBUG] /opt/bamboo/.m2/repository/org/springframework/spring/2.5.6/spring-2.5.6.jar build 20-Nov-2008 08:47:57 [DEBUG] /opt/bamboo/Bamboo/xml-data/build-dir/MONITORING-NIGHTLY/monitoring-server/server-core/target/server-core-1.0.2-SNAPSHOT.jar build 20-Nov-2008 08:47:57 [DEBUG] /opt/bamboo/Bamboo/xml-data/build-dir/MONITORING-NIGHTLY/monitoring-server/server-data-access/target/server-data-access-1.0.2-SNAPSHOT-tests.jar build 20-Nov-2008 08:47:57 [DEBUG] /opt/bamboo/.m2/repository/org/hibernate/hibernate/3.2.6.ga/hibernate-3.2.6.ga.jar build 20-Nov-2008 08:47:57 [DEBUG] /opt/bamboo/.m2/repository/net/sf/ehcache/ehcache/1.2.3/ehcache-1.2.3.jar build 20-Nov-2008 08:47:57 [DEBUG] /opt/bamboo/.m2/repository/commons-collections/commons-collections/2.1.1/commons-collections-2.1.1.jar build 20-Nov-2008 08:47:57 [DEBUG] /opt/bamboo/.m2/repository/javax/transaction/jta/1.0.1B/jta-1.0.1B.jar build 20-Nov-2008 08:47:57 [DEBUG] /opt/bamboo/.m2/repository/asm/asm-attrs/1.5.3/asm-attrs-1.5.3.jar build 20-Nov-2008 08:47:57 [DEBUG] /opt/bamboo/.m2/repository/dom4j/dom4j/1.6.1/dom4j-1.6.1.jar build 20-Nov-2008 08:47:57 [DEBUG] /opt/bamboo/.m2/repository/antlr/antlr/2.7.6/antlr-2.7.6.jar build 20-Nov-2008 08:47:57 [DEBUG] /opt/bamboo/.m2/repository/cglib/cglib/2.1_3/cglib-2.1_3.jar build 20-Nov-2008 08:47:57 [DEBUG] /opt/bamboo/.m2/repository/asm/asm/1.5.3/asm-1.5.3.jar build 20-Nov-2008 08:47:57 [DEBUG] /opt/bamboo/.m2/repository/org/hibernate/hibernate-annotations/3.3.0.ga/hibernate-annotations-3.3.0.ga.jar build 20-Nov-2008 08:47:57 [DEBUG] /opt/bamboo/.m2/repository/javax/persistence/persistence-api/1.0/persistence-api-1.0.jar build 20-Nov-2008 08:47:57 [DEBUG] /opt/bamboo/.m2/repository/org/hibernate/hibernate-commons-annotations/3.3.0.ga/hibernate-commons-annotations-3.3.0.ga.jar build 20-Nov-2008 08:47:57 [DEBUG] /opt/bamboo/.m2/repository/org/hibernate/hibernate-validator/3.0.0.ga/hibernate-validator-3.0.0.ga.jar build 20-Nov-2008 08:47:57 [DEBUG] /opt/bamboo/.m2/repository/org/hibernate/hibernate-search/3.0.0.GA/hibernate-search-3.0.0.GA.jar build 20-Nov-2008 08:47:57 [DEBUG] /opt/bamboo/.m2/repository/org/apache/lucene/lucene-core/2.2.0/lucene-core-2.2.0.jar build 20-Nov-2008 08:47:57 [DEBUG] /opt/bamboo/.m2/repository/javax/servlet/servlet-api/2.3/servlet-api-2.3.jar build 20-Nov-2008 08:47:57 [DEBUG] /opt/bamboo/.m2/repository/org/drools/drools-core/4.0.7/drools-core-4.0.7.jar build 20-Nov-2008 08:47:57 [DEBUG] /opt/bamboo/.m2/repository/org/mvel/mvel/1.3.1-java1.4/mvel-1.3.1-java1.4.jar build 20-Nov-2008 08:47:57 [DEBUG] /opt/bamboo/.m2/repository/commons-io/commons-io/1.4/commons-io-1.4.jar build 20-Nov-2008 08:47:57 [DEBUG] /opt/bamboo/.m2/repository/javax/j2ee/1.3/j2ee-1.3.jar build 20-Nov-2008 08:47:57 [DEBUG] /opt/bamboo/.m2/repository/com/sun/xml/bind/jaxb-impl/2.1.3/jaxb-impl-2.1.3.jar build 20-Nov-2008 08:47:57 [DEBUG] /opt/bamboo/.m2/repository/javax/xml/bind/jaxb-api/2.1/jaxb-api-2.1.jar build 20-Nov-2008 08:47:57 [DEBUG] /opt/bamboo/.m2/repository/javax/xml/stream/stax-api/1.0-2/stax-api-1.0-2.jar build 20-Nov-2008 08:47:57 [DEBUG] /opt/bamboo/.m2/repository/javax/activation/activation/1.1/activation-1.1.jar build 20-Nov-2008 08:47:57 [DEBUG] /opt/bamboo/.m2/repository/com/i4commerce/common/common-configuration/1.0.25/common-configuration-1.0.25.jar build 20-Nov-2008 08:47:57 [DEBUG] /opt/bamboo/.m2/repository/opensymphony/oscache/2.1.1/oscache-2.1.1.jar build 20-Nov-2008 08:47:57 [DEBUG] /opt/bamboo/.m2/repository/com/i4commerce/bml/bml-core/8.20.0-SNAPSHOT/bml-core-8.20.0-SNAPSHOT.jar build 20-Nov-2008 08:47:57 [DEBUG] /opt/bamboo/.m2/repository/com/i4commerce/bml/cache/8.20.0-SNAPSHOT/cache-8.20.0-SNAPSHOT.jar build 20-Nov-2008 08:47:57 [DEBUG] /opt/bamboo/.m2/repository/com/i4commerce/common/common-spring-util/1.0.25/common-spring-util-1.0.25.jar build 20-Nov-2008 08:47:57 [DEBUG] /opt/bamboo/.m2/repository/esper/esper/2.2.0/esper-2.2.0.jar build 20-Nov-2008 08:47:57 [DEBUG] /opt/bamboo/.m2/repository/org/antlr/antlr-runtime/3.0.1/antlr-runtime-3.0.1.jar build 20-Nov-2008 08:47:57 [DEBUG] /opt/bamboo/.m2/repository/org/antlr/stringtemplate/3.1-b1/stringtemplate-3.1-b1.jar build 20-Nov-2008 08:47:57 [DEBUG] /opt/bamboo/.m2/repository/quartz/quartz/1.5.2/quartz-1.5.2.jar build 20-Nov-2008 08:47:57 [DEBUG] /opt/bamboo/.m2/repository/junit/junit/3.8.1/junit-3.8.1.jar build 20-Nov-2008 08:47:57 [DEBUG] /opt/bamboo/.m2/repository/com/mockrunner/mockrunner/0.3.1/mockrunner-0.3.1.jar build 20-Nov-2008 08:47:57 [DEBUG] /opt/bamboo/.m2/repository/com/i4commerce/common/common-abstract-unit-tests/1.0.25/common-abstract-unit-tests-1.0.25-tests.jar build 20-Nov-2008 08:47:57 [DEBUG] /opt/bamboo/.m2/repository/com/i4commerce/bml/unittest/8.20.0-SNAPSHOT/unittest-8.20.0-SNAPSHOT.jar build 20-Nov-2008 08:47:57 [DEBUG] /opt/bamboo/Bamboo/xml-data/build-dir/MONITORING-NIGHTLY/monitoring-server/server-data-access/target/server-data-access-1.0.2-SNAPSHOT-tests.jar build 20-Nov-2008 08:47:57 [DEBUG] /opt/bamboo/.m2/repository/com/oracle/oracle_jdbc/10.2.0.2.0/oracle_jdbc-10.2.0.2.0.jar This is the classpath for when it succeeds: build 20-Nov-2008 08:45:07 [DEBUG] /opt/bamboo/Bamboo/xml-data/build-dir/MONITORING-NIGHTLY/monitoring-server/server-web/target/test-classes build 20-Nov-2008 08:45:07 [DEBUG] /opt/bamboo/Bamboo/xml-data/build-dir/MONITORING-NIGHTLY/monitoring-server/server-web/target/classes build 20-Nov-2008 08:45:07 [DEBUG] /opt/bamboo/.m2/repository/xerces/xercesImpl/2.9.1/xercesImpl-2.9.1.jar build 20-Nov-2008 08:45:07 [DEBUG] /opt/bamboo/.m2/repository/xml-apis/xml-apis/1.3.04/xml-apis-1.3.04.jar build 20-Nov-2008 08:45:07 [DEBUG] /opt/bamboo/Bamboo/xml-data/build-dir/MONITORING-NIGHTLY/monitoring-server/server-model/target/server-model-1.0.2-SNAPSHOT.jar build 20-Nov-2008 08:45:07 [DEBUG] /opt/bamboo/.m2/repository/commons-lang/commons-lang/2.1/commons-lang-2.1.jar build 20-Nov-2008 08:45:07 [DEBUG] /opt/bamboo/Bamboo/xml-data/build-dir/MONITORING-NIGHTLY/monitoring-server/server-actions/target/server-actions-1.0.2-SNAPSHOT.jar build 20-Nov-2008 08:45:07 [DEBUG] /opt/bamboo/.m2/repository/commons-logging/commons-logging/1.0.4/commons-logging-1.0.4.jar build 20-Nov-2008 08:45:07 [DEBUG] /opt/bamboo/.m2/repository/log4j/log4j/1.2.13/log4j-1.2.13.jar build 20-Nov-2008 08:45:07 [DEBUG] /opt/bamboo/.m2/repository/com/i4commerce/bml/util/8.19.0/util-8.19.0.jar build 20-Nov-2008 08:45:07 [DEBUG] /opt/bamboo/.m2/repository/com/i4commerce/bml/tk-util/8.19.0/tk-util-8.19.0.jar build 20-Nov-2008 08:45:07 [DEBUG] /opt/bamboo/.m2/repository/org/jboss/netty/netty/3.0.0.GA/netty-3.0.0.GA.jar build 20-Nov-2008 08:45:07 [DEBUG] /opt/bamboo/.m2/repository/org/springframework/spring/2.5.6/spring-2.5.6.jar build 20-Nov-2008 08:45:07 [DEBUG] /opt/bamboo/Bamboo/xml-data/build-dir/MONITORING-NIGHTLY/monitoring-server/server-core/target/server-core-1.0.2-SNAPSHOT.jar build 20-Nov-2008 08:45:07 [DEBUG] /opt/bamboo/Bamboo/xml-data/build-dir/MONITORING-NIGHTLY/monitoring-server/server-data-access/target/server-data-access-1.0.2-SNAPSHOT.jar build 20-Nov-2008 08:45:07 [DEBUG] /opt/bamboo/.m2/repository/org/hibernate/hibernate/3.2.6.ga/hibernate-3.2.6.ga.jar build 20-Nov-2008 08:45:07 [DEBUG] /opt/bamboo/.m2/repository/net/sf/ehcache/ehcache/1.2.3/ehcache-1.2.3.jar build 20-Nov-2008 08:45:07 [DEBUG] /opt/bamboo/.m2/repository/commons-collections/commons-collections/2.1.1/commons-collections-2.1.1.jar build 20-Nov-2008 08:45:07 [DEBUG] /opt/bamboo/.m2/repository/javax/transaction/jta/1.0.1B/jta-1.0.1B.jar build 20-Nov-2008 08:45:07 [DEBUG] /opt/bamboo/.m2/repository/asm/asm-attrs/1.5.3/asm-attrs-1.5.3.jar build 20-Nov-2008 08:45:07 [DEBUG] /opt/bamboo/.m2/repository/dom4j/dom4j/1.6.1/dom4j-1.6.1.jar build 20-Nov-2008 08:45:07 [DEBUG] /opt/bamboo/.m2/repository/antlr/antlr/2.7.6/antlr-2.7.6.jar build 20-Nov-2008 08:45:07 [DEBUG] /opt/bamboo/.m2/repository/cglib/cglib/2.1_3/cglib-2.1_3.jar build 20-Nov-2008 08:45:07 [DEBUG] /opt/bamboo/.m2/repository/asm/asm/1.5.3/asm-1.5.3.jar build 20-Nov-2008 08:45:07 [DEBUG] /opt/bamboo/.m2/repository/org/hibernate/hibernate-annotations/3.3.0.ga/hibernate-annotations-3.3.0.ga.jar build 20-Nov-2008 08:45:07 [DEBUG] /opt/bamboo/.m2/repository/javax/persistence/persistence-api/1.0/persistence-api-1.0.jar build 20-Nov-2008 08:45:07 [DEBUG] /opt/bamboo/.m2/repository/org/hibernate/hibernate-commons-annotations/3.3.0.ga/hibernate-commons-annotations-3.3.0.ga.jar build 20-Nov-2008 08:45:07 [DEBUG] /opt/bamboo/.m2/repository/org/hibernate/hibernate-validator/3.0.0.ga/hibernate-validator-3.0.0.ga.jar build 20-Nov-2008 08:45:07 [DEBUG] /opt/bamboo/.m2/repository/org/hibernate/hibernate-search/3.0.0.GA/hibernate-search-3.0.0.GA.jar build 20-Nov-2008 08:45:07 [DEBUG] /opt/bamboo/.m2/repository/org/apache/lucene/lucene-core/2.2.0/lucene-core-2.2.0.jar build 20-Nov-2008 08:45:07 [DEBUG] /opt/bamboo/.m2/repository/javax/servlet/servlet-api/2.3/servlet-api-2.3.jar build 20-Nov-2008 08:45:07 [DEBUG] /opt/bamboo/.m2/repository/org/drools/drools-core/4.0.7/drools-core-4.0.7.jar build 20-Nov-2008 08:45:07 [DEBUG] /opt/bamboo/.m2/repository/org/mvel/mvel/1.3.1-java1.4/mvel-1.3.1-java1.4.jar build 20-Nov-2008 08:45:07 [DEBUG] /opt/bamboo/.m2/repository/commons-io/commons-io/1.4/commons-io-1.4.jar build 20-Nov-2008 08:45:07 [DEBUG] /opt/bamboo/.m2/repository/javax/j2ee/1.3/j2ee-1.3.jar build 20-Nov-2008 08:45:07 [DEBUG] /opt/bamboo/.m2/repository/com/sun/xml/bind/jaxb-impl/2.1.3/jaxb-impl-2.1.3.jar build 20-Nov-2008 08:45:07 [DEBUG] /opt/bamboo/.m2/repository/javax/xml/bind/jaxb-api/2.1/jaxb-api-2.1.jar build 20-Nov-2008 08:45:07 [DEBUG] /opt/bamboo/.m2/repository/javax/xml/stream/stax-api/1.0-2/stax-api-1.0-2.jar build 20-Nov-2008 08:45:07 [DEBUG] /opt/bamboo/.m2/repository/javax/activation/activation/1.1/activation-1.1.jar build 20-Nov-2008 08:45:07 [DEBUG] /opt/bamboo/.m2/repository/com/i4commerce/common/common-configuration/1.0.25/common-configuration-1.0.25.jar build 20-Nov-2008 08:45:07 [DEBUG] /opt/bamboo/.m2/repository/opensymphony/oscache/2.1.1/oscache-2.1.1.jar build 20-Nov-2008 08:45:07 [DEBUG] /opt/bamboo/.m2/repository/com/i4commerce/bml/bml-core/8.20.0-SNAPSHOT/bml-core-8.20.0-SNAPSHOT.jar build 20-Nov-2008 08:45:07 [DEBUG] /opt/bamboo/.m2/repository/com/i4commerce/bml/cache/8.20.0-SNAPSHOT/cache-8.20.0-SNAPSHOT.jar build 20-Nov-2008 08:45:07 [DEBUG] /opt/bamboo/.m2/repository/com/i4commerce/common/common-spring-util/1.0.25/common-spring-util-1.0.25.jar build 20-Nov-2008 08:45:07 [DEBUG] /opt/bamboo/.m2/repository/esper/esper/2.2.0/esper-2.2.0.jar build 20-Nov-2008 08:45:07 [DEBUG] /opt/bamboo/.m2/repository/org/antlr/antlr-runtime/3.0.1/antlr-runtime-3.0.1.jar build 20-Nov-2008 08:45:07 [DEBUG] /opt/bamboo/.m2/repository/org/antlr/stringtemplate/3.1-b1/stringtemplate-3.1-b1.jar build 20-Nov-2008 08:45:07 [DEBUG] /opt/bamboo/.m2/repository/quartz/quartz/1.5.2/quartz-1.5.2.jar build 20-Nov-2008 08:45:07 [DEBUG] /opt/bamboo/.m2/repository/junit/junit/3.8.1/junit-3.8.1.jar build 20-Nov-2008 08:45:07 [DEBUG] /opt/bamboo/.m2/repository/com/mockrunner/mockrunner/0.3.1/mockrunner-0.3.1.jar build 20-Nov-2008 08:45:07 [DEBUG] /opt/bamboo/.m2/repository/com/i4commerce/common/common-abstract-unit-tests/1.0.25/common-abstract-unit-tests-1.0.25-tests.jar build 20-Nov-2008 08:45:07 [DEBUG] /opt/bamboo/.m2/repository/com/i4commerce/bml/unittest/8.20.0-SNAPSHOT/unittest-8.20.0-SNAPSHOT.jar build 20-Nov-2008 08:45:07 [DEBUG] /opt/bamboo/Bamboo/xml-data/build-dir/MONITORING-NIGHTLY/monitoring-server/server-data-access/target/server-data-access-1.0.2-SNAPSHOT-tests.jar build 20-Nov-2008 08:45:07 [DEBUG] /opt/bamboo/.m2/repository/com/oracle/oracle_jdbc/10.2.0.2.0/oracle_jdbc-10.2.0.2.0.jar""","",1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0 +"CLOV-1085","05/06/2009 07:19:02",2,"Message in Balloon after clean snapshot is bogus ""# Clean shapshot # First Optimised test run the balloon message is ok (see CIJ-272 re my thoughts on it) # Second optmised test run has some odd figures in it relating to expected savings and total test run time. ""","",1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0 +"CLOV-1084","05/08/2009 05:24:55",1,"No instrumentation Done, Always get two Tests run. ""Although 0 instr. was done, I still see two tests run. """," 2009-05-08 14:19:48,851 [8933804] INFO - a.clover.core_v2.5.0-build-dev - Updating existing database at '/Users/niick/work/CLOV-trunk/.clover/coverage.db'. 2009-05-08 14:19:49,638 [8934591] INFO - a.clover.core_v2.5.0-build-dev - Processing files at 1.5 source level. 2009-05-08 14:19:52,664 [8937617] INFO - a.clover.core_v2.5.0-build-dev - Clover all over. Instrumented 0 files (0 packages). 2009-05-08 14:19:52,664 [8937617] INFO - a.clover.core_v2.5.0-build-dev - Elapsed time = 3.026 secs. (0 files/sec, 0 srclines/sec) 2009-05-08 14:19:52,664 [8937617] INFO - over.idea.build.CloverCompiler - completed Instrumentation. 2009-05-08 14:19:53,738 [8938691] INFO - a.clover.core_v2.5.0-build-dev - Clover estimates having saved around 41 seconds on this optimized test run. The full test run takes approx. 41 seconds 2009-05-08 14:19:53,738 [8938691] INFO - a.clover.core_v2.5.0-build-dev - Clover included 2 test classes in this run (total # test classes : 84) 2009-05-08 14:19:54,689 [8939642] INFO - CloverProgressIndicator - Creating database 2009-05-08 14:19:54,690 [8939643] INFO - CloverProgressIndicator - Loading registry file 2009-05-08 14:19:56,686 [8941639] INFO - CloverProgressIndicator - Building Index 2009-05-08 14:19:56,686 [8941639] INFO - CloverProgressIndicator - Loading coverage data 2009-05-08 14:19:56,758 [8941711] INFO - CloverProgressIndicator - Reading per-test data 2009-05-08 14:19:56,995 [8941948] INFO - CloverProgressIndicator - Resolving coverage data 2009-05-08 14:19:57,345 [8942298] INFO - CloverProgressIndicator - Creating tree 2009-05-08 14:19:57,480 [8942433] INFO - CloverProgressIndicator - Tree model ready ",1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0 +"CLOV-701","08/24/2009 02:45:43",2,"Test Columns are empty (or -1) in project.js when generated via a JSON report ""When a JSON report is generated, the test fields: """"ErroneousTests"""":0,""""FailingTests"""":0,""""FilteredElements"""":0.42738318,""""PassingTests"""":0,""""PcErroneousTests"""":-1,""""PcFailingTests"""":-1,""""PcPassingTests"""":-1,""""TestExecutionTime"""":0,""""Tests"""":0, are all -1 or 0 in the project.js. e.g. https://bamboo.extranet.atlassian.com/browse/CCD-WCLV-488/artifact/Clover-HTML/project.js The test data is definitely available in the HTML report.""","",1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0 +"CLOV-906","03/05/2010 00:23:00",1,"Clover-for-Grails generates an exception when using the -clover.view option on the Grails command line. ""Clover-for-Grails generates an exception when using the -clover.view option on the Grails command line. According to Nick's assessment so far, this is a Windows-specific problem. See output below: """," C:\grails-1.2.1\samples\petclinic>grails test-app -clover.on -clover.view Welcome to Grails 1.2.1 - http://grails.org/ Licensed under Apache Standard License 2.0 Grails home is set to: C:\grails-1.2.1 Base Directory: C:\grails-1.2.1\samples\petclinic Resolving dependencies... Dependencies resolved in 2641ms. Running script C:\grails-1.2.1\scripts\TestApp.groovy Environment set to test Clover: Using config: [on:true, view:true] Using clover license path: C:\Documents and Settings\Giles Gaskell\.grails\1.2.1\projects\petclinic\plugins\clover-0.2\grails-app\conf\clover\clover-evaluation. license [clover-env] Loading clover.xml: jar:file:/C:/Documents%20and%20Settings/Giles%20Gaskell/.ivy2/cache/com.cenqua.clover/clover/jars/clover-3.0.0-m3.jar!/clover.x ml Using default clover-setup configuration. Clover: directories: [src/java, src/groovy, test, grails-app] includes: [**/*.groovy, **/*.java] excludes [**/conf/**, **/plugins/**] [clover-setup] Clover Version 3.0.0-m3, built on February 26 2010 (build-780) [clover-setup] Loaded from: C:\Documents and Settings\Giles Gaskell\.ivy2\cache\com.cenqua.clover\clover\jars\clover-3.0.0-m3.jar [clover-setup] Clover Evaluation License registered to Clover Grails Plugin. [clover-setup] You have 23 day(s) before your license expires. [clover-setup] Clover is enabled with initstring 'C:\Documents and Settings\Giles Gaskell\.grails\1.2.1\projects\petclinic\clover\db\clover.db' Clover: Forcing a clean to ensure Clover instrumentation occurs. Disable by setting: clover.forceClean=false [delete] Deleting directory C:\grails-1.2.1\samples\petclinic\target\classes [delete] Deleting directory C:\grails-1.2.1\samples\petclinic\target\test-classes [delete] Deleting directory C:\Documents and Settings\Giles Gaskell\.grails\1.2.1\projects\petclinic\clover Clover: Compile start. [mkdir] Created dir: C:\grails-1.2.1\samples\petclinic\target\classes [groovyc] Compiling 2 source files to C:\grails-1.2.1\samples\petclinic\target\classes [clover-setup] Creating new database at 'C:\Documents and Settings\Giles Gaskell\.grails\1.2.1\projects\petclinic\clover\db\clover.db'. [groovyc] Compiling 17 source files to C:\grails-1.2.1\samples\petclinic\target\classes [clover-setup] Creating new database at 'C:\Documents and Settings\Giles Gaskell\.grails\1.2.1\projects\petclinic\clover\db\clover.db'. [mkdir] Created dir: C:\grails-1.2.1\samples\petclinic\target\test-reports\html [mkdir] Created dir: C:\grails-1.2.1\samples\petclinic\target\test-reports\plain Starting unit test phase ... [mkdir] Created dir: C:\grails-1.2.1\samples\petclinic\target\test-classes\unit [groovyc] Compiling 1 source file to C:\grails-1.2.1\samples\petclinic\target\test-classes\unit [clover-setup] Updating existing database at 'C:\Documents and Settings\Giles Gaskell\.grails\1.2.1\projects\petclinic\clover\db\clover.db'. ------------------------------------------------------- Running 1 unit test... Running test org.grails.samples.OwnerControllerTests...PASSED Tests Completed in 2015ms ... ------------------------------------------------------- Tests passed: 6 Tests failed: 0 ------------------------------------------------------- Starting integration test phase ... [copy] Copying 1 file to C:\grails-1.2.1\samples\petclinic\target\test-classes\integration [copy] Copying 1 file to C:\grails-1.2.1\samples\petclinic\target\test-classes [copy] Copied 3 empty directories to 2 empty directories under C:\grails-1.2.1\samples\petclinic\target\test-classes Clover: Compile start. [groovyc] Compiling 1 source file to C:\grails-1.2.1\samples\petclinic\target\classes [clover-setup] Updating existing database at 'C:\Documents and Settings\Giles Gaskell\.grails\1.2.1\projects\petclinic\clover\db\clover.db'. [copy] Copying 1 file to C:\grails-1.2.1\samples\petclinic\target\classes Clover: Compile start. [groovyc] Compiling 1 source file to C:\grails-1.2.1\samples\petclinic\target\classes [clover-setup] Updating existing database at 'C:\Documents and Settings\Giles Gaskell\.grails\1.2.1\projects\petclinic\clover\db\clover.db'. [junitreport] Processing C:\grails-1.2.1\samples\petclinic\target\test-reports\TESTS-TestSuites.xml to C:\DOCUME~1\GILESG~1\LOCALS~1\Temp\null1750708552 [junitreport] Loading stylesheet jar:file:/C:/Documents%20and%20Settings/Giles%20Gaskell/.ivy2/cache/org.apache.ant/ant-junit/jars/ant-junit-1.7.1.jar!/org/apac he/tools/ant/taskdefs/optional/junit/xsl/junit-frames.xsl [junitreport] Transform time: 735ms [junitreport] Deleting: C:\DOCUME~1\GILESG~1\LOCALS~1\Temp\null1750708552 Tests PASSED - view reports in target\test-reports Clover: Tests ended [clover-historypoint] Clover Version 3.0.0-m3, built on February 26 2010 (build-780) [clover-historypoint] Loaded from: C:\Documents and Settings\Giles Gaskell\.ivy2\cache\com.cenqua.clover\clover\jars\clover-3.0.0-m3.jar [clover-historypoint] Clover Evaluation License registered to Clover Grails Plugin. [clover-historypoint] You have 23 day(s) before your license expires. [clover-historypoint] Writing report to 'C:\grails-1.2.1\samples\petclinic\.cloverhistory\clover-20100305112533.xml.gz' [clover-html-report] Clover Version 3.0.0-m3, built on February 26 2010 (build-780) [clover-html-report] Loaded from: C:\Documents and Settings\Giles Gaskell\.ivy2\cache\com.cenqua.clover\clover\jars\clover-3.0.0-m3.jar [clover-html-report] Clover Evaluation License registered to Clover Grails Plugin. [clover-html-report] You have 23 day(s) before your license expires. [clover-html-report] Not overwriting existing history point 'C:\grails-1.2.1\samples\petclinic\.cloverhistory\clover-20100305112533.xml.gz'. To force, set overw rite=""""true"""". [clover-html-report] Loading coverage database from: 'C:\Documents and Settings\Giles Gaskell\.grails\1.2.1\projects\petclinic\clover\db\clover.db' [clover-html-report] Loading historical coverage data from: 'C:\grails-1.2.1\samples\petclinic\.cloverhistory' [clover-html-report] Writing HTML report to 'C:\grails-1.2.1\samples\petclinic\build\clover\report' [clover-html-report] Done. Processed 1 packages in 3047ms (3047ms per package). [clover-html-report] Writing historical report to 'C:\grails-1.2.1\samples\petclinic\build\clover\report' [clover-html-report] Read 3 history points. [clover-html-report] using movers interval of 18 hours [clover-html-report] using movers interval of 18 hours [clover-html-report] Writing JSON historical-data to: C:\grails-1.2.1\samples\petclinic\build\clover\report\historical-json.js [clover-html-report] Done. Error executing script TestApp: java.lang.StringIndexOutOfBoundsException: String index out of range: 1 gant.TargetExecutionException: java.lang.StringIndexOutOfBoundsException: String index out of range: 1 at gant.Gant$_dispatch_closure4.doCall(Gant.groovy:331) at gant.Gant$_dispatch_closure6.doCall(Gant.groovy:334) at gant.Gant$_dispatch_closure6.doCall(Gant.groovy) at gant.Gant.withBuildListeners(Gant.groovy:344) at gant.Gant.this$2$withBuildListeners(Gant.groovy) at gant.Gant$this$2$withBuildListeners.callCurrent(Unknown Source) at gant.Gant.dispatch(Gant.groovy:334) at gant.Gant.this$2$dispatch(Gant.groovy) at gant.Gant.invokeMethod(Gant.groovy) at gant.Gant.processTargets(Gant.groovy:495) at gant.Gant.processTargets(Gant.groovy:480) Caused by: java.lang.StringIndexOutOfBoundsException: String index out of range: 1 at java.lang.String.charAt(String.java:687) at java.util.regex.Matcher.appendReplacement(Matcher.java:703) at java.util.regex.Matcher.replaceAll(Matcher.java:813) at java.lang.String.replaceAll(String.java:2190) at _Events.launchReport(_Events.groovy:138) at _Events$_run_closure6.doCall(_Events.groovy:108) at _GrailsEvents_groovy$_run_closure5.doCall(_GrailsEvents_groovy:58) at _GrailsEvents_groovy$_run_closure5.call(_GrailsEvents_groovy) at _GrailsTest_groovy$_run_closure1.doCall(_GrailsTest_groovy:214) at TestApp$_run_closure1.doCall(TestApp.groovy:102) at gant.Gant$_dispatch_closure4.doCall(Gant.groovy:324) ... 10 more Error executing script TestApp: java.lang.StringIndexOutOfBoundsException: String index out of range: 1 Application context shutting down... Application context shutdown. ",1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0 +"CLOV-930","03/24/2010 23:24:01",2,"Implement Test Optimization for Grails: -clover.optimize ""Running -clover.optimize will: * save a clover.snapshot on the first build * use this, to discern the optimal set of tests and their order, to run for subsequent builds based on: ** which source files have been modified ** length of test ** test result - failed tests will always be re-run""","",0,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0 +"CLOV-940","05/10/2010 00:38:13",3,"clover + ant + GWT does not compile and test with clover. ""https://support.atlassian.com/browse/BSP-2952 It looks like the GWT.clover.xxx are not executed. build 06-May-2010 17:24:30 Build sequence for target(s) `clover.fullclean' is [clover.clean, clover.fullclean] build 06-May-2010 17:24:30 Complete build sequence is [clover.clean, clover.fullclean, clover.save-history, GWT.clover.report, GWT.clover.json, checkstyle, common.checkstyle, buildonly, dist-dev, tools, apicheck-nobuild, apicheck, test, verify, common.all, build, doc, dist, -compile.emma.if.enabled, dev, GWT.with.clover, compile.emma.if.enabled, common.clean, GWT.clover.fullclean, common.build, GWT.clover.current, presubmit, all, GWT.clover.clean, GWT.clover.save-history, clover.snapshot, clover.json, clover.report, user, clover.log, common.compile.emma.if.enabled, ci, common.-compile.emma.if.enabled, GWT.clover.log, bikeshed, emma.merge, GWT.test, with.clover, jni, clean, clover.all, common.-create.emma.coverage.if.enabled, clover.xml, common.verify, -create.emma.coverage.if.enabled, buildtools, clover.current, samples, dist-bikeshed, soyc, GWT.clover.all, GWT.clover.xml, common.test, servlet, GWT.clover.snapshot, ] However targets without GWT are executed.""","",1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0 +"CLOV-951","06/22/2010 01:00:26",2,"Assertion failing (call not made from EDT) """""," Access is allowed from event dispatch thread only. Details: Current thread: Thread[ApplicationImpl pooled thread,5,Idea Thread Group] 1631384517 Our dispatch thread:Thread[AWT-EventQueue-1 9.0.2#IU-95.66, eap:false,6,Idea Thread Group] 1360788520 SystemEventQueueThread: Thread[AWT-EventQueue-1 9.0.2#IU-95.66, eap:false,6,Idea Thread Group] 1360788520 java.lang.Throwable at com.intellij.openapi.diagnostic.Logger.error(Logger.java:55) at com.intellij.openapi.application.impl.ApplicationImpl.a(ApplicationImpl.java:860) at com.intellij.openapi.application.impl.ApplicationImpl.assertIsDispatchThread(ApplicationImpl.java:847) at com.cenqua.clover.idea.coverage.DefaultCoverageManager.setCoverageTree(DefaultCoverageManager.java:176) at com.cenqua.clover.idea.coverage.DefaultCoverageManager.clearCache(DefaultCoverageManager.java:160) at com.cenqua.clover.idea.coverage.DefaultCoverageManager.setContextFilter(DefaultCoverageManager.java:151) at com.cenqua.clover.idea.ProjectPlugin.getCoverageManager(ProjectPlugin.java:219) at com.cenqua.clover.idea.config.ContextFilterPane.(ContextFilterPane.java:16) at com.cenqua.clover.idea.config.ProjectConfigPanel.getFilterPane(ProjectConfigPanel.java:200) at com.cenqua.clover.idea.config.ProjectConfigPanel.getTabbedContent(ProjectConfigPanel.java:120) at com.cenqua.clover.idea.config.ProjectConfigPanel.getLicensedPanel(ProjectConfigPanel.java:82) at com.cenqua.clover.idea.config.ProjectConfigPanel.initComponents(ProjectConfigPanel.java:63) at com.cenqua.clover.idea.config.ProjectConfigPanel.(ProjectConfigPanel.java:54) at com.cenqua.clover.idea.ProjectPlugin.createComponent(ProjectPlugin.java:328) at com.intellij.openapi.options.newEditor.OptionsEditor$Simple.(OptionsEditor.java:1113) at com.intellij.openapi.options.newEditor.OptionsEditor.b(OptionsEditor.java:350) at com.intellij.openapi.options.newEditor.OptionsEditor.access$2100(OptionsEditor.java:63) at com.intellij.openapi.options.newEditor.OptionsEditor$6$1.run(OptionsEditor.java:328) at com.intellij.openapi.application.impl.ApplicationImpl.runReadAction(ApplicationImpl.java:695) at com.intellij.openapi.options.newEditor.OptionsEditor$6.run(OptionsEditor.java:326) at com.intellij.openapi.application.impl.ApplicationImpl$5.run(ApplicationImpl.java:329) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) at java.util.concurrent.FutureTask.run(FutureTask.java:138) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) at java.lang.Thread.run(Thread.java:637) at com.intellij.openapi.application.impl.ApplicationImpl$1$1.run(ApplicationImpl.java:125) Access is allowed from event dispatch thread only. Details: Current thread: Thread[ApplicationImpl pooled thread,5,Idea Thread Group] 1631384517 Our dispatch thread:Thread[AWT-EventQueue-1 9.0.2#IU-95.66, eap:false,6,Idea Thread Group] 1360788520 SystemEventQueueThread: Thread[AWT-EventQueue-1 9.0.2#IU-95.66, eap:false,6,Idea Thread Group] 1360788520 java.lang.Throwable at com.intellij.openapi.diagnostic.Logger.error(Logger.java:55) ",1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0 +"CLOV-953","07/31/2010 00:41:07",3,"Occasionally clover is getting broken on the Hudson ""We are using Grails 1.2.2 , Hudson, clover From time to time Hudson fails with the following console output. Without any changes the next build can be fine. Licensed under Apache Standard License 2.0 Grails home is set to: D:\Apps\grails-1.2.2 Base Directory: D:\Apps-Pub\HUDSON_HOME\jobs\LifePoints\workspace\Lifepoints WARNING: Dependencies cannot be resolved for plugin [clover-3.0.2] due to error: null Resolving dependencies... Dependencies resolved in 1422ms. Running script D:\Apps\grails-1.2.2\scripts\TestApp.groovy Environment set to test Clover: Using config: [on:true] Using clover license path: D:\Apps-Pub\HUDSON_HOME\jobs\LifePoints\workspace\Lifepoints/clover.license [taskdef] Could not load definitions from resource cloverlib.xml. It could not be found. Error executing script TestApp: Problem: failed to create task or type clover-env Cause: The name is undefined. Action: Check the spelling. Action: Check that any custom tasks/types have been declared. Action: Check that any / declarations have taken place. : Problem: failed to create task or type clover-env Cause: The name is undefined. Action: Check the spelling. Action: Check that any custom tasks/types have been declared. Action: Check that any / declarations have taken place. at org.apache.tools.ant.UnknownElement.getNotFoundException(UnknownElement.java:484) at org.apache.tools.ant.UnknownElement.makeObject(UnknownElement.java:416) at org.apache.tools.ant.UnknownElement.maybeConfigure(UnknownElement.java:160) at _Events.toggleCloverOn(_Events.groovy:302) at _Events$_run_closure3.doCall(_Events.groovy:56) at _GrailsEvents_groovy$_run_closure5.doCall(_GrailsEvents_groovy:58) at _GrailsEvents_groovy$_run_closure5.call(_GrailsEvents_groovy) at _GrailsEvents_groovy.run(_GrailsEvents_groovy:62) at _GrailsEvents_groovy$run.call(Unknown Source) at _GrailsClean_groovy$run.call(Unknown Source) at _GrailsClean_groovy.run(_GrailsClean_groovy:29) at _GrailsClean_groovy$run.call(Unknown Source) at TestApp.run(TestApp.groovy:44) at TestApp$run.call(Unknown Source) at gant.Gant.processTargets(Gant.groovy:494) at gant.Gant.processTargets(Gant.groovy:480) Error executing script TestApp: Problem: failed to create task or type clover-env Cause: The name is undefined. Action: Check the spelling. Action: Check that any custom tasks/types have been declared. Action: Check that any / declarations have taken place.""","",1,0,0,0,0,0,0,0,1,1,0,1,0,0,0,0,0 +"CLOV-964","10/11/2010 05:13:55",1," does not work with Ant groovyc task ""Since TestSourceSet is not Serializable it doesn't work with Ant/groovyc. ""","Clover failed to integrate with java.io.NotSerializableException: com.cenqua.clover.tasks.TestSourceSet at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1081) at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:302) at java.util.ArrayList.writeObject(ArrayList.java:569) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:917) ... at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:302) at com.atlassian.clover.instr.java.InstrumentationConfig.saveToFile(InstrumentationConfig.java:427) at com.atlassian.clover.ant.groovy.GroovycSupport.newConfigDir(GroovycSupport.java:360) at com.atlassian.clover.ant.groovy.GroovycSupport.augmentCompilationClasspath(GroovycSupport.java:350) at com.atlassian.clover.ant.groovy.GroovycSupport.taskStarted(GroovycSupport.java:160) at org.apache.tools.ant.Project.fireTaskStarted(Project.java:2182)",1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0 +"CLOV-977","12/29/2010 00:51:45",1,"Clover's embedding of GSON brings in ""assembly-descriptor.xml"" into clover.jar which causes problems for ejbdoclet, others ""see support case https://support.atlassian.com/browse/CLV-5576 and forum post http://forums.atlassian.com/thread.jspa?messageID=257357810 the solution is to simply exclude this file when building the clover.jar ""","",1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0 +"CLOV-987","02/16/2011 10:43:09",1,"Cannot select contexts in IDEA 10.0.2 ""I select either the filter button in the coverage panel or go via the project settings (same either way) to get to the clover setting dialog. I select the 3rd tab (Contexts) and check the check-boxes 'catch bosy' and 'property methods'. The boxes become checked but the Apply button remains disabled (this is the main issue). I add a new custom context - and the Apply button is enabled. I click apply and the check boxes all reset back to their un-set state. The custom context remains. ""","",1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0 +"CLOV-991","03/30/2011 19:36:23",2,"Ternary clauses never executed still get coverage ""I don't know if this is disoverable at all, but the following example will work with any ternary statement: @Test public void testTernaryStatement() { ternaryStatement(true); } public static void ternaryStatement(boolean bool) { String value = bool ? """"true"""" : """"false""""; System.out.println(value); } This will mark the entire ternary statement as covered, while the false branch was in fact never triggered. Since Clover is primarily a coverage tool, I marked this issue Major.""","",0,1,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0 +"CLOV-1007","06/24/2011 13:59:50",1,"clover2:check fails with negative coverage if no class to instrument ""This happens either if no java class was found for instrumentation or if they were all excluded. Clover then reports a negative coverage of -100%. To my mind, this is not correct : strictly speaking, if no java class has to be tested for coverage, there is no relevant coverage value (I guess it is what the -100% means) but check should be OK. ""","",1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0 +"CLOV-1011","07/13/2011 14:43:38",1,"Coverage data not showing up in Intellij ""I've got the dev build from CLOV-1004, which worked for Intellij 10.3 but since I upgraded to 10.5.1, neither the latest public rev (3.1.0.v20110608114626-dev) nor the dev version of the plugin from CLOV-1004 works. In the projects view, it looks like the code is instrumented. But after I run a test, no coverage information is displayed. When I explicitly update the clover database, nothing is updated. The """"Test Runs"""" view behaves as if I never ran a test.""","",1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0 +"CLOV-1015","07/22/2011 21:18:40",5,"Test Optimization says 0 tests should run but all tests are run anyway ""Recently upgraded my Maven builds to use the Maven Surefire plugin version 2.9. Now my builds that run Clover2:optimized and say 0 tests should run, run all tests anyway. The upshot of this is that our optimized test runs are now taking over an hour versus the 15 to 20 minutes they were when the tests were correctly optimized away. Here is a section of the log file that shows the problem: """," [shell] cd dba; mvn -PPERSONAL,UnitTests,Clover.optimize -Djava.awt.headless=true --offline -Dforkmode=once -Dmaven.download.meter=silent -DskipAssembly -Dmaven.test.failure.ignore=true -Dmaven.test.redirectTestOutputToFile=false -Dmaven.clover.licenseLocation=/prodinfolocal/BambooHome/clover.license -Dclover.plugin.version=3.1.0 -Dclover.version=3.1.0 install clover2:aggregate clover2:clover [INFO] NOTE: Maven is executing in offline mode. Any artifacts not already in your local repository will be inaccessible. [INFO] Scanning for projects... [WARNING] Profile with id: 'PERSONAL' has not been activated. [WARNING] Profile with id: 'UnitTests' has not been activated. [INFO] ------------------------------------------------------------------------ [INFO] Building dba [INFO] task-segment: [install] [INFO] ------------------------------------------------------------------------ [INFO] [clover2:setup {execution: clover}] [INFO] No Clover instrumentation done on source files in: [/Users/mhusby/workarea/dba/src/main/java] as no matching sources files found [INFO] No Clover instrumentation done on source files in: [/Users/mhusby/workarea/dba/src/test/java] as no matching sources files found [WARNING] Using [Squid:configuration:jar:1.0-SNAPSHOT], built on Fri Jul 22 15:44:02 EDT 2011 even though a Clovered version exists but it's older (lastModified: Fri Jul 22 15:43:02 EDT 2011 ) and could fail the build. Please consider running Clover again on that dependency's project. [INFO] [resources:resources {execution: default-resources}] [WARNING] Using platform encoding (MacRoman actually) to copy filtered resources, i.e. build is platform dependent! [INFO] Copying 2 resources [INFO] Copying 1 resource [INFO] [compiler:compile {execution: default-compile}] [INFO] Nothing to compile - all classes are up to date [INFO] [resources:testResources {execution: default-testResources}] [WARNING] Using platform encoding (MacRoman actually) to copy filtered resources, i.e. build is platform dependent! [INFO] Copying 6 resources [INFO] [compiler:testCompile {execution: default-testCompile}] [INFO] Nothing to compile - all classes are up to date [INFO] [clover2:optimize {execution: clover}] [INFO] Adding fileset: directory=/Users/mhusby/workarea/dba/target/clover/src-test-instrumented, includes=[**/*Tests.*, **/*Test.*, **/Test*.*, qxjShouldNeverMatchAClass], excludes=[**/*TestCase.*, **/Test*Servlet.*, **/Abstract*.*, **/*FormModuleTests.*, **/*.xml, **/*$*.*] [INFO] Clover estimates having saved around 44 seconds on this optimized test run. The full test run takes approx. 44 seconds [INFO] Clover included 0 test classes in this run (total # test classes : 22) [INFO] [surefire:test {execution: default-test}] [INFO] Surefire report directory: /Users/mhusby/workarea/dba/target/surefire-reports ------------------------------------------------------- T E S T S ------------------------------------------------------- Running edu.mit.broad.prodinfo.dba.BlobDefTest Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.327 sec Running edu.mit.broad.prodinfo.dba.LongDefTest Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0 sec Running edu.mit.broad.prodinfo.dba.ExceptionWrapperTest Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.001 sec Running edu.mit.broad.prodinfo.dba.DoubleDefTest Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0 sec Running edu.mit.broad.prodinfo.dba.CacheMapTest Tests run: 5, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.108 sec Running edu.mit.broad.prodinfo.dba.OurDBsTest Tests run: 5, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 2.596 sec Running edu.mit.broad.prodinfo.dba.VArrayDefTest Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.004 sec Running edu.mit.broad.prodinfo.dba.VArrayFormatterTest Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.006 sec Running edu.mit.broad.prodinfo.dba.RowDefTest Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.311 sec Running edu.mit.broad.prodinfo.dba.BigDecimalDefTest Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.003 sec Running edu.mit.broad.prodinfo.dba.DoubleFormatterTest Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0 sec Running edu.mit.broad.prodinfo.dba.DateFormatterTest Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.007 sec Running edu.mit.broad.prodinfo.dba.LongFormatterTest Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.001 sec Running edu.mit.broad.prodinfo.dba.ClobDefTest Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.004 sec Running edu.mit.broad.prodinfo.dba.DBTest Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.778 sec Running edu.mit.broad.prodinfo.dba.DataIteratorTest Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.003 sec Running edu.mit.broad.prodinfo.dba.ProcedureDefTest Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.052 sec Running edu.mit.broad.prodinfo.dba.VArrayListTest Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.003 sec Running edu.mit.broad.prodinfo.dba.DBPoolTest Tests run: 8, Failures: 0, Errors: 0, Skipped: 1, Time elapsed: 39.08 sec Running edu.mit.broad.prodinfo.dba.StringDefTest Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.002 sec Running edu.mit.broad.prodinfo.dba.DataDefIteratorTest Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.001 sec Running edu.mit.broad.prodinfo.dba.RowTest Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.54 sec Results : Tests run: 49, Failures: 0, Errors: 0, Skipped: 1 [INFO] [clover2:snapshot {execution: clover}] [INFO] No span specified, using span of: 48s [INFO] Saving snapshot to: /Users/mhusby/.clover/Squid-dba/clover.snapshot [INFO] Clover Version 3.1.0, built on May 31 2011 (build-821) [INFO] Loaded from: /Users/mhusby/.m2/repository/com/cenqua/clover/clover/3.1.0/clover-3.1.0.jar [INFO] Clover: Academic License registered to Broad/MIT Institute. [INFO] Updating snapshot '/Users/mhusby/.clover/Squid-dba/clover.snapshot' against Clover database at '/Users/mhusby/workarea/dba/target/clover/clover.db' ",1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0 +"CLOV-1018","08/03/2011 11:36:24",2,"Can't Use ""Google App Engine"" Run Configuration in IDEA 10.5 when Clover Plug-in is Installed ""I am trying to start a GAE run configuration in IDEA 10.5 - after compilation and the web artifact being built, the process simply fails to start, with no errors. I uninstalled the plug-in and the process once again starts correctly. I also attempted to create a plain Java Application run configuration to start the process instead and this also fails with the same issue. The GAE libraries are pulled in as module libraries, via a Maven POM. I'm not sure if this is linked, but there definitely seems to be a problem with Run configurations when the main Java class being run is located in an external library, rather than being part of the project code-base. I've checked the IDEA logs and no errors are thrown. The plain Java Application run configuration had the following settings: Main Class: com.google.appengine.tools.development.DevAppServerMain VM Parameters: -Dappengine.sdk.root= -javaagent:/lib/agent/appengine-agent.jar Program Parameters: --disable_update_check Working Directory: ""","",1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0 +"CLOV-1025","09/19/2011 19:13:50",1,"Log the actual percentage coverage instead of ""Coverage check PASSED"". ""Clover logs the minimum percentage: Checking for coverage of [90.0%] for database But not the actual percentage. Coverage check PASSED Please add this logging, in order to help us know when it's safe to bump the threshold higher.""","",0,1,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0 +"CLOV-1056","01/20/2012 22:17:42",2,"IDEA 11 error turning OFF Clover coverage ""Error during dispatching of java.awt.event.MouseEvent[MOUSE_CLICKED,(691,256),absolute(1963,178),button=1,modifiers=Button1,clickCount=1] on frame0 java.lang.NullPointerException at clover.net.sf.jtreemap.swing.JTreeMap$Zoom.setNewDimension(JTreeMap.java:694) at clover.net.sf.jtreemap.swing.JTreeMap$Zoom.execute(JTreeMap.java:664) at clover.net.sf.jtreemap.swing.JTreeMap.zoom(JTreeMap.java:570) at clover.net.sf.jtreemap.swing.JTreeMap$HandleMouseClick.mouseClicked(JTreeMap.java:616) at java.awt.AWTEventMulticaster.mouseClicked(AWTEventMulticaster.java:270) at java.awt.AWTEventMulticaster.mouseClicked(AWTEventMulticaster.java:269) at java.awt.Component.processMouseEvent(Component.java:6507) at javax.swing.JComponent.processMouseEvent(JComponent.java:3321) at java.awt.Component.processEvent(Component.java:6269) at java.awt.Container.processEvent(Container.java:2229) at java.awt.Component.dispatchEventImpl(Component.java:4860) at java.awt.Container.dispatchEventImpl(Container.java:2287) at java.awt.Component.dispatchEvent(Component.java:4686) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4501) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422) at java.awt.Container.dispatchEventImpl(Container.java:2273) at java.awt.Window.dispatchEventImpl(Window.java:2713) at java.awt.Component.dispatchEvent(Component.java:4686) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:707) at java.awt.EventQueue.access$000(EventQueue.java:101) at java.awt.EventQueue$3.run(EventQueue.java:666) at java.awt.EventQueue$3.run(EventQueue.java:664) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76) at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87) at java.awt.EventQueue$4.run(EventQueue.java:680) at java.awt.EventQueue$4.run(EventQueue.java:678) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76) at java.awt.EventQueue.dispatchEvent(EventQueue.java:677) at com.intellij.ide.IdeEventQueue.e(IdeEventQueue.java:694) at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:530) at com.intellij.ide.IdeEventQueue.b(IdeEventQueue.java:416) at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:374) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:211) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105) at java.awt.EventDispatchThread.run(EventDispatchThread.java:90) ""","",1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0 +"CLOV-1062","03/02/2012 08:13:00",13,"Clover-for-Groovy failed to instrument Groovy sources having methods overridden by metaClass ""We were able to get clover report from maven-clover2-plugin even for groovy classes successfully. However when we try to override a method via Groovy metaclass in some tests, clover plugin fails on these tests. We simply added the following lines to our tests. MyClass.metaClass.myMethod = { return """"called"""" } Clover plugin gave the following error. Exception in thread """"main"""" BUG! exception in phase 'instruction selection' in source unit Test.groovy Clover-for-Groovy failed to instrument Groovy source: Test.groovy I attached the full stacktrace for further details.""","",1,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0 +"CLOV-1077","04/20/2012 07:52:41",2,"Missing icons on TreeView and Cloud Report tabs ""On IDEA 11 the """"Tree View"""" and """"Cloud Report"""" tabs have missing icons. See attached screenshot. ""","",1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0 +"CLOV-1082","05/03/2012 12:20:07",1,"Write up on CAC how to get Clover working with Maven and integration tests ""In particular: * numClients=1 should be set in the config * that the test runner JVM should not have -Dclover.distributed.coverage=ON set as this will override the numClients setting * that a context listener that starts on webapp start needs to be registered in web.xml so that the webapp Clover runtime connects back to the test runner JVM so that tests proceed ""","",1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0 +"CLOV-1087","05/07/2012 14:21:53",1,"Prepare tutorial how to configure distributed coverage for web applications ""Extend a following page: http://confluence.atlassian.com/display/CLOVER/Working+with+Distributed+Applications or add a subpage. Prepare a step-by-step tutorial how to set compile options, deploy artifacts and set container options in order to test web applications. Things to be considered (not a complete list): * fact that -Dclover.distributed.coverage=ON it will use the default settings including the default numClients=0 * numClients must be set to 1 in order to have blocking unit tests * we need a servlet context listener to avoid circular dependency: unit tests are waiting for business code to connect, but business code will not connect until first request (which will be triggered by unit tests)""","",0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0 +"CLOV-1090","05/16/2012 09:19:33",3,"Consistent statistics reporting in IDE and HTML reports for subpackages ""See https://answers.atlassian.com/questions/11664/package-summary-including-sub-packages A problem is as follows. In IDE (IntelliJ/Eclipse) in the Coverage view when we see statistics for given package it is a aggregated summary of the package and all its subpackages. By clicking """"Flatten packages"""" we can see statistics for a package without subpackages. See idea1.png. In HTML report we can see aggregated coverage only for the whole project. When we click on a certain package, we see statistics gathered only from classes from given package and not its subpackages. See html1.png and html2.png. The expected behaviour is as follows: 1) When we click on the """"Coverage"""" link in top-left frame in HTML report, the functionality shall be as it is now. I.e. it should open in the right (main) frame a list of packages, a statistics panel in the top-right corner will show stats for whole project, clicking on a package on the list will open a package details frame with stats in top-right corner for the package only. 2) When we click on the """"Coverage (Aggregate)"""" link in top-left frame, it will open in right frame list of package and a statistics panel for whole project (as it is now). But when user clicks on a package from list it will open a different package details frame with aggregated stats in top-right corner for the package and all subpackages. 3) A stats panel for option 1 shall have a label like """"Statistics for package (without subpackages) """" and for option 2 like """"Statistics for package (with subpackages) """" 4) A stats panel should have a link """"show with subpackages"""" / """"show without subpackages"""" for easy switch between reports. See html3.png *Update:* In new HTML report introduced in Clover 4, a package-level page could look this way: [^clover4-adg-package.png] so that toggle buttons would be similar to those a project-level page: [^clover4-adg-project.png] ""","",0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0 +"CLOV-1097","05/31/2012 18:59:41",2,"Guide users through Eclipse setup ""Our current Clover-for-Eclipse documentation is hard to follow. First it tells you how to enable Clover for your projects, mentions briefly that the views will pop up but won't have anything interesting on them yet, and then goes into great detail about each view. It would be helpful to instead walk the user through how to enable Clover for a project, and then go straight to configuration. There's no need to explain the views until there's something to show on them! It would also be helpful to describe how a project should be laid out. Do you need your test classes in the same Eclipse project as your source code, for example? ""","",0,1,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0 +"CLOV-1108","06/25/2012 12:14:47",1,"Eclipse does not exclude filtered-out methods from statistics ""When we define certain methods to be filtered-out in Eclipse, they are being marked as not executed (hit count = 0) instead of not being taken into consideration at all (no hit count). What's interesting, an HTML report generated from Eclipse use filters correctly. Metrics in Eclipse says: 4 methods, 4 statements; Metrics in HTML says: 3 methods, 3 statements. See attached screenshots.""","",1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0 +"CLOV-1109","06/29/2012 06:24:51",2,"Unit test failure during Clover2 custom lifecycle do not fail builds ""The Maven Clover2 plugin creates a custom lifecycle. When the unit tests are run in that lifecycle the build will not fail if there are test failures. This is because the lifecycle.xml file forces the Surefire plugin's testFailureIgnore configuration property to false. This is especially problematic in Jenkins builds where unit tests should fail the build (rather than allowing them to be unstable). Please remove this configuration or replace it with a mechanism that can be set in the POM. The file in question is src/main/resources/META-INF/maven/lifecycle.xml. See the [related Answers discussion|https://answers.atlassian.com/questions/61973/clover-ignore-dmaven-test-failure-ignore-false].""","",1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0 +"CLOV-1111","07/11/2012 07:56:18",1,"Prepare tutorial how to instrument RCP application under Eclipse ""Prepare manual on confluence.atlassian.com describing how to instrument and run RCP application under Eclipse IDE. Topics to be covered: * """"Run with Clover as ..."""" vs """"Run as ..."""" * various options in Run Configuration dialog * adding Clover dependency via Xbootclasspath or manually created plugin * exporting instrumented code (plugins, fragments, features, product) * config.ini for product and Xbootclasspath - running exported product (separately) and running it in IDE Prepare also code example showing how we can use Clover with RCP application. Open issue: how to distribute it with Clover-for-Eclipse. Options: * prepare sample aside and attach as zip to manual on confluence * implement a wizard so that using """"File > New > Example > Clover RCP Example"""" will generate sample projects in workspace (preferred solution, but more work effort) ""","",0,1,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0 +"CLOV-1112","07/11/2012 11:55:14",1,"Reading clover database across platforms does not resolve path correctly for FileInfo ""Clover database contains FileInfo objects for every source file. One of FileInfo fields is an absolute path to given file. When database is written, it uses current platform file separator for file name ('\' for windows, '/' for Linux/MacOS). However, when database is read it interprets file name using again current platform file separator. As a consequence, when database is generated on Windows and report generated on Linux, it cannot resolve file name properly - it takes whole path as a single path segment, resulting in paths like: /path/from/report/generation/sourcepath/D:/path/from/instrumented/build/file.java As a consequence report generation does create html file containing source code with highlighted coverage.""","",1,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0 +"CLOV-1129","07/24/2012 07:47:16",1,"Prepare manual how to set-up cross-platform testing ""Write how to set up Clover in case when someone is using a test framework not written in Java - for example shell scripts, C/C++ code. How to wrap this so that Clover can not only execute, but also optimize such tests. ""","",0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0 +"CLOV-1131","07/30/2012 12:49:30",2,"Unicode CR/LF characters in javadoc causes Eclipse/IntelliJ editors get out of sync ""Try the following example: {code:java} class Unicode { void foo() { System.out.println(""""1""""); /** {@code \u000a} LF */ } void goo() { System.out.println(""""2""""); /** {@code \u000d} CR */ } void hoo() { System.out.println(""""3""""); } } // end {code} In Eclipse editor, every CR/LF written in unicode causes that it interprets it as newline character. As a result left ruler """"sees"""" more lines and all subsequent coverage blocks are shifted down. In IntelliJ it's even worse, as we get exception. Stack trace: """," class Unicode { void foo() { System.out.println(""""1""""); /** {@code \u000a} LF */ } void goo() { System.out.println(""""2""""); /** {@code \u000d} CR */ } void hoo() { System.out.println(""""3""""); } } // end Error during dispatching of java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=com.cenqua.clover.idea.content.ContentPlugin$1@789e7511,notifier=null,catchExceptions=false,when=1343648365649] on sun.awt.windows.WToolkit@2018aa27: Wrong end: 270; document length=249; start=246 java.lang.IllegalArgumentException: Wrong end: 270; document length=249; start=246 at com.intellij.openapi.editor.impl.RangeMarkerImpl.(RangeMarkerImpl.java:47) at com.intellij.openapi.editor.impl.DocumentImpl.createRangeMarker(DocumentImpl.java:303) at com.intellij.openapi.editor.impl.RangeHighlighterImpl.(RangeHighlighterImpl.java:58) at com.intellij.openapi.editor.impl.MarkupModelImpl.a(MarkupModelImpl.java:119) at com.intellij.openapi.editor.impl.MarkupModelImpl.addRangeHighlighter(MarkupModelImpl.java:135) at com.cenqua.clover.idea.content.DocMarkupPlugin$HighlightMarkupBuilder.highlightStatement(DocMarkupPlugin.java:286) at com.cenqua.clover.idea.content.DocMarkupPlugin$HighlightMarkupBuilder.process(DocMarkupPlugin.java:220) at com.cenqua.clover.idea.content.DocMarkupPlugin.updateMarkups(DocMarkupPlugin.java:136) at com.cenqua.clover.idea.content.DocMarkupPlugin.refresh(DocMarkupPlugin.java:424) at com.cenqua.clover.idea.content.ContentPlugin$1.run(ContentPlugin.java:96) at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:646) at java.awt.EventQueue.access$000(EventQueue.java:84) at java.awt.EventQueue$1.run(EventQueue.java:607) at java.awt.EventQueue$1.run(EventQueue.java:605) at java.security.AccessController.doPrivileged(Native Method) at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87) at java.awt.EventQueue.dispatchEvent(EventQueue.java:616) at com.intellij.ide.IdeEventQueue.f(IdeEventQueue.java:627) at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:508) at com.intellij.ide.IdeEventQueue.b(IdeEventQueue.java:405) at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:369) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161) at java.awt.EventDispatchThread.run(EventDispatchThread.java:122) ",1,0,0,1,1,0,0,0,0,0,0,0,0,0,1,0,0 +"CLOV-1135","08/31/2012 08:03:19",1,"Coverage ruler does not read settings from Preferences ""A left ruler showing code coverage markers is always reading default color values (defined in plugin.xml), instead of current settings from IDE (Window > Preferences > ... Text editors > Annotations). Note that color in text editor is updated correctly. See attached screenshot. ""","",1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0 +"CLOV-1136","08/31/2012 10:11:24",2,"Coverage ruler does not refresh correctly when all source code annotations are disabled ""A left Clover coverage ruler does not refresh correctly after change in coverage in case when we don't have Clover-related source code annotations enabled. Steps to reproduce: - install Clover, enable it for a Moneybags project, perform full rebuild - open MoneyBagTest -> coverage is red - open Window > Preferences > Editors > Text editors > Annotations - for all """"Clover: xxx"""" annotation types disable """"Vertical ruler"""", """"Overview ruler"""" and """"Text as"""" checkboxes - run opened test case (right click, run as, junit test) Result: - JUnit view shows that tests were executed, Coverage Explorer view is also updated correctly, but the ruler is still highlighted in red - now scroll the text editor up and down - ruler refreshes during repaint; (the same happens when editor is reopened or resized) See attached screenshot. Expected result: 1) ruler should refresh automatically when coverage data is changed, no matter whether source annotation is enabled or not OR 2) ruler should not draw any color if corresponding source code annotation is disabled ""","",1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0 +"CLOV-1137","09/03/2012 13:27:24",2,"Remove grover*.jar after build ""A maven-clover2-plugin creates a groover*.jar file in $java.io.tmpdir directory. This JAR is next being dynamically added as a build dependency artifact. It must be available till end of the build. Unfortunately Maven has nothing like post-build-cleanup phase (which would be always executed at end of build). We need a workaround for this, for example: 1) Create a new Clover goal, like clover2:post-build-cleanup, which will remove this file. 2) Alternatively, find a way to add Clover groovy runtime classes to classpath, so that creation of JAR file would not be needed anymore. As soon as this bug is fixed, a corresponding update of Bamboo Clover Plugin is necessary. See linked issue. *Solution implemented:* Instead of playing with post-build cleanup, there are two new options available in taks (Ant) and clover2:setup / clover2:instrument goals (Maven): * skipGroverJar - if set to true it will not extract artifact at all (can be used only if there's no Groovy code in a project) * groverJar - target location of grover.jar file (fixed name and location instead of generating temporary file name in java.io.tmpdir) ""","",1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0 +"CLOV-1138","09/04/2012 07:55:30",1,"Create utility for upgrading third party libraries bundled in Clover ""In Clover-for-Ant we have an upgrade.xml Ant script, which can repackage clover.jar and install new version of jfreechart library into it. We shall extend this script to support replacement of all third party libraries used in Clover. Such script should be also available for Clover-for-Eclipse and Clover-for-IDEA. Keep in mind that we have to retrotranslate third party classes during repackaging to have them compatible with Java 1.4. Keep in mind that we have to prefix java packages with """"clover."""" in order to avoid name space conflicts. Packages: * com.google.gson * com.atlassian.* (Atlassian API) * com.keypoint.* * com.lowagie.* * gnu.cajo.* * it.unimi.dsi.fastutil.* * org.apache.commons.* * org.apache.log4j.* * org.apache.oro.* * org.apache.velocity.* * org.codehaus.groovy.antlr (?) * org.jfree * retrotranslator * org.apache.tools.ant.* (?) ""","",0,1,0,1,1,0,0,0,0,0,1,0,0,0,0,0,0 +"CLOV-1139","09/04/2012 12:58:02",0,"as a developer I'd like to instrument Java8 source code with no parse error ""Ability to instrument source code containing Java8 syntax, but without instrumentation of the new language features (i.e. lambdas would be 'invisible"""" for Clover). See: http://openjdk.java.net/projects/lambda/ Scope: * instrumentation (""""transparency"""" of new language features) * java.g file * reporting (syntax highlighting should still work) Out of scope: * changes in database format ""","",0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0 +"CLOV-1140","09/06/2012 10:26:02",5,"Make Clover-for-Android prototype publicly available ""Take a ShipIt prototype prepared by Michael, merge with the latest Clover version, make it working on Eclipse ADT, publish manual how to use it on CAC/Clover-for-Android page. ""","",0,1,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0 +"CLOV-1141","09/06/2012 10:31:07",13,"Refresh Clover-for-Scala prototype ""Tasks: * take Scala prototype https://confluence.atlassian.com/display/DEV/ShipIt+12+Delivery+-+Clover+for+Scala, * change the code so that it will use new Clover Service Provider Interface - CLOV-1142 * make it working with the latest Clover code base (version 4.0.x), ""","",0,1,0,0,0,0,0,0,0,0,1,0,1,0,1,0,0 +"CLOV-1142","09/06/2012 10:48:00",8,"Expose a Service Provider Interface for Clover for handling new languages ""Create a Service Provider Interface for Clover, which will allow to attach new source code and/or byte code instrumenters. It will allow us to create a pluggable architecture so that new programming languages (e.g. Scala, JRuby, Jython, Closure) could be supported. *Rough idea:* * new language instrumenters can be attached by META-INF/services ** they can provide some callback like canInstrument(File) or canInstrument(InstrumentationSource) ** clover shall pass file/instrumentation source to such instrumenter together with Clover's configuration and an open instrumentation session ** extension instruments on its own calling session.enterXyz()/exitXyz() methods ** extension writes output file on its own ** language instrumenter could work also with an Abstract Syntax Tree (e.g. Groovy or Scala - we may need a different way of attaching here) * new language renderers can be attached by META-INF/services - move to another issue? ""","",0,1,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0 +"CLOV-1143","09/07/2012 12:06:04",1,"Remove obsolete pages from Clover 3.1 space ""Hi Melanie, May I ask your team to delete following pages from CLOVER space? All of them are obsolete or available in spaces for older Clover releases. They are unnecessarily cluttering current documentation. https://confluence.atlassian.com/display/CLOVER/Changes+in+2.6.3.2+for+IDEA https://confluence.atlassian.com/display/CLOVER/Changes+in+2.6.3+for+IDEA https://confluence.atlassian.com/display/CLOVER/Changes+in+2.6.0+for+IDEA https://confluence.atlassian.com/display/CLOVER/Changes+in+2.5.1+for+IDEA https://confluence.atlassian.com/display/CLOVER/Changes+in+2.5.0+for+IDEA https://confluence.atlassian.com/display/CLOVER/Changes+in+2.4.3+for+IDEA https://confluence.atlassian.com/display/CLOVER/Changes+in+2.4.2+for+IDEA https://confluence.atlassian.com/display/CLOVER/Changes+in+2.4.1+for+IDEA https://confluence.atlassian.com/display/CLOVER/Changes+in+2.4.0+for+IDEA https://confluence.atlassian.com/display/CLOVER/Changes+in+2.3.2-beta5+for+IDEA https://confluence.atlassian.com/display/CLOVER/Changes+in+2.3.2-beta4+for+IDEA https://confluence.atlassian.com/display/CLOVER/Changes+in+2.3.2-beta3+for+IDEA https://confluence.atlassian.com/display/CLOVER/Changes+in+2.3.2-beta2+for+IDEA https://confluence.atlassian.com/display/CLOVER/Changes+in+2.3.1-beta1+for+IDEA https://confluence.atlassian.com/display/CLOVER/Changes+in+2.6.3+for+Eclipse https://confluence.atlassian.com/display/CLOVER/Changes+in+2.6.2+for+Eclipse https://confluence.atlassian.com/display/CLOVER/Changes+in+2.6.0+for+Eclipse https://confluence.atlassian.com/display/CLOVER/Changes+in+2.5.1+for+Eclipse https://confluence.atlassian.com/display/CLOVER/Changes+in+2.5.0+for+Eclipse https://confluence.atlassian.com/display/CLOVER/Changes+in+2.4.3+for+Eclipse https://confluence.atlassian.com/display/CLOVER/Changes+in+2.4.2+for+Eclipse https://confluence.atlassian.com/display/CLOVER/Changes+in+2.4.0+for+Eclipse https://confluence.atlassian.com/display/CLOVER/Changes+in+2.3.2+for+Eclipse https://confluence.atlassian.com/display/CLOVER/Changes+in+2.3.1+for+Eclipse https://confluence.atlassian.com/display/CLOVER/Changes+in+2.2.1+for+Eclipse https://confluence.atlassian.com/display/CLOVER/Changes+in+2.1.0+for+Eclipse https://confluence.atlassian.com/display/CLOVER/Changes+in+2.0.3+for+Eclipse https://confluence.atlassian.com/display/CLOVER/Changes+in+2.0.2+for+Eclipse https://confluence.atlassian.com/display/CLOVER/Changes+in+2.0.1+for+Eclipse https://confluence.atlassian.com/display/CLOVER/Changes+in+2.0.0+for+Eclipse https://confluence.atlassian.com/display/CLOVER/Changes+in+2.0.0.b2_1+for+Eclipse https://confluence.atlassian.com/display/CLOVER/Changes+in+2.6.3+for+Ant https://confluence.atlassian.com/display/CLOVER/Changes+in+2.6.2+for+Ant https://confluence.atlassian.com/display/CLOVER/Changes+in+2.6.0+for+Ant https://confluence.atlassian.com/display/CLOVER/Changes+in+2.5.1+for+Ant https://confluence.atlassian.com/display/CLOVER/Changes+in+2.5.0+for+Ant https://confluence.atlassian.com/display/CLOVER/Changes+in+2.4.3+for+Ant https://confluence.atlassian.com/display/CLOVER/Changes+in+2.4.2+for+Ant https://confluence.atlassian.com/display/CLOVER/Changes+in+2.4.0+for+Ant https://confluence.atlassian.com/display/CLOVER/Changes+in+2.3.2+for+Ant https://confluence.atlassian.com/display/CLOVER/Changes+in+2.3.1+for+Ant https://confluence.atlassian.com/display/CLOVER/Changes+in+2.3.0+for+Ant https://confluence.atlassian.com/display/CLOVER/Changes+in+2.2.1+for+Ant https://confluence.atlassian.com/display/CLOVER/Changes+in+2.2.0+for+Ant https://confluence.atlassian.com/display/CLOVER/Changes+in+2.1.0+for+Ant https://confluence.atlassian.com/display/CLOVER/Changes+in+2.0b2+for+Ant https://confluence.atlassian.com/display/CLOVER/Changes+in+2.0b1+for+Ant https://confluence.atlassian.com/display/CLOVER/Changes+in+2.0a5+for+Ant https://confluence.atlassian.com/display/CLOVER/Changes+in+2.0a4+for+Ant https://confluence.atlassian.com/display/CLOVER/Changes+in+2.0a3+for+Ant https://confluence.atlassian.com/display/CLOVER/Changes+in+2.0a2+for+Ant https://confluence.atlassian.com/display/CLOVER/Changes+in+2.0a1+for+Ant https://confluence.atlassian.com/display/CLOVER/Changes+in+2.0.3+for+Ant https://confluence.atlassian.com/display/CLOVER/Changes+in+2.0.2+for+Ant https://confluence.atlassian.com/display/CLOVER/Changes+in+2.0.1+for+Ant https://confluence.atlassian.com/display/CLOVER/Changes+in+2.0.0+for+Ant https://confluence.atlassian.com/display/CLOVER/Changes+in+2.6.0+for+Maven+2 https://confluence.atlassian.com/display/CLOVER/Changes+in+2.5.0+for+Maven+2 https://confluence.atlassian.com/display/CLOVER/Changes+in+2.4.3+for+Maven+2 https://confluence.atlassian.com/display/CLOVER/Changes+in+2.4.2+for+Maven+2 https://confluence.atlassian.com/display/CLOVER/Changes+in+2.3.2+for+Maven+2 https://confluence.atlassian.com/display/CLOVER/Changes+in+2.3.0+for+Maven+2 https://confluence.atlassian.com/pages/viewpage.action?pageId=110035179 https://confluence.atlassian.com/pages/viewpage.action?pageId=134873325 https://confluence.atlassian.com/pages/viewpage.action?pageId=103710921 https://confluence.atlassian.com/display/CLOVER/%5BTRASH%5D+Using+Clover+for+Maven+2+with+the+gwt-maven-plugin https://confluence.atlassian.com/display/CLOVER/%5BTRASH%5D+Using+Clover+with+the+GWT-maven+plugin https://confluence.atlassian.com/pages/viewpage.action?pageId=93683890 https://confluence.atlassian.com/pages/viewpage.action?pageId=71599635 https://confluence.atlassian.com/display/CLOVER/%5BTRASH%5D+Clover-for-Eclipse+User%27s+Guide https://confluence.atlassian.com/display/CLOVER/%28hidden+draft%29+Clover-for+Eclipse+Upgrade+Guide ""","",0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0 +"CLOV-1144","09/11/2012 15:01:29",3,"Support *.groovy files in src/main/java folder for groovy-eclipse-plugin ""*Problem:* Clover fails during instrumentation of *.groovy files in case when sources are put in src/main/java directory, instead of src/main/groovy and when the groovy-eclipse-plugin is used. *Steps to reproduce:* * create a project with groovy-eclipse-plugin and maven-clover2-plugin * put a *.groovy file inside src/main/java * run build *Expected error:* A reason is that Java compiler is involved here, Clover is called, it filters out all files which do not have *.java extension and as a consequence it passes wrong argument to CloverInstr. *Solution:* 1) Add check to AbstractInstrumenter (maven-clover2-plugin) so it does not call CloverInstr in case no matching files are found 2) Add support for src/main/java, src/test/java directories for Groovy - probably in GroovySourceScanner + CloverInstrumentInternalMojo *Workaround:* Put Groovy files in correct location i.e. src/main/groovy - they'll be handled correctly by Clover. *Background:* According to groovy-eclipse-plugin documentation, they recommend putting groovy files inside java folder - it's not nice, but it's the fastest set-up. http://groovy.codehaus.org/Groovy-Eclipse+compiler+plugin+for+Maven"""," [INFO] ------------------------------------------------------------------------ [INFO] BUILD FAILURE [INFO] ------------------------------------------------------------------------ [INFO] Total time: 1.201s [INFO] Finished at: Mon Sep 10 10:16:48 CDT 2012 [INFO] Final Memory: 7M/18M [INFO] ------------------------------------------------------------------------ [ERROR] Failed to execute goal com.atlassian.maven.plugins:maven-clover2-plugin:3.1.7:setup (default-cli) on project test.project: Clover has failed to instrument the source files in the [C:\workspaces\workspace\TestProject\target\clover\src-instrumented] directory -> [Help 1] org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal com.atlassian.maven.plugins:maven-clover2-plugin:3.1.7:setup (default-cli) on project test.project: Clover has failed to instrument the source files in the [C:\workspaces\workspace\TestProject\target\clover\src-instrumented] directory at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:217) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145) at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84) at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59) at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183) at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161) at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:319) at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156) at org.apache.maven.cli.MavenCli.execute(MavenCli.java:537) at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196) at org.apache.maven.cli.MavenCli.main(MavenCli.java:141) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290) at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230) at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409) at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352) Caused by: org.apache.maven.plugin.MojoExecutionException: Clover has failed to instrument the source files in the [C:\workspaces\workspace\TestProject\target\clover\src-instrumented] directory at com.atlassian.maven.plugin.clover.internal.instrumentation.AbstractInstrumenter.instrumentSources(AbstractInstrumenter.java:197) at com.atlassian.maven.plugin.clover.internal.instrumentation.AbstractInstrumenter.instrument(AbstractInstrumenter.java:72) at com.atlassian.maven.plugin.clover.CloverInstrumentInternalMojo.execute(CloverInstrumentInternalMojo.java:309) at com.atlassian.maven.plugin.clover.CloverSetupMojo.execute(CloverSetupMojo.java:31) at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209) ... 19 more [ERROR] [ERROR] [ERROR] For more information about the errors and possible solutions, please read the following articles: [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException *** ERROR: No source files specified USAGE: com.cenqua.clover.CloverInstr [OPTIONS] PARAMS [FILES...] ",1,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0 +"CLOV-1149","09/24/2012 09:11:07",1,"Make possible to see instrumented sources in Clover-for-Eclipse ""Clover-for-Eclipse: Clover instrumentation in performed in memory during compilation. As a consequence when there is any build error, we can see original source only and cannot check whether the problem lies in the Clover instrumenter itself. For example, in Clover-for-IDEA we can see instrumented sources because they're stored in temporary directory. To be implemented: add an option to get instrumented sources in Eclipse too.""","",0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0 +"CLOV-1150","09/24/2012 21:24:25",5,"Clover does not instrument groovy source files, (groovy-eclipse compiler) when located in src/main/groovy ""When building a groovy project with maven, I am trying to get clover code coverage reports. With all source files in .java and in src/main/java, clover works fine. However, with all source files in .groovy and in src/main/groovy, clover can not instrument the files (clover2:instrument, or clover2:setup). Everything that I can find is saying that clover versions after 3.1.3 support the maven groovy eclipse compiler (so long as the groovy files are located in src/main/groovy). See this ticket: https://jira.atlassian.com/browse/CLOV-1021?page=com.atlassian.jira.plugin.system.issuetabpanels:changehistory-tabpanel There is another support ticket that I found that seems to cover the same issue, however I cannot access it. Here is the link https://support.atlassian.com/browse/CLV-5878 A partial output log is included here. I will try to come up with a small test project that I can upload here. Any help would be appreciated. ""","",1,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0 +"CLOV-1151","09/28/2012 15:23:53",1,"Clover fails to find coverage snapshot files when IBM JRE is used ""*Problem:* it seems that IBM JRE implementation differs from Oracle JRE in such way that Object.hashCode() can return a negative value. As a consequence, file name suffix generated for coverage snapshot and test slice snapshot may be composed not only of '0-9a-z_' characters, but also have minus """"-"""" sign in it. As a result such file name does not match regular expression used for searching of coverage files and coverage is not read. *Workaround:* rename coverage snapshot file(s) and remove """"-"""" character. ""","",1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0 +"CLOV-1154","10/08/2012 12:32:18",2,"Inconsistent popup menu in different IDEA versions ""IDEA 10 and newer is not showing the """"Exclude from compile"""" option when sources are instrumented. In IDEA9 it was working fine. See 'popup_menu_in_ideas.png' screenshot. My suspicion is that IDEA somehow does not treat instrumented file as a source code, thus hiding this option from popup menu. What's more, when you click on the """"Jump to source"""" it opens the Explorer window, instead of opening the source file in IDEA. See also: META-INF/plugin.xml com.cenqua.clover.idea.CloverPlugin.initComponent() com.intellij.openapi.actionSystem.IdeActions; @NonNls String GROUP_COMPILER_ERROR_VIEW_POPUP = """"CompilerErrorViewPopupMenu""""; com.intellij.compiler.imp.CompilerErrorTreeView.addExtraPopupMenuActions(); ""","",1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0 +"CLOV-1155","10/08/2012 12:39:06",2,"Simple installer for Clover-for-IDEA ""When someone downloads the Clover-for-IDEA from www.atlassian.com he gets clover-idea-x.x.x.jar file. What to do next? Of course you have to open IDEA, select Settings > Plugins > Install from disk, but user might not know. Especially when taking into account that """"Install from disk"""" is not available in older IDEA versions. New feature: provide simple installer for Clover-for-IDEA. When user double-clicks on a JAR, a GUI installer starts (class defined in MANIFEST.MF) which asks for location of IDEA installation. Simple check whether selected folder contains config/plugins directory and copy jar into given location. Show also message how it can be installed from IDEA GUI. Business value: makes Clover evaluation easier. ""","",0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0 +"CLOV-1156","10/08/2012 12:41:43",1,"Refresh clover.atlassian.com ""The http://clover.atlassian.com/ page was not updated for last 2 years. Re-activate Bamboo builds related with this site to have live data. Add a link to this page on main Clover product page: http://www.atlassian.com/software/clover/overview ""","",0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0 +"CLOV-1157","10/08/2012 12:54:01",1,"Run with Clover as on a project with no Clover ""Clover-for-Eclipse. When you have a project with Clover disabled, the """"Run with Clover as"""" and """"Run optimized"""" buttons are still active. It makes no sense, buttons should be grayed-out.""","",0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0 +"CLOV-1159","10/08/2012 13:28:55",1,"Create small legend for Top Risks and Quick Wins in Cloud report ""Currently user does not know what the font size and colour means until he reads the documentation. Add small legend box or at least a single-line description for these two reports. Affects HTML report as well as Eclipse/IDEA views. ""","",0,1,0,1,1,0,0,0,0,0,1,0,0,0,0,0,0 +"CLOV-1160","10/08/2012 13:31:26",2,"Change default sort order in coverage report for packages/classes/methods ""Coverage report - show the least covered packages/classes/methods first. Table should not start with the highest coverage (starting from 100%) at the top, because developer is not interested in code which is already covered and tested, but in white spots. Add the possibility to sort by any column. Affected: HTML/IDE""","",0,1,0,1,1,0,0,0,0,0,1,0,0,0,0,0,0 +"CLOV-1161","10/08/2012 13:37:47",2,"Add drop-down with two options for coverage ""Add the """"drop-down"""" listbox which will have """"show cumulative coverage"""" and """"show coverage from last run"""" options. It should be added in Eclipse and IDEA. Note that the """"span"""" option is already available (Window > Preferences > Clover) but we can have either: * have time-based span or * set it to 0seconds which means load everything. Background reason: coverage is cumulative. Some customer have pointed out that coverage data for successive incremental change/save/compile/test cycles can lie and show coverage that's no longer there. That's because we aggregate all coverage data since the last full rebuild. We will hopefully have a better way of showing this in the future. In the meantime, scrubbing the coverage for a project and re-running the tests will show the coverage of tests just run. ""","",0,1,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0 +"CLOV-1162","10/08/2012 20:33:31",8,"Generate cumulative statement / complexity metric for need of methodContext filtering ""A method context has maxComplexity / maxStatements attributes which allow to reduce the scope of context filter for methods where these metrics are lower than defined level (by default maxComplexity/maxStatements is Int.MAX_VALUE, i.e. all methods are taken into account). Example: {code:xml} {code} However, customer reported a problem that it excludes methods containing inline classes, for instance: {code:java} // the getListener() method has only one statement: """"return ;"""" // if you use // then the whole code block will be filtered-out, including the actionPerformed() method ActionListener getListener() { return new ActionListener() { public void actionPerformed(ActionEvent e) { System.out.println(""""statement #1""""); System.out.println(""""statement #2""""); } }; } {code} In the case above ActionListener() is an inner class so it has their own metrics. And because of fact that context filters are """"cumulative"""" (so that whenever any code pattern is matched, then the whole block is excluded), the whole getListener() method is filtered-out, including inner class. *Solution:* We cannot change existing metrics (without breaking backward compatibility) and we cannot change the way how blocks are excluded (it would make no sense). But we can create new metrics called: cumulativeComplexity and cumulativeStatements. It would work as follows: * for every interface, class, enum or method find all inner classes, interfaces, enums or methods (*) ** this can be checked by matching occupied code regions (on a database level during metric calculation - preferred) or during instrumentation (code parser) * calculate cumulativeComplexity and cumulativeStatements by adding cumulative value from all inner objects to current entity complexity/statements value * add maxCumulativeComplexity / maxCumulativeStatments to Ant clover-setup/clover-instr and Maven clover2:setup / clover2:instr goals ** html reports would probably remain unchanged (just grey-out) (*) yes we should make code more flexible in order to make it ready to support code constructs like default methods in Java8 interfaces or Scala's functions inside functions etc """," // the getListener() method has only one statement: """"return ;"""" // if you use // then the whole code block will be filtered-out, including the actionPerformed() method ActionListener getListener() { return new ActionListener() { public void actionPerformed(ActionEvent e) { System.out.println(""""statement #1""""); System.out.println(""""statement #2""""); } }; } ",0,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0 +"CLOV-1165","10/10/2012 07:54:24",1,"Fix AbstractAntLogger ""The AbstractAntLogger class logs the message only if Ant Task is not null: As a consequence, no log is availalbe in case when code it's called outside Ant - problem was found in open-source Gradle Clover Plugin."""," protected void antLog(Project proj, Task task, String aMsg, int antLogLevel) { if (task != null) { proj.log(task, aMsg, antLogLevel); } } ",1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0 +"CLOV-1166","10/11/2012 13:33:32",2,"Clover does not work with Groovy 2.x ""*Problem:* Clover instrumentation fails for Groovy 2.x with a stack trace like below: *Reason:* RecorderGetterBytecodeInstruction extends org.codehaus.groovy.classgen.BytecodeInstruction and implements a following method: public void visit(groovyjarjarasm.asm.MethodVisitor methodVisitor) In Groovy 1.x MethodVisitor is an interface. In Groovy 2.x MethodVisitor is a class. Although RecorderGetterBytecodeInstruction compiles correctly with both Groovy versions, it fails at runtime during bytecode verification, becase visit() method gets different bytecode signature. *Solution:* Compile RecorderGetterBytecodeInstruction against two different Groovy versions. Load proper version using reflections at runtime. """," BUILD FAILED c:\Work\support\clv-5892-groovyjarjarasm\tutorial\build.xml:32: java.lang.IncompatibleClassChangeError at com.atlassian.clover.instr.groovy.bytecode.RecorderGetterBytecodeInstruction.visit(RecorderGetterBytecodeInstruction.java:109) at org.codehaus.groovy.classgen.AsmClassGenerator.visitBytecodeSequence(AsmClassGenerator.java:1771) at org.codehaus.groovy.classgen.BytecodeSequence.visit(BytecodeSequence.java:64) at org.codehaus.groovy.classgen.asm.StatementWriter.writeBlockStatement(StatementWriter.java:81) at org.codehaus.groovy.classgen.asm.OptimizingStatementWriter.writeBlockStatement(OptimizingStatementWriter.java:155) at org.codehaus.groovy.classgen.AsmClassGenerator.visitBlockStatement(AsmClassGenerator.java:455) at org.codehaus.groovy.ast.stmt.BlockStatement.visit(BlockStatement.java:69) at org.codehaus.groovy.ast.ClassCodeVisitorSupport.visitClassCodeContainer(ClassCodeVisitorSupport.java:101) at org.codehaus.groovy.ast.ClassCodeVisitorSupport.visitConstructorOrMethod(ClassCodeVisitorSupport.java:112) at org.codehaus.groovy.classgen.AsmClassGenerator.visitStdMethod(AsmClassGenerator.java:319) at org.codehaus.groovy.classgen.AsmClassGenerator.visitConstructorOrMethod(AsmClassGenerator.java:276) at org.codehaus.groovy.ast.ClassCodeVisitorSupport.visitMethod(ClassCodeVisitorSupport.java:123) at org.codehaus.groovy.classgen.AsmClassGenerator.visitMethod(AsmClassGenerator.java:396) at org.codehaus.groovy.ast.ClassNode.visitContents(ClassNode.java:1056) at org.codehaus.groovy.ast.ClassCodeVisitorSupport.visitClass(ClassCodeVisitorSupport.java:50) at org.codehaus.groovy.classgen.AsmClassGenerator.visitClass(AsmClassGenerator.java:180) at org.codehaus.groovy.control.CompilationUnit$14.call(CompilationUnit.java:786) at org.codehaus.groovy.control.CompilationUnit.applyToPrimaryClassNodes(CompilationUnit.java:1027) at org.codehaus.groovy.control.CompilationUnit.doPhaseOperation(CompilationUnit.java:564) at org.codehaus.groovy.control.CompilationUnit.processPhaseOperations(CompilationUnit.java:542) at org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:519) at org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:498) at org.codehaus.groovy.tools.FileSystemCompiler.compile(FileSystemCompiler.java:57) at org.codehaus.groovy.tools.FileSystemCompiler.doCompilation(FileSystemCompiler.java:213) at org.codehaus.groovy.ant.Groovyc.runCompiler(Groovyc.java:947) at org.codehaus.groovy.ant.Groovyc.compile(Groovyc.java:994) at org.codehaus.groovy.ant.Groovyc.execute(Groovyc.java:630) ",1,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0 +"CLOV-1167","10/15/2012 11:50:08",1,"Grails Clover Plugin does not intercept 'testc' compiler ""Grails 2.x has introduced a new compiler for building unit tests (from test/unit directory). The 'testc' task is the *org.codehaus.groovy.grails.test.compiler.GrailsTestCompiler* Build log looks like this: Clover does not intercept this compiler call (it supports Groovyc, Grailsc, GrailsCompiler). As a consequence unit tests are not instrumented and not included in coverage."""," |Compiling 1 source files ... [testc] ... \test\unit\clover\test\UnitTests.groovy |Compiling 1 source files ... [groovyc] ... \test\integration\IntegrationServiceTests.groovy ",1,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0 +"CLOV-1170","10/22/2012 08:58:03",1,"CloverOptimizerMojo does not support full include/exclude syntax ""*Problem:* CloverOptimizerMojo does not support full include/exclude syntax, which can be handled by maven-surefire-plugin. Two cases are not handled right now: (1) multiple paths separated by comma (2) regular expression instead of Ant-style pattern See: http://maven.apache.org/plugins/maven-surefire-plugin/examples/inclusion-exclusion.html *Workaround:* (1) use separate entries, like: (2) not available; user can try to replace regexp by set of Ant-style patterns *Implementation:* CloverOptimizerMojo relies an Ant-style patterns underneath. The CloverOptimizerMojo.createFileSet() method has fix for (1) - split every element in includes/excludes arrays using the comma delimiter and pass expanded arrays to appendIncludes() fix for (2) - find all elements from includes/excludes arrays having %regexp keyword, run file search on _directory_ using a filename matcher with regexp, create include/exclude for every file matched """," **/Test1.java, **/Test2.java %regex[.*Test.class] **/Test1.java **/Test2.java private FileSet createFileSet(Project antProject, final File directory, List includes, List excludes) { FileSet testFileSet = new FileSet(); ... testFileSet.appendIncludes((String[]) includes.toArray(new String[includes.size()])); } ",1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0 +"CLOV-1173","10/26/2012 13:46:57",2,"Add maxComplexity / maxStatements for Clover-for-Maven ""Ant has extra maxComplexity and maxStatements attributes available which are not supported in Maven plugin, for example: in Maven we have _name_ and _regexp_ attributes only: *Possible solution* Create which would accept entries like: Alternatively, extend parsing of existing tag so whenever it finds the entry it will not treat it as name of new context but as a structure from sample above. See also [-CLOV-1162-|../browse/CLOV-1162]."""," ((.* )?public .*(get|set|is)[A-Z0-9].* simple_method (.* )?public .*(get|set|is)[A-Z0-9].* 10 10 20 20 ... more ... ",0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0 +"CLOV-1175","11/07/2012 08:58:34",2,"Make HTML report more consistent about number of classes ""See attached screenshot. HTML report should list interfaces too.""","",0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0 +"CLOV-1177","11/07/2012 11:21:47",1,"Errors in ErrorLog when toggling between projects with Dashboard view active ""1) Toggle between cloverized projects. Dashboard visible. Message: Unexpected URI in the Dashboard view: C:\Users\Marek\.workspace-eclipse-3.4.2\Moneybags\.clover\report\dashboard-eclipse.html 2) Right click on a closed project, which was cloverized before. Dashboard view visible. Message: Error creating the dashboard 3) Cloverized project selected in Package Explorer, Dashboard view opened. Close the selected project. Message: Problem generating Dashboard report """," java.net.URISyntaxException: Illegal character in opaque part at index 2: C:\Users\Marek\.workspace-eclipse-3.4.2\Moneybags\.clover\report\dashboard-eclipse.html at java.net.URI$Parser.fail(Unknown Source) at java.net.URI$Parser.checkChars(Unknown Source) at java.net.URI$Parser.parse(Unknown Source) at java.net.URI.(Unknown Source) at com.cenqua.clover.eclipse.views.dashboard.DashboardLocationListener.changing(DashboardLocationListener.java:62) java.lang.NullPointerException at com.cenqua.clover.eclipse.views.dashboard.DashboardGenerator.execute(DashboardGenerator.java:41) at com.cenqua.clover.eclipse.views.dashboard.DashboardView.generateReport(DashboardView.java:100) at com.cenqua.clover.eclipse.views.dashboard.DashboardView.projectSelected(DashboardView.java:91) at com.cenqua.clover.eclipse.views.dashboard.DashboardView.selectionChanged(DashboardView.java:130) at org.eclipse.ui.internal.AbstractSelectionService.firePostSelection(AbstractSelectionService.java:179) at org.eclipse.ui.internal.AbstractSelectionService$2.selectionChanged(AbstractSelectionService.java:71) java.lang.NullPointerException at com.cenqua.clover.eclipse.views.dashboard.DashboardView.ensureReportFolderCreated(DashboardView.java:107) at com.cenqua.clover.eclipse.views.dashboard.DashboardView.generateReport(DashboardView.java:97) at com.cenqua.clover.eclipse.views.dashboard.DashboardView$1.run(DashboardView.java:153) at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35) ",1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0 +"CLOV-1178","11/08/2012 09:34:30",1,"Fix ruler coloring when include coverage from passed only is enabled ""Eclipse. Java Editor. Left ruler showing coverage colours (green/yellow/blue). Rules shows """"yellow coverage"""" when the """"include from passed only"""" option is enabled. There should be no yellow colour in such case. Note: source code is highlighted correctly, metrics are fine too. See screenshot.""","",1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0 +"CLOV-1179","11/08/2012 10:00:32",5,"Highlight whole method body if method is not covered ""If given method was not executed at all, the HTML report shows red highlighting only for method header. It's not a bug in code - our Velocity templates are just written this way. We should highlight the whole method body in red - in the same way as Eclipse/IntelliJ does. See screenshot. ""","",0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0 +"CLOV-1181","11/08/2012 12:58:41",2,"Multiple test cases in Test Run Explorer in IDEA ""Quickly click 'run' button in order to execute multiple sets of unit tests in parallel. IDEA runs them in parallel, as a consequence we've got duplicated test cases on a list. See attached screenshot. Affects all supported IDEA versions. We should have test cases from last test run only.""","",0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0 +"CLOV-1182","11/08/2012 13:04:29",3,"Multiple test cases in Test Runs view in Eclipse ""If unit tests are executed several times since the last build, the Test Run view shows multiple test results. Not a bug actually, but it could be improved by showing last results only. See screenshot. Affects all supported eclipse versions. ""","",0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0 +"CLOV-1183","11/08/2012 13:16:37",2,"Cloud Report in IDEA shows interfaces ""Cloud Report in IDEA is inconsistent with a Cloud Report in Eclipse - it shows interfaces, which does not actually have any executable code. It shows also annotations. Fix: don't list objects (interfaces, classes) which do not have any statements in the Cloud Report. Note that simple check if !isInterface() is not sufficient as interfaces in Java8 will have default methods with code.""","",1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0 +"CLOV-1184","11/08/2012 13:48:01",1,"Check Now button does not work if project is not opened in IDEA ""Install the latest Clover plugin version in IDEA. Click Settings > IDE Settings > Clover > Auto Update > Check now button. If project is opened then pop-up is shown that the latest version is already installed. If no project is opened (i.e. you're on a IDEA's welcome page), pop-up is not shown. See attached images. Problem occurs on IDEA 11.x and 12.x. ""","",1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0 +"CLOV-1185","11/08/2012 14:25:18",2,"Test optimization is broken in IDEA11 and above ""JetBrains have changed sth in IDEA 11 regarding unit test run configuration, as a consequence Clover does not """"see"""" and thus does not optimize all unit tests. Problem does not occur on IDEA 9.x, 10.x, 10.5.x. It is present on IDEA 11.x and probably also on 12.x. See attached images.""","",1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0 +"CLOV-1186","11/12/2012 06:46:53",5,"IDEA12 JavaSourceTransformingCompiler functionality has been removed ""Since build 122.694 Clover 3.1.8 cannot work with IDEA12 EAP, because the """"external"""" build functionality was introduced and the JavaSourceTransformingCompiler is no longer supported. See issue http://youtrack.jetbrains.com/issue/IDEA-94612""","",1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0 +"CLOV-1187","11/15/2012 15:25:50",1,"Don't spam the console with println anytime clover grails plugin is installed ""From looking at the _Events.groovy hooks in the plugin, there are several println statements which will execute in all contexts, not just testing and not just when clover.on is specified. Specifically, the set classpath and compile start/end hooks will happen everytime any Grails command is run. This is bad practice for a plugin. The println statements should be changed to use the grailsConsole which is available automatically println """"foo"""" => grailsConsole.log """"foo"""" or grailsConsole.updateStatus """"foo"""" Secondly, this should probably be wrapped in a helper which only prints if the the clover is enabled, ie: def logStuff(msg) { if( config.on ) grailsConsole.log msg }""","",0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0 +"CLOV-1188","11/16/2012 00:58:02",13,"Aggregate coverage by current author and commit regex ""I love CIJ. When I use git, I find myself making a lot of commits, and I want to see my test coverage aggregated by the jira ticket I've put in my commit log. For example, let's say I'm working on a project for 3 days. I might make 50 commits. All throughout my development, I'd like to keep a running track of how the test coverage is *for my code, bounded by a commit regex*. In other words, I'd like to use something like git blame, married with coverage, to give me feedback like """"Hey Zim, the feature you're working on only has 52% coverage"""". Awesome-er still would be something like the class coverage pane, but using only lines I've changed. So I could have a window that shows the classes I've changed, and a summary of the coverage for the lines that I've changed, again bounded by a the jira ticket in my commit logs. This would be crazy to do in something other than a lightning fast DVCS like git or mercurial...but I have totally drunk the git cool aid.""","",0,1,0,1,1,1,1,0,0,0,1,0,0,0,0,0,0 +"CLOV-1189","11/19/2012 19:11:56",0,"Report generation seems to get into an infinite loop, never finishes ""For some reason, in our Grails test environment, clover is stuck in what seems to be an infinite loop recording the data for all the files instrumented during the run. This occurs at the end of a run started with """"grails test-app -clover.on"""" which runs both unit and integration tests. Our project is fairly reasonable in size: During the run, Clover generates an amazing number of files in the .clover/ directory (about 600,000 files *.s files) At the end of the run we get: I've attached a chunk of the log file looping on the report generation, the full log file is 4GB before I stopped it. Also, I've attached a stack trace taken while it is seemingly looping. It's weird, we are evaluating clover and it works fine on our other project module, but not this one. The configuration is the same: """," +----------------------+-------+-------+ | Name | Files | LOC | +----------------------+-------+-------+ | Controllers | 8 | 435 | | Domain Classes | 401 | 18552 | | Services | 36 | 4773 | | Tag Libraries | 5 | 790 | | Groovy Helpers | 345 | 17830 | | Java Helpers | 3 | 141 | | Unit Tests | 68 | 5040 | | Integration Tests | 401 | 14290 | | Scripts | 6 | 83 | +----------------------+-------+-------+ | Totals | 1273 | 61934 | +----------------------+-------+-------+ [Step 2/3] | Completed 563 integration tests, 0 failed in 328038ms [09:31:13][Step 2/3] | Tests PASSED - view reports in /home/teamcity/TeamCity/buildAgent1/work/7f907064610a9f8f/common/target/test-reports [09:31:13][Step 2/3] Clover: Tests ended [09:31:13][Step 2/3] Clover: Generating report using default 'clover-report' task clover { excludes = ['**/conf/**', '**/plugins/**', '**/migrations/**', '**/drillDown/**', '**/generator/**'] initstring = """".clover/common.db"""" } ",1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0 +"CLOV-1190","11/22/2012 14:01:53",2,"The tag from is not passed to groovyc ""As in subject. As a consequence, the DefaultTestDetector is always used for Groovy code. *Fix:* Build proper TestDetector instance in GroovycSupport, which will be next serialized into InstrumentationConfig (instrumentation.ser file), so that next the Grover can deserialize it and pass to InstrumentingCodeVisitor. ""","",0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0 +"CLOV-1192","11/29/2012 10:43:38",5,"Create ClassInfo objects for anonymous inline classes ""During implementation of CLOV-1162 I've found that anonymous inline classes does not have their own ClassInfo object crated. Instead of this, methods of inline class are added to the enclosing class. For instance, a following code: is stored in clover database in this way: It means that on reports the AggregatedMetrics.C class is presented as having 5 methods, while it has 2 actually. It's not a bug. There was a design decision to not present anonymous classes in a report. Possible improvement: * create ClassInfo objects for anonymous classes * add option for reporting whether to show anonymous classes (like InstrumentationSessionImplTestSample2$1) or not """," public class AggregatedMetrics { /** * Inner class, case with a method having an inline anonymous class * statements = 3 (sum of direct methods' statements) * aggregatedStatements = 5 (sum of direct methods' aggregated statements) */ class C { /** * Method: statements = 2; aggregatedStatements = 4 (method's statements + inline class aggregated statements) */ Iterator methodThree() { int d = 4; /** * Inline class: statements = aggregatedStatements = 2 (sum of its methods) */ return new InstrumentationSessionImplTestSample2() { /** statements = aggregatedStatements = 1 */ public boolean hasNext() { return false; } /** statements = aggregatedStatements = 1 */ public Object next() { return null; } /** statements = aggregatedStatements = 0 */ public void remove() { } }; } /** statements = aggregatedStatements = 1 */ void methodFour() { int e = 5; } } } ",0,1,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0 +"CLOV-1193","11/30/2012 10:24:30",1,"as a developer I don't need to run Clover on JDK1.4 anymore ""*Idea:* Sun Java 1.4 has: * end of public updates - Oct 2008 * end of Premier Support - Feb 2010 * end of Extended Support - Feb 2013 * see http://www.oracle.com/technetwork/java/eol-135779.html IBM Java 1.4: * is no longer Generally Available (GA) since Dec 2004; * its End Of Servcie (EOS) will expire on September 2013: * see https://www.ibm.com/developerworks/java/jdk/lifecycle/ According to various sources, most popular are Java6 and Java7; Java1.4 has a fraction of market right now: * http://www.statowl.com/java.php although the report above shows Java version in web browser. Production environment may be different (especially regarding IBM Java). *Benefits:* Dropping support for Java 1.4 would ease Clover development a lot, as we could: * directly use Java5 generics in code * replace raw collections (List, Map, Set etc) by typed collections (List etc) in code * get rid of Retrotranslator (2x faster build ) * it opens a door to introduce generic-based libraries in Clover code (for example replace Apache Commons by Guava) *Tasks:* * update Supported-Platforms page * remove retrotranslator from build scripts * update bamboo / maven configurations * affects Clover, Clover-for-Maven2&3, Clover-for-Eclipse, Clover-for-IDEA (note that Clover-for-Grails already need JDK1.5 or above) *Out of scope:* * replacing existing raw collections by typed ones (like List -> List ), introducing foreach loops etc ** this will be done gradually during daily development ""","",0,1,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0 +"CLOV-1195","12/06/2012 10:57:29",8,"Groovy 2.x @CompileStatic annotation causes static methods to be ignored by Clover ""Adding @CompileStatic to a tested Groovy class results in 0% coverage for static methods. e.g. Can anyone confirm this? Thanks. """," //All ok here class MyClass{ String sayHello(){ 'hello' //Full coverage shown by Clover } static String sayHelloAgain(){ 'hello again' //Full coverage shown by Clover } } //Same class with the annotation @CompileStatic class MyClass{ String sayHello(){ 'hello' //Full coverage shown by Clover } static String sayHelloAgain(){ 'hello again' //***No coverage shown by Clover*** } } ",1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0 +"CLOV-1196","12/13/2012 07:48:44",1,"Add testSources parameter for clover2:clover mojo ""The Ant task has an optional nested parameter where user can specify an Ant path that Clover should use when looking for source files. Thanks to this, it is possible to generate report using sources from a different location (on a different machine, for instance). Such option is missing for Maven clover2:clover MOJO. The workaround which can be used is to create a custom report descriptor, as described on https://confluence.atlassian.com/display/CLOVER/Creating+custom+reports, which is not convenient actually. Fix: add parameter for clover2:clover MOJO.""","",0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0 +"CLOV-1197","12/14/2012 14:30:16",3,"Perform migration of CLMVN and CLMVNONE from studio.plugins.atlassian.com ""The site studio.plugins.atlassian.com is deprecated. All new projects shall be migrated to bitbucket.org or eventually to ecosystem.atlassian.net. *Deadline:* * final deadline 5.03.2013 * it's recommended to finish it before 5.02.2013 *Scope:* -1) Migrate SVN repositories- * https://studio.plugins.atlassian.com/svn/CLMVN * https://studio.plugins.atlassian.com/svn/CLMVNONE -to Mercurial on Bitbucket- -2) Migrate Bamboo builds (if necessary) from- * https://studio.plugins.atlassian.com/builds/browse/CLMVN-TRUNK -Note: CLMVNONE has no builds configured- -to new Bamboo location.- -3) There is no need to migrate Wiki pages and Code reviews (practically empty).- -4) Migrate JIRA issues from- * https://studio.plugins.atlassian.com/browse/CLMVNONE * https://studio.plugins.atlassian.com/browse/CLMVN -to- * https://jira.atlassian.com/browse/CLOV -if this is feasible and set component """"Maven 1 Plugin"""" and """"Maven Plugin"""", respectively.- -Alternatively, create new issue trackers on Bitbucket or Ecosystem, copy all issues """"as is"""" and set projects read-only with a message that issue tracking shall be done in JAC CLOV project.- -5) Update build scripts (Maven / Ant) and handle:- * -new repository type (tagging)- * -new way of deployment of binaries (optional)- -Update also BEAC builds.- ""","",0,1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0 +"CLOV-1202","01/10/2013 09:33:17",1,"Compile maven-clover2-plugin using JDK1.5 ""Currently we have two executions of maven-compiler-plugin: * one with source/target=1.3 for src/main * one with source/target=1.5 for src/test Use source/target=1.5 for the whole module. ""","",0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0 +"CLOV-1203","01/10/2013 09:36:00",1,"Update Supported-Platforms page ""On http://confluence.atlassian.com/display/CLOVER/Supported+Platforms: * set JRE/JDK = 1.5 or later * add footnote that support for JDK 1.5 has ended with 3.1.x ""","",0,0,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0 +"CLOV-1204","01/10/2013 09:38:42",1,"Remove retrotranslator ""Remove all retrotranslator stuff: * jar files (several extlib locations) * build.xml and upgrade.xml files * about boxes in Eclipse and IDEA * etc/rights license files ""","",0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0 +"CLOV-1205","01/14/2013 11:08:57",1,"CLMVNONE new property: maven.clover.instrumentationLevel ""Moved from https://studio.plugins.atlassian.com/browse/CLMVNONE-14 This should only be set to 'method' if used in conjunction with Test Optimization if the default level (statement) is not performant enough. Valid values are """"statement"""" and """"method"""".""","",0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0 +"CLOV-1206","01/14/2013 11:12:51",1,"CLMVNONE Use includes, instead of nested include to allow more than one pattern when merging ""Moved from https://studio.plugins.atlassian.com/browse/CLMVNONE-9 For Maven1 plugin: It would be better to change the following code in the clover:merge goal from: to: """," ",0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0 +"CLOV-1208","01/15/2013 06:19:46",1,"Show warning if new update is out of scope of the current license ""Case: * user has a valid license key with a certain end-of-maintenance date * new Clover version is released but the release date is later than maintenance end * IDEA / Eclipse gives user an ability to upgrade but * after upgrading user cannot use Clover anymore (!) Improvement: * check end-of-maintenance date from current license key, if it is < than release date of the upgrade we want to download, put additional warning about it the the upgrade dialog box""","",0,1,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0 +"CLOV-1209","01/17/2013 11:23:20",3,"Auto update version check reports new version when version strings are identical ""Under File > Settings > IDE Settings: Clover > Auto Update, when you press """"Check now"""" a window pops up saying: """"New version available: 3.1.10.v20130108000000, you have 3.1.10.v20130108000000 Would you like to upgrade?"""" ""","",1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0 +"CLOV-1227","01/23/2013 11:54:01",2,"Add element for and ""Enhance Ant tasks by adding new sub-types and attributes: coverageRecorder * fixed - default value as now, fixed-size coverage recorder requiring presence of clover.db to read the size * growable - like for Android, no need to have clover.db * shared - for Grails app, not only with dynamic size, but also reusing the same instance of recorder if initstring is the same Parse it on Ant level, pass it to InstrumentationConfig and Instrumenter. """," ",0,0,1,0,0,0,0,0,1,0,1,0,0,0,0,0,0 +"CLOV-1228","01/23/2013 11:55:52",1,"Document element on CAC ""Write documentation for: * http://confluence.atlassian.com/display/CLOVER/clover-setup * http://confluence.atlassian.com/display/CLOVER/clover-instr * https://confluence.atlassian.com/display/CLOVER/Advanced+setup+configuration ""","",0,0,1,0,0,0,0,0,1,0,1,0,0,0,0,0,0 +"CLOV-1230","01/23/2013 12:36:01",5,"Embed clover profile array in instrumented classes ""Enhance existing instrumentation and embed an array of CloverProfile in instrumented sources/classes, pass this array to Clover.getRecorder(). Java: source based instrumentation RecorderInstrEmitter + Clover.getRecorder() - add static field for _CLR class of *CloverProfile[]* type Groovy: byte code instrumentation - instantiate new CloverProfile[] { new CloverProfile(), ... } array at getRecorder() call ""","",0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0 +"CLOV-1231","01/23/2013 12:50:49",3,"Use GrowableBitSet for PerTestRecorder.One ""In PerTestRecorder.One - wrap 'coverage' and coverageShortcut into a helper class (x) set() method - if index is out of bounds then it shall resize 'coverage' BitSet and 'coverageShortcut' array (/) refactor PerTestRecorder.Any, None, One, Many to top-level classes (/) refactor ThreadVisibilityStrategy to top-level class (/) write unit tests for (/) ThreadVisibilityStrategy.SingleThreaded ThreadVisibilityStrategy.Synchronized ThreadVisibilityStrategy.Volatile ""","",0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0 +"CLOV-1232","01/23/2013 12:57:08",2,"Create GrowableBitSet class ""extend CloverBitSet, add() method shall check index vs size() and call growToInclude(); make it thread-safe - check how antlr.collections.impl.BitSet.growToInclude() is implemented ""","",0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0 +"CLOV-1235","02/13/2013 10:08:32",2,"Dynamically select coverage recorder based on clover.profile ""Clover.getRecorder(): Read -clover.profile system property and if securityexcetion or null then fallback to """"default"""". If list of profiles is empty or given profile name was not found, fallback to fixed coverage recorder. Should read coverageRecorder value and instantiate proper recorder type Should fetch from cache using one of: recorderKey = initString + """""""" + dbVersion + """""""" + cfgbits; recorderKey = initString; Add debug log messages for actions taken. Prepare necessary tests for java and groovy (assert on log messages). ""","",0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0 +"CLOV-1236","02/19/2013 11:32:44",1,"Add 'clover.enabled' system property ""If set to 'false' it should disable recording of the coverage data at runtime.""","",0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0 +"CLOV-1237","02/20/2013 07:18:48",40,"as a developer I'd like not to deploy clover.jar to app server ""*Embed clover-runtime.jar into created JAR/WAR/EAR* *Problem:* Instrumenting code by Clover is not enough, user has to manually add clover.jar to the runtime classpath. Otherwise it gets """"ClassNotFoundException com_cenqua_clover/CoverageRecorder"""" error. There are over 6'000 views on answers.atlassian.com about this problem (it's #1 on the list) *Solution:* Create a possiblity to automatically or manually embed clover-runtime.jar into produced JAR/WAR/EAR artifacts. *Tasks:* 1) (/) Restructure Clover modules and find exact set of runtime classes, create clover-runtime.jar artifact out of it (will be published on Maven Central). Such subset was already found for Clover-for-Android, but it does not have classes for Distributed Coverage feature. See linked issue. 2) Create Ant task like which will allow to manually put runtime classes into it. 3) Check if it would be possible to intercept all calls as well and do it automatically. Add option to disable this automatic integration and/or to specify regular expression pattern which jars shall be enhanced. 4) Create Maven goal like clover2:embed-runtime-jar with property. 5) Check how to automatically embed Clover runtime classes. Possibilities: * extract clover-runtime.jar into target/classes or target/classes-clover * scan build reactor, intercept packaging tasks like maven-ear-plugin, maven-jar-plugin, maven-rar-plugin, maven-war-plugin, maven-assembly-plugin * modify maven project at runtime and add clover:clover-runtime dependency 6) Eclipse integration - we already have -Xbootclasspath for """"Run with Clover as..."""" but it's not enough if user has web application for example. Extract clover-runtime.jar into project's build folder so that other packaging tools could automatically pick these classes. Add pre-build or post-clean event handler to make sure that these classes will be still present after rebuild. Add some option in Window > Preferences or Project > Properties for this. 7) IDEA integration - put these classes into out/production and out/test. Add option in File > Settings > Project Settings or File > Settings > IDE Settings for this. 8) Grails integration - t.b.d.""","",0,1,0,1,1,0,1,0,1,0,1,0,0,0,1,0,0 +"CLOV-1238","02/20/2013 07:31:06",5,"Split clover-core into clover-runtime + clover-core ""1) Use class dependency analyzer. Check for classes loaded via reflections too!!! (/) _class dependency analyzer was also used to strip third party libraries from unused classes_ 2) Move runtime classes to clover-runtime module. (/) 3) -Rename packages to com.atlassian.clover.runtime.* but keep few core classes in com_atlassian_clover. Reason: Clover-for-Ant will still have single clover.jar probably and it will use FileInputStream(clover.jar) to dynamically extract classes form archive so we must be able to distinguish them.- (/) _cancelled; too many changes in referenced classes and runtime still """"borrows"""" few classes from core_ 4) Enhance build script to publish this as com.atlassian.clover:clover-runtime artefact on Atlassian Central and Maven Central. (/) Note: - for backward compatibility clover-core shall still contain runtime classes and it's name will not change (com.atlassian.clover:clover) (/) - -we can add dependency to clover-runtime in pom.xml, however - just to keep programmers informed about this change- (/) _dependency not added as clover-core already bundles the clover-runtime_ 5) Update documentation on CAC and inform that new, small artifact is available since version 4.0.x. (/) _done_ 6) Update UML in clover-maven-module-structure.graphml (/) _done_ 7) Test it with Clover-for-Android (original clover-core exceeds method limit in Dalvik image) (/) _couldn't test as Android Studio uses Gradle now and is based on IDEA not Eclipse_""","",0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0 +"CLOV-1239","02/20/2013 07:35:59",3,"Create task ""Create Ant task: which will put all Clover's runtime classes into targetFile. Unzip all com_cenqua_clover.* and com.atlassian.clover.runtime.* classes from clover.jar archive which is currently on a classpath (we've got a trick how to find it - see searching for clover.license) into a temporary directory and next put them into jar (use Ant task for this or handle zip directly)."""," ",0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0 +"CLOV-1240","02/20/2013 07:38:16",3,"Create clover2:embed-runtime-jar goal ""Create MOJO for: which will read the property and do the same what Ant task does. Difference: we might use maven-assembly-plugin and download clover-runtime artifact for this."""," clover2:embed-runtime-jar ",0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0 +"CLOV-1241","02/20/2013 07:43:16",3,"Maven extracts clover-runtime into target/classes or target/classes-clover ""Automatic integration for unknown plug-ins: extract clover-runtime artifact into current build folder (target/classes for clover2:setup and target/classes-clover for clover2:instrument). Thanks to this these runtime classes might be automatically picked up and packaged. Check if there is any Maven's build property holding list of classes which have to be updated. Add configuration option for this, like: """," extractCloverRuntimeIntoTargetClasses=true ",0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0 +"CLOV-1242","02/20/2013 07:46:08",5,"Maven: intercept maven-jar-plugin and add clover-runtime ""Check if it would be possible to define some Maven property for maven-jar-plugin which would allow to define directory or list of files to be added to the archive. If yes, then extract clover-runtime into e.g. target/clover/runtime (note: it shall not interfere with CLOV-1241 somehow) and pass it to maven-jar-plugin. ""","",0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0 +"CLOV-1243","02/20/2013 07:46:59",3,"Maven: intercept maven-ear-plugin and add clover-runtime ""The same as CLOV-1242 but for maven-ear-plugin""","",0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0 +"CLOV-1244","02/20/2013 07:49:26",3,"Maven: intercept maven-rar-plugin and add clover-runtime ""The same as CLOV-1242 but for maven-rar-plugin""","",0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0 +"CLOV-1245","02/20/2013 07:51:04",3,"Maven: intercept maven-war-plugin and add clover-runtime ""The same as CLOV-1242 but for maven-war-plugin""","",0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0 +"CLOV-1246","02/20/2013 07:53:25",5,"Maven: intercept maven-cargo-plugin and add clover-runtime dependency ""The maven-cargo-plugin is the most popular plugin for running in-container tests. Add for clover-runtime there. Add configuration option to have a possibility to disable this.""","",0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0 +"CLOV-1247","02/20/2013 07:54:22",5,"Eclipse: extract clover-runtime classes into build directory ""Extract clover-runtime.jar into project's build folder so that other packaging tools could automatically pick these classes. Add pre-build or post-clean event handler to make sure that these classes will be still present after rebuild. Add some option in Window > Preferences or Project > Properties for this.""","",0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0 +"CLOV-1248","02/20/2013 07:55:35",5,"IDEA: extract clover-runtime classes into build directories ""IDEA integration - put these classes into: * out/production and * out/test. Add option in File > Settings > Project Settings or File > Settings > IDE Settings for this.""","",0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0 +"CLOV-1249","02/20/2013 07:59:07",8,"Grails: extract clover-runtime into build directory ""Usually it's here: \.grails\X.Y.Z\projects\\classes""","",0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0 +"CLOV-1250","02/21/2013 23:35:08",5,"Prepare integration tests for GrowableCoverageRecorder ""Integration tests like: * GrowableCoverageRecorder on a large code base * GrowableCoverageRecorder with different strategies ** PerTestRecorder.One / Many / None ** ThreadVisibilityStrategy.SingleThreaded / Volatile / Synchronized => especially check if/how per-test code coverage is affected by multithreaded tests of multithreaded application * GrowableCoverageRecorder with DistributedCoverage ""","",0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0 +"CLOV-1251","02/21/2013 23:35:35",5,"Prepare integration tests for SharedCoverageRecorder ""Integration tests like (all with partial global and per-test coverage): * SharedCoverageRecorder with single InstrumentationSession and many classes * SharedCoverageRecorder with multiple InstrumentationSessions, classes from sessions running together * SharedCoverageRecorder with multiple clover databases (different initstrings) * SharedCoverageRecorder with the same class compiled multiple times, different versions are running with coverage measurement, ""","",0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0 +"CLOV-1253","03/08/2013 07:53:43",5,"Some of per-test recording strategies do not work for multi-threaded applications ""*Introduction* We've got five per-test recording strategies: * Diffing - clover.pertest.coverage=diff * Null - clover.pertest.coverage=off * SingleThreaded - clover.pertest.coverage= and clover.pertestcoverage.threading= - DEFAULT POLICY * Synchronized clover.pertest.coverage= and clover.pertestcoverage.threading=synchronized * Volatile - clover.pertest.coverage= and clover.pertestcoverage.threading=volatile *Current status* 1) A SingleThreaded does not work with multi-threaded apps. Of course it's designed for single thread only. But at least it should have a correct value of coverage for a test case from a current thread. Expected number of hit counts is between: but currently actualHits can be < than hits(current test) due to fact that CloverBitSet.set\(n\) is not thread-safe. 2) A Volatile strategy has a similar problem. CloverBitSet.set\(n\) is not thread safe. Starting/ending of test slices works fine. 3) A Synchronized is correct because we've got 'CloverBitSet.set\(n\)' wrapped in a synchronized block. Starting/ending of test slices works fine. 4) A Diffing needs more tests. *Possible fix* CloverBitSet could have two variants: * compact - store hits as bit mask in long[] array - set\(n\) is not thread-safe, can be used for report generation as it consumes less memory * exploded - store hits as boolean[] array - set\(n\) \{ arr[n] = true \} would be thread-safe, used for runtime recording; it consumes 8x more memory but on the other hand we usually don't have 10'000 tests running in parallel; number of parallel tests is ~ number of processor cores available """," hits(current test) <= ... <= hits(curent test + all other concurrent tests) ",1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0 +"CLOV-1255","03/11/2013 12:43:24",2,"Prepare code example for Grails ""Prepare sample Grails project with domain classes, controllers and unit tests which will use the 'shared' coverage recorder.""","",0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0 +"CLOV-1256","03/13/2013 07:26:53",0,"as a developer I'd like to instrument tests written in the Spock framework ""We use Clover for both Java and Groovy. Unfortunately, Clover does not understand the tests we write in [Spock|http://code.google.com/p/spock/]. So a test like this: {code} class OpsWiseJobQueryTestSpec extends AbstractTestSpec { OpsWiseJobQuery wait static File existingFileMarker = File.createTempFile(""""opswiseJobQuery"""", """".txt"""") void setup() { wait = new OpsWiseJobQuery() wait.manifestDir = existingFileMarker.getParentFile() existingFileMarker.createNewFile() } void cleanup() { existingFileMarker.delete() } def """"should work with completed job""""() { expect: state == wait.getJobState(manifestFilename) where: state | manifestFilename OpsWiseJobState.WAITING | """"non-existing-name.whatever"""" OpsWiseJobState.DONE | existingFileMarker.getName() } } {code} Ends up with a coverage report like this: I would expect to see just a single test passed. """," class OpsWiseJobQueryTestSpec extends AbstractTestSpec { OpsWiseJobQuery wait static File existingFileMarker = File.createTempFile(""""opswiseJobQuery"""", """".txt"""") void setup() { wait = new OpsWiseJobQuery() wait.manifestDir = existingFileMarker.getParentFile() existingFileMarker.createNewFile() } void cleanup() { existingFileMarker.delete() } def """"should work with completed job""""() { expect: state == wait.getJobState(manifestFilename) where: state | manifestFilename OpsWiseJobState.WAITING | """"non-existing-name.whatever"""" OpsWiseJobState.DONE | existingFileMarker.getName() } } Class Tests Fail Error Time (secs) % Tests Success OpsWiseJobQueryTestSpec 12 0 0 0,026 100% Tests Started Status Time (secs) Message OpsWiseJobQueryTestSpec. 12 mar 10:32:50 PASS 0 OpsWiseJobQueryTestSpec.$spock_feature_1_0 12 mar 10:32:49 PASS 0,001 OpsWiseJobQueryTestSpec. 12 mar 10:32:49 PASS 0 OpsWiseJobQueryTestSpec.setup 12 mar 10:32:49 PASS 0,009 OpsWiseJobQueryTestSpec. 12 mar 10:32:50 PASS 0,001 OpsWiseJobQueryTestSpec.$spock_feature_1_0 12 mar 10:32:50 PASS 0 OpsWiseJobQueryTestSpec.cleanup 12 mar 10:32:50 PASS 0,01 OpsWiseJobQueryTestSpec.setup 12 mar 10:32:50 PASS 0,001 OpsWiseJobQueryTestSpec.cleanup 12 mar 10:32:50 PASS 0,001 OpsWiseJobQueryTestSpec. 12 mar 10:32:49 PASS 0,002 OpsWiseJobQueryTestSpec. 12 mar 10:32:49 PASS 0,001 OpsWiseJobQueryTestSpec. 12 mar 10:32:49 PASS 0 ",0,1,0,0,0,0,1,0,1,1,1,0,0,0,0,0,0 +"CLOV-1257","03/21/2013 06:26:32",3,"Add clover.coverageRecorder field for Clover-for-Grails plugin ""*A follow-up of CLOV-1189:* Support the coverageRecorder natively in the plugin config. It would be nice to go back to using the simpler configuration instead of the setuptask/reporttask closures. Like: *Implementation:* If coverageRecorder field is defined, then create a single profile named """"default"""" with coverageRecorder as specified and undefined distributedCoverage. In case clover.setuptask is specified, then settings from this closure will override clover.coverageRecorder value. """," clover { coverageRecorder: 'SHARED' } ",0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0 +"CLOV-1258","03/25/2013 08:22:34",8,"Upgrade third party libraries used by Clover ""Upgrade third party libraries to their latest versions: * jebrains annotations 13.0 (/) * ASM 5.0 (/) we're using ASM 3.0, 4.1 and 5.0 actually (for different purposes) * commons-codec 1.9 (/) * commons-collections 3.2.1 (/) * commons-lang 2.6 (/) * guava 18.0 (/) * JCommon 1.0.23 (/) * JFreeChart 1.0.19 (/) * Log4J 1.2.17 (/) * Velocity 1.7 (/) ""","",0,1,0,1,1,0,0,0,0,0,1,0,0,0,0,0,0 +"CLOV-1259","03/25/2013 08:26:14",5,"Reduce friction in tutorial ""Make Clover evaluation easier by simplifying the tutorial. The build.xml shall contain full Clover set-up so that just typing """"ant"""" shall produce all reports. So swap build.xml <-> build_completed.xml, fix """"test"""" target name, add default=""""clover.all"""" etc. Futhermore, Ant and Maven configuration in tutorial shall be unified - use 'target' directory for both of them. Get rid of clutter like 'clover', '.clover', 'build' directories. Update tutorial page on CAC. Consider adding groovy-all-1.7.0.jar into /lib directory so that user won't need to define GROOVY_HOME path.""","",0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0 +"CLOV-1260","03/25/2013 08:37:48",2,"Add url for 'utils.js' home page ""In Clover-for-Eclipse and Clover-for-IDEA """"About"""" dialogs the Utils.js link does not open the library home page. ""","",1,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0 +"CLOV-1261","03/25/2013 10:11:19",2,"PDF report with ""include failed test coverage"" option fails ""Eclipse Install Clover-for-Eclipse, open tutorial project, select Run new report > PDF report > select """"Include failed test coverage"""" > click Finish. PDF report generation fails with error log message: """"The JVM report process failed with error code 1 - see log for details"""" !pdf_fail.png! Increasing heap size from 512M to 768M solved the problem. To do: check why such small project requires so much memory. Check also PDFReporter, Clover-for-IDEA.""","",1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0 +"CLOV-1262","03/25/2013 10:33:06",3,"IDEA Darcula theme ignores ""Clover's """"About"""" dialog looks ugly when the """"Darcula"""" theme is selected in IDEA 12. Despite having
in JEditorPane(""""text/html""""), it shows table with a border. Example: !clover_about_idea12_themes.png!""","",1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0 +"CLOV-1263","03/25/2013 11:17:51",8,"Race condition in IDEA during full rebuild and test execution ""Clover-for-IDEA. Race condition during database cleanup and running unit tests at the same time. Steps to reproduce; 1. Open """"Moneybags"""" tutorial project 2. Prepare 'run all unit tests' configuration 3. Click """"Delete Coverage Database"""" button in the """"Cloverage"""" view 4. Click """"Rebuild now"""" in the prompt dialog 5. Quickly click """"Run (Shift+F9)"""" Problem: Project is being rebuilt and clover.db is recreated, at the same time unit tests are compiled and also clover.db is being modified. There's a warning in console log like this: """," WARN: CLOVER: Clover database: 'C:\Work\release\testing-sandbox\clover-ant-3.1.11\tutorial\.clover\coverage.db' is no longer valid. Min required size for currently loading class: 172, actual size: 96 WARN: CLOVER: Coverage data for some classes will not be gathered. Tests taking too long? Try Clover's test optimization. 2 test classes found in package '' ",1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0 +"CLOV-1264","03/26/2013 09:24:52",5,"Performance problem with SHARED coverage recorder in Grails app ""Follow up of CLOV-1189. If I uncomment the testsources enabled:false line, it runs about as quickly as before. Normally our coverage run takes about 42 minutes. With the above configuration it's been running for about 3 hours and is about half finished."""," setuptask = { ant, binding, plugin -> ant.'clover-setup'(initstring: """".clover/common.db"""") { ant.fileset(dir: """"grails-app"""", includes: """"**/domain/**, **/controllers/**, **/jobs/**, **/services/**, **/taglib/**, **/utils/**"""") { } ant.fileset(dir: """"src"""", includes: """"**/*.groovy, **/*.java"""", excludes: """"**/script@*.groovy, **/system/generator/**, **/system/database/generators/**, **/castor/**"""") { } ant.fileset(dir: """"test"""", includes: """"**/*.groovy"""") { } // ant.testsources(dir: """"test"""", enabled: false) { } ant.profiles { ant.profile(name: """"default"""", coverageRecorder: """"SHARED"""") } } } ",1,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0 +"CLOV-1265","04/03/2013 14:02:04",5,"as a developer I'd like to track build events in IDEA12 external build ""*Prepare empty plugin for external build.* analyze external build API, prepare a simple plugin which will log compilation progress (module name, file name being compiled) and send notifications about it to IDE; it should also notify about """"compilation finished"""" event.""","",0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0 +"CLOV-1266","04/03/2013 14:09:23",13,"Check how clover.db can be accessed from build server and IDE processes at once ""probably there are two possible ways to interact with build server process and the IDEA IDE process: 1) build server performs (parallel) instrumentation in memory and at the end of the whole build writes or updates clover.db (it has write access); next it sends notification to IDE which refreshes views and editors; potential problems: deletion of database during build, locking files 2) build server performs (parallel) instrumentation sending information about code structure back to IDEA IDE, which manages the database and sends back indexes of elements; potential problems: high messaging overhead -> need to send at most one message per file -> need to introduce local offset constant per each file;""","",0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0 +"CLOV-1267","04/03/2013 14:17:27",8,"Check how parallel instrumentation can be handled ""External build supports parallel compilation. Modules are built in parallel, while files in a single module are compiled sequentially. Clover expects that at least a single file is instrumented sequentially (the FileInto getCoverageMask which returns bitmask based on index range), so that the clover database contains continuous range of indexes for code elements from a single file. It means that we need to synchronize per file. It should not be a problem that subsequent files in database are from different modules. possible solutions: 1) simple lock per whole file in some synchronized block; drawback: turns parallel build into single-threaded one. 2) batch operations, like first instrument whole file using relative indexes, next lock database and store information about whole file, database would return base offset value; still in sychronized block but locked for shorter amount of time; 3) change clover.db structure so that elements could be registered in any order; change FileInfo getCoverageMask function (and related); check for any data structures which needs to be made thread-safe; ""","",0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0 +"CLOV-1268","04/03/2013 14:18:46",13,"Implement clover.db sharing between build server and IDE processes ""Based on analysis""","",0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0 +"CLOV-1269","04/03/2013 14:19:07",13,"Implement parallel compilation handling ""Based on analysis of CLOV-1267""","",0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0 +"CLOV-1270","04/03/2013 14:19:55",13,"Write sequential integration tests for build server ""Prepare integration tests for external build feature. Test the scenario when 'parallel compilation' for 'external build' is disabled. Check if any helper test classes for it are available in IDEA code based. ""","",0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0 +"CLOV-1271","04/03/2013 14:20:45",5,"Test IDEA IDE - build server interaction ""Exploratory tests in user interface.""","",0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0 +"CLOV-1273","04/09/2013 02:14:08",8,"Reduce coverage requirements for groovy safe operator ""Currently any usage of the groovy safe operator requires that that reference be tested with a null and non-null value. This adds significant overhead in the case where multiple calls are chained together with the safe operator. It would be more useful as a coverage measurement if the chain was treated as one call. Look at the following line as an example. def value = a.getB()?.getC()?.getD()?.getE() This line of code should require a test that sets value to null and a test that sets value to something non-null. It should not however require a test where B is null a test where c is null a test where d is null and a test where e is null to reach 100% conditional coverage. While I hope that lines that look like the above are not written very often, it still could happen, and having to write a bunch of tests to cover one line seems like a heavy burden. ""","",0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0 +"CLOV-1279","04/17/2013 14:03:30",1,"Document how to configure Clover + Bamboo with 'mvn deploy' goal on CAC ""The problem is that if 'mvn deploy' is used with Clover, it will deploy instrumented JARs into repository. There's no documentation on confluence.atlassian.com in the BAMBOO space how such separation can be achieved. Create a page with a description like: If you use """"Automatically integrate Clover into this build"""" option, then Bamboo will add clover2:setup + clover2:clover goals into every Maven task found in the Job (more details can be found here). It means that you shall not use """"mvn deploy"""" together with automatic Clover integration. There are at least three ways to solve this problem: 1) Create a separate Plan (or Job) in which automatic Clover integration is enabled and the Maven 2.x task does not deploy artifacts (""""mvn verify"""" is used for instance). So this plan would be used only for Clover reporting. Benefits: full Clover separation from the Plan (or Job) performing deployment Drawbacks: doubled Plan (or Job) or 2) Use manual Clover integration (""""Clover is already integrated into this build"""") but run Clover in a parallel build lifecycle. It means that you'd have to configure Clover goals manually in the pom.xml and use the """"clover2:instrument"""" instead of """"clover2:setup"""". You could have then just one Maven task with """"mvn clean deploy"""". Instrumented jars would have -clover.jar suffix. Benefits: build is executed only once Drawbacks: sometimes there might be problems with resolving correct (""""cloverized"""") dependent artifacts for multi-module projects or deploying the instrumented war to test server or 3) Use manual Clover integration, but run Clover in a default build lifecycle. It means that you'd have to configure Maven task manually and use """"clover2:setup"""" goal. Then you have to use two Maven tasks - one with """"... clover2:setup test ..."""" and one with """"deploy"""". This is an approach you have followed (according to screenshots I see in attached pdf). Benefits: no problems with artifact dependencies Drawbacks: two Maven tasks Recommendation: approach #3. Steps for approach #3: clean clover2:setup test clover2:aggregate clover2:clover b) define """"Clover Report"""" artifact On the 'Artifacts' tab, click Create Definition and complete the form as follows: Name This should begin with with """"Clover Report"""". Location This should point to the HTML report directory (e.g. target/site/clover) Copy Pattern Use **/*.* More details on https://confluence.atlassian.com/display/BAMBOO/Enabling+the+Clover+add-on#EnablingtheCloveradd-on-ManualCloverintegration ""","",0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0 +"CLOV-1280","04/26/2013 19:45:19",5,"Error when trying to Check for an Update ""I just recently upgraded from IntelliJ IDEA 10.5.4 to 12.1.1 and now 12.1.2. I think my last update to Clover was BEFORE I updated IDEA versions.""","",1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0 +"CLOV-1281","05/10/2013 10:30:23",1,"Improve message for NoSuchRegistryException ""See https://confluence.atlassian.com/x/AIP3F A message """"Clover registry file: does not exist."""" is too general and does not help developer to understand what the exact problem is. Find a more meaningful message. ""","",0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0 +"CLOV-1283","05/10/2013 11:59:42",100,"as a developer I'd like to build modules sequentially using IDEA12 external build ""Support IDEA12 """"external build"""" feature with the """"parallel build"""" option DISABLED. To do: * serialize Clover configuration for the JPS external process * implement code instrumentation using builder API (jps-builders) and new project model (jps-model-api) * implement notifications back to IDE * implement model refreshing etc * write integration tests for build server""","",0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0 +"CLOV-1284","05/10/2013 12:03:36",100,"as a developer I'd like to build modules in parallel using IDEA12 external build ""Support IDEA12 """"external build"""" feature with a """"parallel build"""" option ENABLED. To do: * implement parallel compilation handling in clover core ** affects FileInfo BitSet range for instance (will become non-continuous?) ** concurrent addition of data to the model? ** clover-report side-effects? * write integration tests for clover core * write integration tests for build server * test idea ide - build server interaction""","",0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0 +"CLOV-1285","05/10/2013 12:10:21",13,"Write parallel integration tests for build server ""Create IT for external build process with a parallel compilation enabled.""","",0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0 +"CLOV-1286","05/10/2013 12:14:35",13,"as a developer I'd like to build projects using 'classic' build in IDEA12 ""Make sure that new 'external build' feature support does not break the old build functionality when the compilation is performed in IDEA IDE process. It shall still use JavaSourceTransformingCompiler class, old Project structure, event handling etc. ""","",0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0 +"CLOV-1287","05/10/2013 12:16:35",20,"Code instrumentation using jps-builders ""scope: * java code instrumentation * statement/method contexts * test detection ""","",0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0 +"CLOV-1288","05/10/2013 12:18:23",13,"Implement communication between IDEA IDE and JPS builder "" * notifications about build events, progress, error handling * model refreshes""","",0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0 +"CLOV-1289","05/22/2013 09:49:53",5,"Support custom metrics in PDF report ""Currently the PDF report does not handle element so it's not possible to have a custom set of metrics in the summary. ""","",0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0 +"CLOV-1291","05/23/2013 12:05:51",8,"PDF report with class-level and method-level summary ""The PDF report contains package-level coverage table. Add an option for: * Ant task * clover2:clover mojo * 'generate report' button in Eclipse * 'generate report' button in IDEA which would allow user to select report detail level: * package (default) * class * method for PDF file format. ""","",0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0 +"CLOV-1292","05/23/2013 23:03:46",13,"Check how parallel instrumentation sessions can be handled ""External build will start/close single instrumentation session in which modules will be compiled in parallel (see CLOV-1267). However, a parallel build in ant/maven might involve starting multiple instrumentation sessions at once (just think about + in Ant for instance). Check how we could deal with this. Possible problems: * clover.db file locking (appending instrumentation session) Areas for prototyping: * clover db shared in memory * clover db structure change - adding top-level index for sessions/files/classes etc, possibility to interleave data from several instrumentation sessions * etc ...""","",0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0 +"CLOV-1293","05/23/2013 23:14:01",100,"as a developer I'd like to build continuously using external build ""Under the Project Settings / Compiler / Use external build checkbox there is the option 'Make project automatically'. Enabling this feature runs 'continuous compilation', i.e. all sources are compiled as soon as they're modified (as saved actually, which happens automatically). It means that we'd have Clover instrumenter called thousands of times during single IDEA IDE run. It means it would produce thousands of instrumentation sessions. And the current db structure is quite linear in search. And it would create thousands of coverage recorders - one instance per each class, practically. Database structure and coverage records would have to be optimized for such continuous build approach. Possible solutions: * no instrumentation sessions, when new session starts, remove old data related with a source file being compiled and add the new one; might require extra index for fast search for the latest version * using a SHARED coverage recorder; * file-based hit count array indexes instead of the global one? ""","",0,1,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0 +"CLOV-1294","05/23/2013 23:24:42",20,"Implement Clover data serialization from IDE to JPS ""The following data must be serialized and passed to JPS builder: * global configuration - other.xml (license key, sid, install date) * project settings - .ipr (flush policy, initstring etc ...) * module settings - .iml (exluding entire module from instrumentation) * idea test detector (default test detector + all test source folders) * state of some buttons in UI (FeatureManager) (e.g. 'toggle build with clover')""","",0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0 +"CLOV-1295","05/28/2013 14:28:12",3,"Prepare documentation on CAC and AAC ""On Clover-for-IDEA pages: * screenshot with """"Compiler"""" settings page from IDEA ** external build can be enabled ** incremental build shall be disabled (recommended) ** parallel build must be disabled (refer to future story) On supported platforms page: * info that IDEA12.0-12.1 + Clover 3.1.8-3.1.11 must have 'external build' disabled Release notes about this new nice feature Update quiestion on AAC""","",0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0 +"CLOV-1297","06/15/2013 13:21:30",5,"HTML report shows only one test result per file if external XML JUnit files are used ""In the we can define element which causes that test results are being read from JUnit-compatible XML files, instead of from Clover's coverage recording files. This works as long as the test name can be mapped to the method name (which is usually the case). However, in case of the Spock framework, test cases are named using a free text like: which is later translated to a method named like: As a consequence Clover is not able to match test name to the method name (in order to link to sources). It uses an empty test id to store the test result (SLICE_ID = -1). If there are more than one non-matched method in the same XML file, all get the same ID=-1, thus overwriting each other in hashmap. As a consequence only one is listed. *Fix:* Generate a unique test id using the test name - a String.hashCode() for instance. """," def """"check if this test does xyz"""" $spock_feature_0_0 ",1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0 +"CLOV-1298","06/17/2013 13:09:02",3,"Contributed and unique coverage are equal ""Possible bug. Investigate why these values are identical for MoneyBags tutorial. !unique_and_contributed_coverage.png!""","",1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0 +"CLOV-1299","06/19/2013 12:38:25",8,"Find workaround or fix for IDEA-108852 ""See http://youtrack.jetbrains.com/issue/IDEA-108852""","",0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0 +"CLOV-1301","06/26/2013 08:39:44",2,"Add more values for a 'threads' drop-down in report dialog ""The 'Generate Report' dialog has max 4 threads: !report_generation_threads.png! In age of multi-core multi-threaded processors, we shall have it up to 16 at least. ""","",0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0 +"CLOV-1302","06/26/2013 08:44:10",2,"The 'include line info' toggle works in the opposite way ""This toggle !include_line_info.png! works exactly opposite: when selected, the XML report does NOT contain tags; and vice versa.""","",1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0 +"CLOV-1303","06/27/2013 11:46:01",5,"Exclusion icon decoration is not visible in IDEA ""Affects IDEA versions 10.5.x-12.1.x (works under IDEA 9.0.x). The toggle 'Annotate icons on included/excluded files ...' does not work: !icon_decoration_do_not_work.png!""","",1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0 +"CLOV-1326","07/16/2013 14:01:27",3,"Class loader fails on clover.jar package-info ""Occurs in Bamboo, for instance. """," 2013-07-15 12:16:10,250 ERROR [http-9087-Processor12] [[default]] Servlet.service() for servlet default threw exception java.lang.ClassFormatError: Illegal class name """"com/google/common/collect/package-info"""" in class file com/google/common/collect/package-info at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631) at java.lang.ClassLoader.defineClass(ClassLoader.java:615) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141) at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:1876) at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:889) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1353) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1232) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:249) at java.lang.Package.getPackageInfo(Package.java:352) at java.lang.Package.getAnnotation(Package.java:367) at org.codehaus.jackson.xc.JaxbAnnotationIntrospector.findAnnotation(JaxbAnnotationIntrospector.java:885) at org.codehaus.jackson.xc.JaxbAnnotationIntrospector.findAccessType(JaxbAnnotationIntrospector.java:265) at org.codehaus.jackson.xc.JaxbAnnotationIntrospector.findAutoDetectVisibility(JaxbAnnotationIntrospector.java:216) at org.codehaus.jackson.map.AnnotationIntrospector$Pair.findAutoDetectVisibility(AnnotationIntrospector.java:1018) ",1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0 +"CLOV-1328","07/22/2013 10:02:15",13,"as a Clover developer I'd like to use the latest version of ANTLR ""Clover uses ANTLR 2.x currently which is few light-years from the latest version, which is ANTLR 4.x. Upgrade to the latest ANTLR library version. * check ANTLR 4.x license (it's different from 2.x) whether we can actually use it; if not - try to use 3.x, if possible * check if there's any Java grammar (the best for Java 8) available for Antlr 4 * estimate whether it's better to use completely new grammar file and embed clover stuff there or to upgrade our existing grammar file from 2.x to 4.x ** watch out for our custom extensions like unicode escape sequence handling, annotations etc""","",0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0 +"CLOV-1333","07/22/2013 11:32:32",20,"as a developer I'd like to instrument Java8 new language features ""This is an enhancement of CLOV-1139. Clover should be able not only to parse Java8 syntax without error, but also be able to add it's own code statements in order to measure code coverage for: * lambda expressions * ??? Scope: * instrumentation (java.g file) Out of scope: * database format * reporting""","",0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0 +"CLOV-1335","07/22/2013 11:50:47",13,"as a developer I'd like to generate reports with Java8 sources ""New language features might require enhancements of existing reports. Evaluate how to represent lambdas - for instance: - as a separate entity in the report, like a class or a method - as an integral part of enclosing scope - similarly as the inline class is being handled by Clover Scope: * HTML, XML, JSON, PDF reports ""","",0,1,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0 +"CLOV-1336","07/22/2013 12:01:39",20,"as a developer I'd like to have information about lambdas in the Clover database ""1) Evaluate how to represent Java8 lambdas - for instance: - as a separate entity in the model, like a class or a method - as an integral part of enclosing scope - similarly as the inline class is being handled by Clover 2) Design the DB format having in mind a future extensibility (like functions, functions-in-functions, global variables etc) for other JVM-based languages (like Scala or Closure) 3) Implement it. Scope: * database format Out of scope: * source code instrumentation ""","",0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0 +"CLOV-1337","07/22/2013 12:16:35",3,"as a developer I want be able to select 1.8 language level ""The """"1.8"""" language level shall be available for: * Ant tasks * clover2:setup clover2:instrument goal * project settings in Clover-for-Eclipse, Clover-for-IDEA Add such option, if necessary, write unit tests. ""","",0,1,0,1,1,0,1,0,0,0,1,0,0,0,0,0,0 +"CLOV-1338","07/26/2013 13:07:21",3,"Warn if directory selected on Test Classes tab is disabled on Source Files tab ""On the """"Project Properties > Clover > Source Files"""" tab user can select which source folders shall be instrumented by Clover. By de-selecting the checkbox, the whole source root becomes excluded from instrumentation: !source_files.png! On the """"Test Classes"""" files user can select which source roots contain test sources: !test_classes.png! It it possible to have such combination that: * source root is excluded * source root is marked as a test root This can be misleading. Add appropriate warning for it.""","",0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0 +"CLOV-1339","08/02/2013 09:51:16",20,"The does not match constructors ""*Problem:* If you declare custom test detector, for instance: {code:xml} {code} Then the test detector does not match constructors. As a consequence, a class like this: {code:java} public class SomeException extends Exception { public SomeException(String s) { super(s); } } {code} will be treated as APPLICATION not as TEST code. *Background reason:* {code:java} public boolean isMethodMatch(SourceContext sourceContext, MethodContext methodContext) { final MethodSignature signature = methodContext.getSignature(); return methodMatches(signature.getName()) && methodAnnotationMatches(signature.getModifiers()) && methodReturnPatternMatches(signature.getReturnType()) && methodTagMatches(signature.getTags()); } public boolean methodReturnPatternMatches(String methodReturnType) { return methodReturnType != null && (methodReturnTypePattern == null || methodReturnTypePattern.matcher(methodReturnType).matches()); } {code} The methodReturnType==null for constructors, thus constructor do not match the pattern. *Solution:* We could rewrite check like this: {code:java} return methodReturnTypePattern == null || (methodReturnType != null && methodReturnTypePattern.matcher(methodReturnType).matches()); {code} However, this would require entirely new handling of code instrumentation for constructors. The reason is that code would be currently rewritten like: {code:java} public SomeException(String s) { __CLR3_1_12_100hjv4vvu6.R.globalSliceStart(getClass().getName(), 0); int $CLV_p$ = 0; java.lang.Throwable $CLV_t$ = null; try { __CLR3_1_12_162c4pt0(s); // <<< ORIGINAL CONSTRUCTOR $CLV_p$ = 1; } catch (java.lang.Throwable $CLV_t2$) { if ($CLV_p$ == 0 && $CLV_t$ == null) { $CLV_t$ = $CLV_t2$; } __CLR3_1_12_100hjv4vvu6.R.rethrow($CLV_t2$); } finally { __CLR3_1_12_100hjv4vvu6.R.globalSliceEnd(getClass().getName(), """"SomeException.SomeException"""", 0, $CLV_p$, $CLV_t$); } } private __CLR3_1_12_162c4pt0(String s) { // << COMPILATION FAILURE, MISSING RETURN TYPE super(s); __CLR3_1_12_100hjv4vvu6.R.inc(1); __CLR3_1_12_100hjv4vvu6.R.inc(0); } {code} Problems: * call to super() must be first * we should not move constructor body into another method """," public class SomeException extends Exception { public SomeException(String s) { super(s); } } public boolean isMethodMatch(SourceContext sourceContext, MethodContext methodContext) { final MethodSignature signature = methodContext.getSignature(); return methodMatches(signature.getName()) && methodAnnotationMatches(signature.getModifiers()) && methodReturnPatternMatches(signature.getReturnType()) && methodTagMatches(signature.getTags()); } public boolean methodReturnPatternMatches(String methodReturnType) { return methodReturnType != null && (methodReturnTypePattern == null || methodReturnTypePattern.matcher(methodReturnType).matches()); } return methodReturnTypePattern == null || (methodReturnType != null && methodReturnTypePattern.matcher(methodReturnType).matches()); public SomeException(String s) { __CLR3_1_12_100hjv4vvu6.R.globalSliceStart(getClass().getName(), 0); int $CLV_p$ = 0; java.lang.Throwable $CLV_t$ = null; try { __CLR3_1_12_162c4pt0(s); // <<< ORIGINAL CONSTRUCTOR $CLV_p$ = 1; } catch (java.lang.Throwable $CLV_t2$) { if ($CLV_p$ == 0 && $CLV_t$ == null) { $CLV_t$ = $CLV_t2$; } __CLR3_1_12_100hjv4vvu6.R.rethrow($CLV_t2$); } finally { __CLR3_1_12_100hjv4vvu6.R.globalSliceEnd(getClass().getName(), """"SomeException.SomeException"""", 0, $CLV_p$, $CLV_t$); } } private __CLR3_1_12_162c4pt0(String s) { // << COMPILATION FAILURE, MISSING RETURN TYPE super(s); __CLR3_1_12_100hjv4vvu6.R.inc(1); __CLR3_1_12_100hjv4vvu6.R.inc(0); } ",0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0 +"CLOV-1341","08/13/2013 10:48:44",5,"Implicit return in Groovy switch statement is instrumented incorrectly ""*Problem:* Consider the following code: * switch statement is the last statement in function, so it's value is being returned from a function call * new Integer() / new String() are last statements before 'break' which is a function's exit point * thus 10 or """"abc"""" are returned Clover instruments code as follows: * as a consequence, the last statement before 'break' becomes recorder.inc(), which returns void; as a result the create() function returns null *Workaround:* Use return instead of break in a switch statement, e.g.: *Fix:* * do not add recorder.inc() before 'break'; drawback of the solution: we loose tracking of empty breaks, see below. in the code above it would be nice to have """"case2: case 3: recorder.inc(3); break;"""" colored in green, despite that code makes nothing ... """," def create(boolean b) { switch (b) { case true: new Integer(10) break case false: new String(""""abc"""") break } } def create(boolean b) { recorder.inc(0); switch (b) { case true: recorder.inc(1); new Integer(10) recorder.inc(2); break case false: recorder.inc(3); new String(""""abc"""") recorder.inc(4); break } } case true: return new Integer(10) // no break def foo(int i) { switch (i) { case 1: recorder.inc(1); println(""""one"""") /*recorder.inc(2); not added*/ break; case 2: case 3: /*recorder.inc(3); not added*/ break; } } foo(1) foo(2) ",1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0 +"CLOV-1344","08/29/2013 10:04:42",3,"Added LICENSES.html file to Clover artfiacts ""Add the LICENSES.html file containing a table with: * name of third party library * link to home page (download sources / binaries) * link to the license file into the following artifacts: * Clover-for-Ant ZIP * Clover-for-Eclipse update site ZIP * Clover-for-IDEA plug-in JAR Note: * there's no need to add such file in the Clover-for-Grails and Clover-for-Maven2&3, because these plug-ins do not contain any third party libraries embedded in it (just references in pom.xml / BuildConfig.groovy) Reason for change: * ensuring that we obey requirements imposed by various open source licences ""","",0,1,0,1,1,0,0,0,0,0,1,0,0,0,0,0,0 +"CLOV-1348","08/29/2013 13:21:51",2,"review navigation links on a page summary ""frames/no frames - deleted show help - exists on some of pages overview/package/file - moved to breadcrumbs on a page header todo: discuss with UX designer how breadcrumbs shall show the structure, e.g.: - shall we display report name and a project name only? - or some main section? - or the entire path - if so, shall we have: Report > Project > Test/App/Clouds > Package > FIle/Class > (Test) or something else?""","",0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0 +"CLOV-1350","08/29/2013 13:24:15",1,"Add ADG navigation bar in the HTML report "" * probably should be optional, because we embed reports in Bamboo -> how to handle this? all links from navigation bar shall be available somewhere else? * what to put in the nav bar? we don't have 'create issue' button for sure ;-)""","",0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0 +"CLOV-1352","08/30/2013 12:20:16",13,"Create code samples with java8 syntax ""annontations on java types repeating annotations lambdas virtual extension methods""","",0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0 +"CLOV-1353","08/30/2013 12:22:39",13,"Prepare unit tests compiling and instrumenting code samples ""test: compile code samples from CLOV-1352 using JDK1.8 javac instrument these code samples using Clover expected: no instrumentation of lambdas yet, just test if files are parsed correctly""","",0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0 +"CLOV-1354","08/30/2013 12:23:36",3,"Set up a Bamboo build for JDK1.8 ""run all clover tests, including tests of java8 syntax on JDK1.8 on Bamboo""","",0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0 +"CLOV-1355","08/30/2013 12:27:33",3,"Add new grammar rules for java8 syntax ""just to correctly parse new syntax, do not add clover instrumentation to these new code constructs something like: lambda : ( lambdaNoArgs | lambdaImplicitTypesArgs | lambdaExplicitTypesArgs ) '->' ( lambdaExpressionLikeStatement | lambdaCodeBlock ) plus extend the method definition and add 'default' keyword as optional; probably won't need to distinguish between method declaration in interface and in a class""","",0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0 +"CLOV-1356","08/30/2013 12:28:31",0,"Test if syntax highlighting in html report works fine ""check manually or extend existing test case""","",0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0 +"CLOV-1357","09/02/2013 07:29:08",13,"as an administrator I need to monitor Clover usage on machines ""As a system administrator I need to have a way to track down usage of Clover licenses within my organization in order to make sure that Clover is not installed or used on more machines than the license allows to. Currently there is no tool for this purpose and the only indirect way is to scan for clover license files. One of possible solutions: * add the environment variable which will enable tracking of clover license usage, such variable could be set on all machines in users' profiles by system administrator * the variable would point to the URL which will collect data about license usage, e.g.: * whenever code instrumentation or report generation is performed and the environment variable is defined, clover will connect to the specified URL using simple HTTP GET request * it would be up to the system administrator to collect data from such HTTP GET requests (e.g. parsing apache logs, using some php script to store data in database ...) * options of HTTP GET Scope: clover core (would work in ant, maven, grails, eclipse, idea ...)"""," -Dclover.license.usage.url=http://path.to.web.server/clover.php?someoptions ?LicenseID=ABCDEF&LicenseExpiryDate=YYYY-MM-DD&MaintenanceExpiryDate=YYYY-MM-DD&Organisation=CompanyName&NumberOfUsers=NN&LicenseTypeName=DESKTOP_OR_SERVER ",0,1,0,1,1,1,1,0,0,0,1,0,0,0,1,0,0 +"CLOV-1358","09/02/2013 09:49:27",40,"Enhance Clover database to keep full instrumentation history ""*Problem:* Currently Clover database keeps list of instrumentation sessions plus information about classes which is a sum of all previous instrumentation sessions in such way that for given class only the latest class version is stored. There are two limitations of current design: 1) Test optimization might not work correctly for some test frameworks for Groovy language. This is due to nature of the Groovy language itself, where compiler allows to compile code which does not have all symbols resolved (they're being resolved at runtime). As a consequence if a dependent application class is changed, this does not to have trigger recompilation of the test class. See comment for more details. 2) Syntax highlighting in HTML report is always based on the latest class version, so if someone has older source file, it can be rendered incorrectly. There's a warning for this in HTML report, but we could fetch the actual line/char indexes from the older class version. *Solution:* 1) Enhance UpdateableRegFile and keep all versions of classes. This should be optional and disabled by default. 2) Enhance RegFile API to allow querying for older versions of given file (by default it should always return the latest version). 3) Add new option for and to allow to keep full instrumentation history. Either as """"true/false"""" or as a number (maximum number of versions of the single class to store). 4) Add API to calculate index bitset as a logical OR of bitsets from all versions of the given file or class. ""","",0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0 +"CLOV-1359","09/02/2013 09:51:58",13,"Fix test optimization and check all class versions ""Depends on CLOV-1358 Test optimization should scan for hit count indexes of all versions of given class. This is necessary in order to workaround the problem of the groovyc compiler which resolves some of symbols at runtime and thus it does not always recompile test class if application class is not changed. ""","",0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0 +"CLOV-1360","09/02/2013 09:56:50",13,"Analyse how tests are converted by Spock ""Analyse how a test named like: is converted to a method like: It's being done during AST transformation I guess. Check how it's possible to either: * reverse engineer this behaviour i.e. get a back-ward mapping $spock_feature_1_0 -> def """"my test name"""" or * reproduce this behaviour, i.e. instrument methods in such order/way that Clover could 'calculate' the same method name """," def """"my test name"""" $spock_feature_1_0 ",0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0 +"CLOV-1361","09/02/2013 10:01:11",13,"Implement test name to method name mapping in Clover ""Based on the investigation results from CLOV-1360 write proper mapping in Clover so that we could keep original names of test cases in Clover database (like """"my test name"""" instead of $spock_feature_1). And these tests should properly """"link"""" to appropriate sections in source code - for instance in order to allow navigation in HTML report from test result to the test class source code.""","",0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0 +"CLOV-1362","09/02/2013 10:04:25",8,"Add Spock test name patterns in default test detector ""Clover's default test detector should properly recognize Spock-framework test classes and which methods are test ones and which are helper ones. We shall not see stuff like this in the test summary: """," Tests Started Status Time (secs) Message OpsWiseJobQueryTestSpec. 12 mar 10:32:50 PASS 0 // BAD OpsWiseJobQueryTestSpec.$spock_feature_1_0 12 mar 10:32:49 PASS 0,001 // OK, but use original name OpsWiseJobQueryTestSpec. 12 mar 10:32:49 PASS 0 // BAD OpsWiseJobQueryTestSpec.setup 12 mar 10:32:49 PASS 0,009 // BAD ",0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0 +"CLOV-1363","09/02/2013 10:11:55",8,"Ensure that reports show the test name and not the method name ""Make sure that HTML, XML, PDF, JSON reports will display the test name (like """"my test name"""" taken from def) rather than the actual name of test method (like $spock_feature). ""","",0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0 +"CLOV-1369","09/27/2013 07:00:32",1,"as a developer I don't need to run Clover on JDK1.5 anymore ""*Idea:* Sun Java 1.5 has: * end of public updates - Oct 2009 * end of Premier Support - May 2011 * end of Extended Support - May 2015 * see http://www.oracle.com/technetwork/java/eol-135779.html IBM Java 1.5: * its End Of Servcie (EOS) will expire on September 2015 * see https://www.ibm.com/developerworks/java/jdk/lifecycle/ According to various sources, most popular are Java6 and Java7 with Java8 growing up; Java1.5 has a fraction of market right now: * http://www.statowl.com/java.php although the report above shows Java version in web browser. Production environment may be different (especially regarding IBM Java). *Benefits:* Dropping support for Java 1.5 would improve Clover development, as we could: * use @Override for interfaces * use newer version of Guava (we're on Guava 9 (!) due to required JDK1.5 binary compatibility) * have all Clover modules and plugins on the same JDK level ** Groovy/Grails require JDK6+ to compile and execute ** Clover-for-IDEA (IDEA12 JPS) requires JDK6+ to compile and execute ** rest is on JDK5 *Tasks:* * update Supported-Platforms page * update guava library (and all others which are compiled against jdk6) * update build scripts * affects Clover Core, Clover-for-Ant, Clover-for-Maven2&3, Clover-for-Eclipse, Clover-for-IDEA, Clover-for-Grails *Out of scope:* * adding Override annotations - this will be done gradually during daily development ""","",0,1,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0 +"CLOV-1375","10/30/2013 21:01:29",8,"Extend API for loading and manipulate coverage files ""Clover 3.2.0 published new interfaces describing a database model (com.atlassian.clover.api.registry). We need to reveal more Clover stuff via API in order to make it more usable by other developers. For example: * loading database and coverage files, handling instrumentation sessions * manipulating coverage files""","",0,1,0,0,0,1,0,1,0,0,0,0,0,1,1,0,0 +"CLOV-1376","10/30/2013 21:06:08",3,"Change signature of getXyz() methods in HasXyz interfaces ""Current signatures have , for example: This works fine for Clover's internal data structures (as there are subclasses), but it's not usable by developers using this API. It should be possible to have an assignment like: Fix: change to . Note: We may need to expose additional methods in interface. They could throw Exception(""""not implemented"""") or return nulls."""," List getMethods() List methodMetrics = classInfo.getMethods() ",0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0 +"CLOV-1377","10/30/2013 21:11:23",1,"Interfaces and factory methods for loading Clover database ""*Problem:* Database entities are already in c.a.c.api.registry package. However, in order to load the database you have to call an inner class, for example: *Fix:* Create proper interfaces and a factory hiding the CoverageDataSpec and CloverDatabase. """," import com.atlassian.clover.CloverDatabase; // XXX internal class import com.atlassian.clover.CoverageDataSpec; // XXX internal class import com.atlassian.clover.api.registry.ProjectInfo; // ... CloverDatabase db = CloverDatabase.loadWithCoverage(args[0], new CoverageDataSpec()); ProjectInfo projectInfo = db.getRegistry().getProject(); ",0,1,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0 +"CLOV-1378","10/30/2013 21:19:34",3,"Interfaces and a template class for handling instrumentation sessions ""*Problem:* * We need some concrete classes in the API to perform the instrumentation. At the moment we have an InstrumentationSession interface but no way to get an instance of this! * We need a way in the API to construct a MethodSignatureInfo (same problem as InstrumentationSession). In order to update content of a database and store new instrumentation session a number of internal classes must be used, e.g.: *Fix:* - move MethodSignature, Modifier, Modifiers, Parameter to API - create factory for FixedSourceRegion, ContextSet - enterMethod (and others) shall use ContextSet from API """," import com.atlassian.clover.context.ContextSet; import com.atlassian.clover.registry.Clover2Registry; import com.atlassian.clover.registry.FixedSourceRegion; import com.atlassian.clover.registry.entities.MethodSignature; import com.atlassian.clover.registry.entities.Modifier; import com.atlassian.clover.registry.entities.Modifiers; import com.atlassian.clover.registry.entities.Parameter; // ... registry = Clover2Registry.createOrLoad(dbFile, projectName); session = registry.startInstr(encoding) // ... session.enterMethod(new ContextSet(), new FixedSourceRegion(12, 1), methodSignature, false, false, 5, LanguageConstruct.Builtin.METHOD); ",0,1,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0 +"CLOV-1379","10/30/2013 21:31:34",8,"Create API for handling coverage recording files ""*Problem:* Currently there's no API which would allow to create a global recording or a per-test recording file. Such API would be useful, e.g. for conversion of coverage data from other tools such as Cobertura or Emma. *Fix:* - publish global and per-test recording file format on CAC (including naming convention for files) - expose class for global coverage file (equivalent of FileBasedGlobalCoverageRecording) - expose class for per-test coverage file (equivalent of FileBasedPerTestRecording) ""","",0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0 +"CLOV-1380","10/30/2013 21:41:24",8,"Create API for handling optimization snapshot ""*See:* * [Hacking Clover / Updating optimization snapshot file|https://confluence.atlassian.com/display/CLOVER/Updating+optimization+snapshot+file] * [src/it/optmized/snapshot-hacking|https://bitbucket.org/atlassian/maven-clover2-plugin] *Problem:* Internal classes are used to manipulate snapshot. *Fix:* Create proper interfaces/classes in c.a.c.api.optimization """," import com.atlassian.clover.registry.entities.TestCaseInfo; import com.atlassian.clover.optimization.Snapshot; // ... Snapshot snapshot = Snapshot.loadFrom(snapshotLocation); final Set allTestCaseInfos = db.getCoverageData().getTests(); for (TestCaseInfo tci : allTestCaseInfos) { ... } snapshot.store(); ",0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0 +"CLOV-1381","10/30/2013 21:48:34",1,"Add showInnerFunctions and showLambdaFunctions to clover2:setup ""Command line tools and a Ant task have these options. Add: showInnerFunctions=false showLambdaFunctions=false to CloverReportMojo. Pass these values to a report descriptor. Define such values also in the default descriptor (clover-report.xml).""","",0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0 +"CLOV-1382","10/30/2013 21:54:21",2,"Add lambda toggle to report wizards in Eclipse and IDEA ""Add toggles for showInnerFunctions and showLambdaFunctions in report wizards in Eclipse and IDEA plugins. Toggles shall be visible for HTML and XML reports. Consider using a drop down """"show lambda functions"""": - NONE (inner=false, lambda=false) - FIELDS ONLY (inner=false, lambda=true) - FIELDS AND METHODS (inner=true, lambda=true) ""","",0,1,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0 +"CLOV-1384","11/04/2013 09:26:29",2,"Fully qualified java.lang is not used for system properties in Clover.getRecorder ""Generated code: """," R=com_cenqua_clover.Clover.getNullRecorder();_R=com_cenqua_clover.Clover.getNullRecorder();_R=com_cenqua_clover.Clover.getRecorder( """"\u0063....\u0064\u0062"""", 1382598086449L,8589935092L,49,profiles, new String[]{""""clover.distributed.coverage"""",null}); ^^^^^ java.lang. is missing ",1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0 +"CLOV-1388","11/06/2013 14:11:31",20,"as a developer I'd like to have Spock @Unroll annotation being recognized by Clover ""The annotation causes that a test name will be unrolled for every combination of test data. It means that we can have multiple tests having different name, which in fact are related with exactly the same test method, but ran with different input arguments. Examples (from http://docs.spockframework.org/en/latest/data_driven_testing.html): Problem for Clover: we don't know neither a number of tests nor their names during compilation. it would have to be deferred to runtime. => add some inner class for a test class which would monitoring the test name and somehow pass to the per-test coverage recorder? ""","@Unroll // sequence index at the end @Unroll def """"maximum of two numbers""""() { ... } maximum of two numbers[0] PASSED maximum of two numbers[1] FAILED // variable substitution @Unroll def """"maximum of #a and #b is #c""""() { ... } maximum of 3 and 5 is 5 PASSED maximum of 7 and 0 is 7 FAILED ",0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0 +"CLOV-1389","11/14/2013 09:13:10",13,"Instrumentation of a branch condition with a generic type leads to javac compilation error ""*For a declaration like this:* {code:java} public T getFeatureValue(); ... if (client.getFeatureValue()) { {code} the instrumented line gets instrumented like: {code:java} _CLR3_1_113f23f2hnz3nmqe.R.inc(5146);if ((((client.getFeatureValue())&&(CLR3_1_113f23f2hnz3nmqe.R.iget(5147)!=0|true))||(_CLR3_1_113f23f2hnz3nmqe.R.iget(5148)==0&false))) {{ {code} which leads to compilation error: *Reason:* Javac performs autoboxing of the if condition. However it cannot deal properly if the same generic value is used with && or || operators. It looks like if javac wraps the entire if condition, not a single element. Look at the example: *Workaround:* Don't rely on boolean autoboxing and change a generic type to Boolean. or Extract expression being autoboxed to a local variable and evaluate before """"if"""". Use the variable in """"if"""". or surround problematic code block with """"///CLOVER:OFF"""" and """"///CLOVER:ON"""" inline comments (note that three slashes are used)"""," public T getFeatureValue(); ... if (client.getFeatureValue()) { _CLR3_1_113f23f2hnz3nmqe.R.inc(5146);if ((((client.getFeatureValue())&&(CLR3_1_113f23f2hnz3nmqe.R.iget(5147)!=0|true))||(_CLR3_1_113f23f2hnz3nmqe.R.iget(5148)==0&false))) {{ error: bad operand types for binary operator '&&' public class BranchCoverageWithAutoboxing { interface Data { public T getValue(); } public boolean testGetValue(Data source) { if (source.getValue()) { // Implicit conversion to Boolean via autoboxing return true; } return false; } public boolean testGetValueWithBoolean(Data source) { if (source.getValue() && true) { // Error: Operator && cannot be applied to java.lang.Object, boolean return true; } return false; } public boolean testGetValueWithWrappedBoolean(Data source) { if (Boolean.valueOf(source.getValue().toString()) && true) { // Explicit conversion, compilation is successful return true; } return false; } } // original: if (source.getValue) // fixed: Boolean b = source.getValue(); if (b) ",1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0 +"CLOV-1390","11/18/2013 15:05:27",1,"clover intrumented testcode with PersitenceConstructor and parameters fails ""If the integration tests running without clover instrumentation the test works fine, but with clover instrumentation the one test will fail. its seem to be a problem with follow declaration """," org.springframework.data.mapping.model.MappingException: No property null found on entity class com.test.framework.Model.DataModel to bind constructor parameter to! at org.springframework.data.mapping.model.PersistentEntityParameterValueProvider.getParameterValue(PersistentEntityParameterValueProvider.java:74) at org.springframework.data.mapping.model.SpELExpressionParameterValueProvider.getParameterValue(SpELExpressionParameterValueProvider.java:63) at org.springframework.data.convert.ReflectionEntityInstantiator.createInstance(ReflectionEntityInstantiator.java:71) at org.springframework.data.mongodb.core.convert.MappingMongoConverter.read(MappingMongoConverter.java:232) at org.springframework.data.mongodb.core.convert.MappingMongoConverter.read(MappingMongoConverter.java:212) at org.springframework.data.mongodb.core.convert.MappingMongoConverter.read(MappingMongoConverter.java:176) at org.springframework.data.mongodb.core.convert.MappingMongoConverter.read(MappingMongoConverter.java:172) at org.springframework.data.mongodb.core.convert.MappingMongoConverter.read(MappingMongoConverter.java:75) at org.springframework.data.mongodb.core.MongoTemplate$ReadDbObjectCallback.doWith(MongoTemplate.java:1841) at org.springframework.data.mongodb.core.MongoTemplate.executeFindOneInternal(MongoTemplate.java:1492) at org.springframework.data.mongodb.core.MongoTemplate.doFindOne(MongoTemplate.java:1303) at org.springframework.data.mongodb.core.MongoTemplate.findOne(MongoTemplate.java:475) at org.springframework.data.mongodb.core.MongoTemplate.findOne(MongoTemplate.java:470) at com.test.framework.DatabaseSpec.search User Query(DatabaseSpec.groovy:52) @PersistenceConstructor public DataModel(String username, String password) ",1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0 +"CLOV-1393","12/02/2013 14:12:24",1,"review ADG page layout in the HTML report ""review layouting of various components on the page and an interaction between them""","",0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0 +"CLOV-1395","12/05/2013 07:52:15",13,"IDEA13 compatiblity issues ""Compatiblity issues of Clover-for-IDEA with the latest IDEA13: 1) Attempt to load a license key from a file (About Clover box > License button > Load) fails with an error: 2) Compilation of the project with Clover enabled fails with compilation error """"package com_cenqua_clover"""" does not exist. The most probably Clover fails to add clover.jar to project's class path. 3) There is no option to enable/disable external build feature. It seems that the """"classic"""" build functionality has been removed in IDEA13. """," com.intellij.openapi.fileChooser.FileChooser.chooseFiles(Ljava/awt/Component;Lcom/intellij/openapi/fileChooser/FileChooserDescriptor;)[Lcom/intellij/openapi/vfs/VirtualFile;: com.intellij.openapi.fileChooser.FileChooser.chooseFiles(Ljava/awt/Component;Lcom/intellij/openapi/fileChooser/FileChooserDescriptor;)[Lcom/intellij/openapi/vfs/VirtualFile; java.lang.NoSuchMethodError: com.intellij.openapi.fileChooser.FileChooser.chooseFiles(Ljava/awt/Component;Lcom/intellij/openapi/fileChooser/FileChooserDescriptor;)[Lcom/intellij/openapi/vfs/VirtualFile; at com.cenqua.clover.idea.config.LicenseConfigPanel.loadLicenseFile(LicenseConfigPanel.java:321) at com.cenqua.clover.idea.config.LicenseConfigPanel.actionPerformed(LicenseConfigPanel.java:216) at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018) at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341) at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402) at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259) at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252) at java.awt.Component.processMouseEvent(Component.java:6505) at javax.swing.JComponent.processMouseEvent(JComponent.java:3321) at java.awt.Component.processEvent(Component.java:6270) at java.awt.Container.processEvent(Container.java:2229) at java.awt.Component.dispatchEventImpl(Component.java:4861) at java.awt.Container.dispatchEventImpl(Container.java:2287) at java.awt.Component.dispatchEvent(Component.java:4687) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422) at java.awt.Container.dispatchEventImpl(Container.java:2273) at java.awt.Window.dispatchEventImpl(Window.java:2719) at java.awt.Component.dispatchEvent(Component.java:4687) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:729) at java.awt.EventQueue.access$200(EventQueue.java:103) at java.awt.EventQueue$3.run(EventQueue.java:688) at java.awt.EventQueue$3.run(EventQueue.java:686) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76) at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87) at java.awt.EventQueue$4.run(EventQueue.java:702) at java.awt.EventQueue$4.run(EventQueue.java:700) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76) at java.awt.EventQueue.dispatchEvent(EventQueue.java:699) at com.intellij.ide.IdeEventQueue.e(IdeEventQueue.java:696) at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:520) at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:335) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:154) at java.awt.WaitDispatchSupport$2.run(WaitDispatchSupport.java:182) at java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:221) at java.security.AccessController.doPrivileged(Native Method) at java.awt.WaitDispatchSupport.enter(WaitDispatchSupport.java:219) at java.awt.Dialog.show(Dialog.java:1082) at com.intellij.openapi.ui.impl.DialogWrapperPeerImpl$MyDialog.show(DialogWrapperPeerImpl.java:786) at com.intellij.openapi.ui.impl.DialogWrapperPeerImpl.show(DialogWrapperPeerImpl.java:462) at com.intellij.openapi.ui.DialogWrapper.showAndGetOk(DialogWrapper.java:1543) at com.intellij.openapi.ui.DialogWrapper.show(DialogWrapper.java:1511) at com.intellij.ide.actions.ShowSettingsUtilImpl.a(ShowSettingsUtilImpl.java:263) at com.intellij.ide.actions.ShowSettingsUtilImpl.editConfigurable(ShowSettingsUtilImpl.java:228) at com.intellij.ide.actions.ShowSettingsUtilImpl.editConfigurable(ShowSettingsUtilImpl.java:213) at com.cenqua.clover.idea.AboutDialog$1.actionPerformed(AboutDialog.java:216) at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018) at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341) at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402) at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259) at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252) at java.awt.Component.processMouseEvent(Component.java:6505) at javax.swing.JComponent.processMouseEvent(JComponent.java:3321) at java.awt.Component.processEvent(Component.java:6270) at java.awt.Container.processEvent(Container.java:2229) at java.awt.Component.dispatchEventImpl(Component.java:4861) at java.awt.Container.dispatchEventImpl(Container.java:2287) at java.awt.Component.dispatchEvent(Component.java:4687) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422) at java.awt.Container.dispatchEventImpl(Container.java:2273) at java.awt.Window.dispatchEventImpl(Window.java:2719) at java.awt.Component.dispatchEvent(Component.java:4687) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:729) at java.awt.EventQueue.access$200(EventQueue.java:103) at java.awt.EventQueue$3.run(EventQueue.java:688) at java.awt.EventQueue$3.run(EventQueue.java:686) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76) at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87) at java.awt.EventQueue$4.run(EventQueue.java:702) at java.awt.EventQueue$4.run(EventQueue.java:700) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76) at java.awt.EventQueue.dispatchEvent(EventQueue.java:699) at com.intellij.ide.IdeEventQueue.e(IdeEventQueue.java:696) at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:520) at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:335) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:154) at java.awt.WaitDispatchSupport$2.run(WaitDispatchSupport.java:182) at java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:221) at java.security.AccessController.doPrivileged(Native Method) at java.awt.WaitDispatchSupport.enter(WaitDispatchSupport.java:219) at java.awt.Dialog.show(Dialog.java:1082) at com.intellij.openapi.ui.impl.DialogWrapperPeerImpl$MyDialog.show(DialogWrapperPeerImpl.java:786) at com.intellij.openapi.ui.impl.DialogWrapperPeerImpl.show(DialogWrapperPeerImpl.java:462) at com.intellij.openapi.ui.DialogWrapper.showAndGetOk(DialogWrapper.java:1543) at com.intellij.openapi.ui.DialogWrapper.show(DialogWrapper.java:1511) at com.cenqua.clover.idea.actions.AboutAction.actionPerformed(AboutAction.java:19) at com.intellij.openapi.actionSystem.ex.ActionUtil.performActionDumbAware(ActionUtil.java:162) at com.intellij.openapi.actionSystem.impl.ActionButton.a(ActionButton.java:170) at com.intellij.openapi.actionSystem.impl.ActionButton.a(ActionButton.java:133) at com.intellij.openapi.actionSystem.impl.ActionButton.processMouseEvent(ActionButton.java:311) at java.awt.Component.processEvent(Component.java:6270) at java.awt.Container.processEvent(Container.java:2229) at java.awt.Component.dispatchEventImpl(Component.java:4861) at java.awt.Container.dispatchEventImpl(Container.java:2287) at java.awt.Component.dispatchEvent(Component.java:4687) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422) at java.awt.Container.dispatchEventImpl(Container.java:2273) at java.awt.Window.dispatchEventImpl(Window.java:2719) at java.awt.Component.dispatchEvent(Component.java:4687) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:729) at java.awt.EventQueue.access$200(EventQueue.java:103) at java.awt.EventQueue$3.run(EventQueue.java:688) at java.awt.EventQueue$3.run(EventQueue.java:686) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76) at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87) at java.awt.EventQueue$4.run(EventQueue.java:702) at java.awt.EventQueue$4.run(EventQueue.java:700) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76) at java.awt.EventQueue.dispatchEvent(EventQueue.java:699) at com.intellij.ide.IdeEventQueue.e(IdeEventQueue.java:696) at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:520) at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:335) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138) at java.awt.EventDispatchThread.run(EventDispatchThread.java:91) java: package com_cenqua_clover does not exist ",1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0 +"CLOV-1396","12/05/2013 12:01:54",2,"""No such property: testTargetPatterns"" exception with Grails 2.3 ""Unable to use Clover-for-Grails with Grails 2.3. Build fails with an exception: *Reason:* In the Grails 2.3 the _GrailsTest.groovy has been refactored into GrailsProjectTestRunner and GrailsProjectTestCompiler. The testTargetPatterns property has been removed. *Probable fix:* Replace testTargetPattern by iterator over testNames. """," |Environment set to test ................................... [mkdir] Created dir: C:\Work\grails-clover-plugin-hg\testcases\petclinic233\target\test-reports\html . [mkdir] Created dir: C:\Work\grails-clover-plugin-hg\testcases\petclinic233\target\test-reports\plain .Error | Error executing script TestApp: No such property: testTargetPatterns for class: _Events groovy.lang.MissingPropertyException: No such property: testTargetPatterns for class: _Events at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap(ScriptBytecodeAdapter.java:50) at org.codehaus.groovy.runtime.callsite.PogoGetPropertySite.getProperty(PogoGetPropertySite.java:49) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callGroovyObjectGetProperty(AbstractCallSite.java:231) at _Events$_run_closure3.doCall(_Events.groovy:75) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:601) at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90) at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233) at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1086) at groovy.lang.ExpandoMetaClass.invokeMethod(ExpandoMetaClass.java:1110) at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:910) ",1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0 +"CLOV-1397","12/16/2013 19:02:43",13,"Java+Groovy compilation fails with Clover enabled in IntelliJ 12.1.x ""When building my project in IntelliJ the build fails with the following exception. I saw a couple other similar comments about how using an external build can cause problems but I thought this was fixed with Clover 3.2? If I turn off the external build then the compilation does succeed. The project is a combined Java/Groovy project if that matters. Let me know if you need any more details. {panel:title=Problem summary|bgColor=yellow} This bug occurs when all of the following conditions are met: * IDEA 12.1.1 or later is used * Clover 3.1.12 or later is used * an """"external build"""" feature is enabled (Settings > Compiler > Use external build) * project has a mixed Java + Groovy code It's an IDEA bug - http://youtrack.jetbrains.com/issue/IDEA-110835 - and has been fixed in IDEA13. Therefore: * in IDEA 12.x - disable the """"external build"""" feature * in IDEA 13.x - problem does not occur {panel} """," Error: java.lang.IllegalArgumentException: org.jetbrains.jps.javac.TransformableJavaFileObject java.lang.RuntimeException: java.lang.IllegalArgumentException: org.jetbrains.jps.javac.TransformableJavaFileObject at com.sun.tools.javac.main.Main.compile(Main.java:475) at com.sun.tools.javac.api.JavacTaskImpl.call(JavacTaskImpl.java:132) at org.jetbrains.jps.javac.JavacMain.compile(JavacMain.java:167) at org.jetbrains.jps.incremental.java.JavaBuilder.compileJava(JavaBuilder.java:364) at org.jetbrains.jps.incremental.java.JavaBuilder.compile(JavaBuilder.java:276) at org.jetbrains.jps.incremental.java.JavaBuilder.doBuild(JavaBuilder.java:190) at org.jetbrains.jps.incremental.java.JavaBuilder.build(JavaBuilder.java:162) at org.jetbrains.jps.incremental.IncProjectBuilder.runModuleLevelBuilders(IncProjectBuilder.java:1018) at org.jetbrains.jps.incremental.IncProjectBuilder.runBuildersForChunk(IncProjectBuilder.java:742) at org.jetbrains.jps.incremental.IncProjectBuilder.buildTargetsChunk(IncProjectBuilder.java:790) at org.jetbrains.jps.incremental.IncProjectBuilder.buildChunkIfAffected(IncProjectBuilder.java:705) at org.jetbrains.jps.incremental.IncProjectBuilder.buildChunks(IncProjectBuilder.java:526) at org.jetbrains.jps.incremental.IncProjectBuilder.runBuild(IncProjectBuilder.java:314) at org.jetbrains.jps.incremental.IncProjectBuilder.build(IncProjectBuilder.java:179) at org.jetbrains.jps.cmdline.BuildRunner.runBuild(BuildRunner.java:129) at org.jetbrains.jps.cmdline.BuildSession.runBuild(BuildSession.java:220) at org.jetbrains.jps.cmdline.BuildSession.run(BuildSession.java:112) at org.jetbrains.jps.cmdline.BuildMain$MyMessageHandler$1.run(BuildMain.java:132) at org.jetbrains.jps.service.impl.SharedThreadPoolImpl$1.run(SharedThreadPoolImpl.java:41) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) at java.util.concurrent.FutureTask.run(FutureTask.java:262) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:744) Caused by: java.lang.IllegalArgumentException: org.jetbrains.jps.javac.TransformableJavaFileObject at com.sun.tools.javac.file.JavacFileManager.inferBinaryName(JavacFileManager.java:660) at javax.tools.ForwardingJavaFileManager.inferBinaryName(ForwardingJavaFileManager.java:84) at com.sun.tools.javac.api.ClientCodeWrapper$WrappedJavaFileManager.inferBinaryName(ClientCodeWrapper.java:225) at com.sun.tools.javac.jvm.ClassReader.fillIn(ClassReader.java:2524) at com.sun.tools.javac.jvm.ClassReader.fillIn(ClassReader.java:2505) at com.sun.tools.javac.jvm.ClassReader.complete(ClassReader.java:2143) at com.sun.tools.javac.code.Symbol.complete(Symbol.java:421) at com.sun.tools.javac.comp.Enter.visitTopLevel(Enter.java:298) at com.sun.tools.javac.tree.JCTree$JCCompilationUnit.accept(JCTree.java:459) at com.sun.tools.javac.comp.Enter.classEnter(Enter.java:258) at com.sun.tools.javac.comp.Enter.classEnter(Enter.java:272) at com.sun.tools.javac.comp.Enter.complete(Enter.java:484) at com.sun.tools.javac.comp.Enter.main(Enter.java:469) at com.sun.tools.javac.main.JavaCompiler.enterTrees(JavaCompiler.java:929) at com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:824) at com.sun.tools.javac.main.Main.compile(Main.java:439) ... 23 more ",1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0 +"CLOV-1398","12/18/2013 22:18:42",3,"Java 1.8 Exceptions not being propagated correctly ""I have the following test stub (src/main/java) {code:java} public final class TestStub { TestStub() { throw new IllegalArgumentException(); } public static void getHandler() { new HashMap<>().computeIfAbsent(String.class, t -> new TestStub()); } } {code} And the following test (src/test/java) {code:java} public class FooTest { @Test(expected = IllegalArgumentException.class) public void test0() { TestStub.getHandler(); } } {code} Using maven It runs fine using """"clean install"""" however using clover I get the following exception If I replace with a standard anonymous class implementing java.util.function.Function it runs fine"""," public final class TestStub { TestStub() { throw new IllegalArgumentException(); } public static void getHandler() { new HashMap<>().computeIfAbsent(String.class, t -> new TestStub()); } } public class FooTest { @Test(expected = IllegalArgumentException.class) public void test0() { TestStub.getHandler(); } } java.lang.reflect.UndeclaredThrowableException at com.sun.proxy.$Proxy12.apply(Unknown Source) at java.util.HashMap.computeIfAbsent(HashMap.java:1118) at org.cakeframework.internal.container.TestStub.getHandler(TestStub.java:26) at org.cakeframework.internal.container.FooTest.test0(FooTest.java:29) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:483) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44) at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) at org.junit.internal.runners.statements.ExpectException.evaluate(ExpectException.java:19) at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229) at org.junit.runners.ParentRunner.run(ParentRunner.java:309) at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:264) at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:153) at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:124) at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:200) at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:153) at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:103) Caused by: java.lang.reflect.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:483) at org.cakeframework.internal.container.TestStub$__CLR3_2_0wqwqhpd53be5$1.invoke(TestStub.java:20) ... 28 more Caused by: java.lang.IllegalArgumentException at org.cakeframework.internal.container.TestStub.(TestStub.java:22) at org.cakeframework.internal.container.TestStub.lambda$getHandler$6(TestStub.java:26) at org.cakeframework.internal.container.TestStub$$Lambda$13/1227074340.apply(Unknown Source) ... 33 more ",1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0 +"CLOV-1399","12/19/2013 07:44:55",3,"Java 1.8 compilation fails when lambda is passed to a generic argument ""The following piece of code fails to be instrumented Javac gives the following error message: [ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project cake-util: Compilation failure: Compilation failure: [ERROR] /Users/kasperni/workspace/CAKE/cake-util/cake-util/target/clover/src-instrumented/org/cakeframework/internal/util/tree/Fails.java:[27,67] reference to depthFirstTraversal is ambiguous [ERROR] both method depthFirstTraversal(java.lang.Class) in org.cakeframework.internal.util.tree.Fails and method depthFirstTraversal(java.util.function.Predicate) in org.cakeframework.internal.util.tree.Fails match [ERROR] /Users/kasperni/workspace/CAKE/cake-util/cake-util/target/clover/src-instrumented/org/cakeframework/internal/util/tree/Fails.java:[27,86] incompatible types: cannot infer type-variable(s) I,T [ERROR] (argument mismatch; java.lang.Class is not a functional interface) [ERROR] -> [Help 1]"""," public class Fails { public final Iterable depthFirstTraversal(Class type) { return (Iterable) depthFirstTraversal(e -> type.isInstance(e)); } public final Iterable depthFirstTraversal(Predicate predicate) { return null; } } ",1,0,0,1,1,0,1,0,1,0,1,0,0,0,1,0,0 +"CLOV-1401","01/02/2014 14:21:19",8,"Clover fails to instrument generic type with a constructor reference ""This works fine: {code:java} myLambda = ArrayList::new; // javac error since JDK8 b114 myLambda = ArrayList::new; {code} But the following: {code:java} myLambda = ArrayList::new; myLambda = ArrayList::new; {code} fails with a parser error: """," myLambda = ArrayList::new; // javac error since JDK8 b114 myLambda = ArrayList::new; myLambda = ArrayList::new; myLambda = ArrayList::new; ERROR: Instrumentation errorInstrumentation error : c:\Work\clover-hg\clover-core\src\test\resources\javasyntax1.8\LambdaAndMethodReferences.java:78:28:unexpected token: ArrayList com.atlassian.clover.api.CloverException: c:\Work\clover-hg\clover-core\src\test\resources\javasyntax1.8\LambdaAndMethodReferences.java:78:28:unexpected token: ArrayList at com.atlassian.clover.instr.java.Instrumenter.instrument(Instrumenter.java:158) at com.atlassian.clover.CloverInstr.execute(CloverInstr.java:73) at com.atlassian.clover.CloverInstr.mainImpl(CloverInstr.java:49) at com.atlassian.clover.JavaSyntaxCompilationTestBase.instrumentSourceFile(JavaSyntaxCompilationTestBase.java:145) at com.atlassian.clover.JavaSyntaxCompilationTestBase.instrumentAndCompileSourceFile(JavaSyntaxCompilationTestBase.java:111) at com.atlassian.clover.JavaSyntax18CompilationTest.testLambdaAndMethodReferences(JavaSyntax18CompilationTest.java:84) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:483) at junit.framework.TestCase.runTest(TestCase.java:168) at junit.framework.TestCase.runBare(TestCase.java:134) at junit.framework.TestResult$1.protect(TestResult.java:110) at junit.framework.TestResult.runProtected(TestResult.java:128) at junit.framework.TestResult.run(TestResult.java:113) at junit.framework.TestCase.run(TestCase.java:124) at junit.framework.TestSuite.runTest(TestSuite.java:243) at junit.framework.TestSuite.run(TestSuite.java:238) at org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38ClassRunner.java:83) at org.junit.runner.JUnitCore.run(JUnitCore.java:157) at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:77) at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:195) at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:63) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:483) at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120) Caused by: line 78:28: unexpected token: ArrayList at com.atlassian.clover.instr.java.JavaRecognizer.conditionalExpression(JavaRecognizer.java:4407) at com.atlassian.clover.instr.java.JavaRecognizer.assignmentExpression(JavaRecognizer.java:4274) at com.atlassian.clover.instr.java.JavaRecognizer.assignmentExpression(JavaRecognizer.java:4319) at com.atlassian.clover.instr.java.JavaRecognizer.expression(JavaRecognizer.java:3366) at com.atlassian.clover.instr.java.JavaRecognizer.statement(JavaRecognizer.java:2909) at com.atlassian.clover.instr.java.JavaRecognizer.outerCompoundStmt(JavaRecognizer.java:2696) at com.atlassian.clover.instr.java.JavaRecognizer.field(JavaRecognizer.java:2265) at com.atlassian.clover.instr.java.JavaRecognizer.classBlock(JavaRecognizer.java:1728) at com.atlassian.clover.instr.java.JavaRecognizer.classDefinition(JavaRecognizer.java:736) at com.atlassian.clover.instr.java.JavaRecognizer.typeDefinition2(JavaRecognizer.java:666) at com.atlassian.clover.instr.java.JavaRecognizer.typeDefinition(JavaRecognizer.java:524) at com.atlassian.clover.instr.java.JavaRecognizer.compilationUnit(JavaRecognizer.java:445) at com.atlassian.clover.instr.java.Instrumenter.instrument(Instrumenter.java:212) at com.atlassian.clover.instr.java.Instrumenter.instrument(Instrumenter.java:121) ... 27 more ",1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0 +"CLOV-1403","01/02/2014 20:57:00",2,"Cloverage view layout is crappy with the Coverage Summary panel ""1. Not all buttons are visible by default. 2. Width/height proportion which triggers a change between horizontal/vertical layout is not set correctly. As a result we've got a crappy behavior as on the following screen shot: !cloverage_view_layout.png!""","",1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0 +"CLOV-1404","01/02/2014 21:20:56",2,"Source highlighting label is cropped in the settings dialog ""Project Settings > Clover > View """"Out of date"""" labels are cropped [^project_settings_clover.png]""","",1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0 +"CLOV-1406","01/11/2014 11:36:15",2,"URISyntaxException from Clover IDEA plugin under IDEA13 on Mac OS X """""," java.net.URISyntaxException: Illegal character in path at index 37: file:/Users/grant/Library/Application Support/IntelliJIdea13/clover-idea-3.2.1.jar: java.net.URISyntaxException: Illegal character in path at index 37: file:/Users/grant/Library/Application Support/IntelliJIdea13/clover-idea-3.2.1.jar java.lang.RuntimeException: java.net.URISyntaxException: Illegal character in path at index 37: file:/Users/grant/Library/Application Support/IntelliJIdea13/clover-idea-3.2.1.jar at com.cenqua.clover.idea.LibrarySupport.getCloverClassBase(LibrarySupport.java:150) at com.cenqua.clover.idea.build.CloverCompiler$RefreshCloverGlobalLibraryTask.execute(CloverCompiler.java:282) at com.intellij.compiler.impl.CompileDriver.a(CompileDriver.java:2375) at com.intellij.compiler.impl.CompileDriver.access$900(CompileDriver.java:122) at com.intellij.compiler.impl.CompileDriver$8.run(CompileDriver.java:706) at com.intellij.compiler.progress.CompilerTask.run(CompilerTask.java:167) at com.intellij.openapi.progress.impl.ProgressManagerImpl$TaskRunnable.run(ProgressManagerImpl.java:464) at com.intellij.openapi.progress.impl.ProgressManagerImpl$2.run(ProgressManagerImpl.java:178) at com.intellij.openapi.progress.ProgressManager.executeProcessUnderProgress(ProgressManager.java:209) at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:212) at com.intellij.openapi.progress.impl.ProgressManagerImpl.runProcess(ProgressManagerImpl.java:171) at com.intellij.openapi.progress.impl.ProgressManagerImpl$8.run(ProgressManagerImpl.java:373) at com.intellij.openapi.application.impl.ApplicationImpl$8.run(ApplicationImpl.java:436) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:439) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) at java.util.concurrent.FutureTask.run(FutureTask.java:138) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918) at java.lang.Thread.run(Thread.java:695) at com.intellij.openapi.application.impl.ApplicationImpl$1$1.run(ApplicationImpl.java:153) Caused by: java.net.URISyntaxException: Illegal character in path at index 37: file:/Users/grant/Library/Application Support/IntelliJIdea13/clover-idea-3.2.1.jar at java.net.URI$Parser.fail(URI.java:2810) at java.net.URI$Parser.checkChars(URI.java:2983) at java.net.URI$Parser.parseHierarchical(URI.java:3067) at java.net.URI$Parser.parse(URI.java:3015) at java.net.URI.(URI.java:577) at com.cenqua.clover.idea.LibrarySupport.getCloverClassBase(LibrarySupport.java:121) ... 19 more java.net.URISyntaxException: Illegal character in path at index 37: file:/Users/grant/Library/Application Support/IntelliJIdea13/clover-idea-3.2.1.jar: java.net.URISyntaxException: Illegal character in path at index 37: file:/Users/grant/Library/Application Support/IntelliJIdea13/clover-idea-3.2.1.jar java.lang.RuntimeException: java.net.URISyntaxException: Illegal character in path at index 37: file:/Users/grant/Library/Application Support/IntelliJIdea13/clover-idea-3.2.1.jar at com.cenqua.clover.idea.LibrarySupport.getCloverClassBase(LibrarySupport.java:150) ",1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0 +"CLOV-1408","01/13/2014 11:27:04",5,"As a developer I'd like to see JUnit Parameterized tests in the report ""Similarly to the Spock framework (CLOV-1256) I'd like to see runtime test names from the JUnit4 parameterized tests. Example: """," import org.junit.*; import org.junit.runner.*; import org.junit.runners.*; import java.util.*; import static org.junit.Assert.*; import static org.junit.runners.Parameterized.*; @RunWith(Parameterized.class) public class FibonacciTest { @Parameters public static Collection data() { return Arrays.asList(new Object[][] { { 0, 0 }, { 1, 1 }, { 2, 1 }, { 3, 2 }, { 4, 3 }, { 5, 5 },{ 6, 8 } }); } private int fInput; private int fExpected; public FibonacciTest(int input, int expected) { fInput= input; fExpected= expected; } @Test public void test() { assertEquals(fExpected, Fibonacci.compute(fInput)); } } class Fibonacci { static int compute(int a) { return a; } } ",0,1,0,0,0,1,0,1,0,0,0,0,0,0,1,0,0 +"CLOV-1409","01/13/2014 11:32:37",2,"Split velocity templates to 2 sets: adg and classic ""make a copy of original templates extend HtmlReporter and add option to choose one of them, e.g.: HtmlReporter -style classic/adg ADG is the default one""","",0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0 +"CLOV-1410","01/13/2014 11:34:15",2,"Add report style=adg/classic options for Ant, Maven, Grails ""scope: ant, maven, grails plugins new toggle, default adg, pass to HtmlReporter""","",0,1,0,0,0,1,1,0,1,0,1,0,0,0,0,0,0 +"CLOV-1411","01/13/2014 11:36:29",1,"Add radio button style=adg/classic in eclipse and idea IDEs ""optional: add radio button in reports wizards alternatively: use the default one (ADG) ""","",0,1,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0 +"CLOV-1412","01/13/2014 13:40:43",1,"Use ADG-compliant colour set for widgets ""Replace existing colours by those recommended by ADG: * https://developer.atlassian.com/design/latest/colors.html Scope: (/) tree map (/) cloud view (/) coverage bars (dashboard, package/class/file summary) (/) test results bars (dashboard, test results pages) (/) coverage markers on the page margin (/) class coverage distribution / class complexity diagrams (use """"Blue"""" from ADG) (/) colours of hyperlinks ""","",0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0 +"CLOV-1413","01/13/2014 14:13:48",1,"as a developer I expect that Clover will automatically configure IntelliJ IDEA compiler settings ""Since IDEA12 a new external build feature has been introduced. It has also an option to perform parallel build (Settings > Compile > Build independent modules in parallel toggle), however Clover does not support parallel instrumentation (see CLOV-1284). Clover should automatically disable the parallel build toggle whenever compilation starts (it can notify about this fact by a baloon), otherwise it will throw various runtime exceptions during compilation.""","",0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0 +"CLOV-1415","01/15/2014 06:16:45",2,"The clover2:clover goal does not pass the sourcepath property to underlying task ""*Original problem from the cloned issue:* {quote} Clover database contains FileInfo objects for every source file. One of FileInfo fields is an absolute path to given file. When database is written, it uses current platform file separator for file name ('\' for windows, '/' for Linux/MacOS). However, when database is read it interprets file name using again current platform file separator. As a consequence, when database is generated on Windows and report generated on Linux, it cannot resolve file name properly - it takes whole path as a single path segment, resulting in paths like: /path/from/report/generation/sourcepath/D:/path/from/instrumented/build/file.java As a consequence report generation does create html file containing source code with highlighted coverage. {quote} *Problem with the clover2:clover goal:* The clover2:clover call using a default report descriptor (which is located in the maven-clover2-plugin-X.X.X.jar/default-clover-report.xml). This report descriptor has a reporting defined like: {code:xml} {code} i.e. there is no property. Possible fix #1: * add the property * set it's value to a list of standard source roots, similarly as it's done for tag _excerpt from the CloverReportMojo:_ {code:java} antProject.setProperty(""""testPattern"""", """"**/src/test/**""""); {code} _excerpt from the default-clover-report.xml:_ {code:xml} ... {code} so it could be like this: {code:java} antProject.setProperty(""""sourceRootsPattern"""", """"**/src/test/*;**/src/main/*""""); ... {code} (!) potential problem: build may have source roots different than src/test/xxx and src/main/xxx; in such case sources would not be found; it means that settings this property should be optional; it could be done via boolean flag Possible fix #2: * add the property to the clover2:clover goal * if it's not null then pass it's value to the property in the goal in the report descriptor (!) potential problem: how developers could easily find all source roots in all modules in their maven project in order to pass it as the property? """," antProject.setProperty(""""testPattern"""", """"**/src/test/**""""); ... antProject.setProperty(""""sourceRootsPattern"""", """"**/src/test/*;**/src/main/*""""); ... ",1,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0 +"CLOV-1419","01/15/2014 12:33:41",2,"change project/package statistics to the boxed component ""Change this: !package_summary.png! Move it under a horizontal navigation (on overview tab for instance). Keep it as a boxed component (div grid). ""","",0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0 +"CLOV-1420","01/15/2014 12:38:02",2,"change package and class list tables into TablesSortable ""Change this (project summary, package summary): !package_and_class_list.png! into a sortable table like this: https://docs.atlassian.com/aui/latest/sandbox/#""","",0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0 +"CLOV-1423","01/15/2014 12:53:11",5,"change contributing tests table to TablesSortable etc ""Change a table with contributing tests: !contributing_tests.png! To do: * table into TableSortable * """"Show/hide tests"""" label into expander * """"Select all/deselect all"""" labels into single master toggle * remember about highlighting of lines of code and class' methods in a table""","",0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0 +"CLOV-1424","01/15/2014 12:56:56",1,"change small class histogram into container ""similarly as for coverage statistics put into a box: https://developer.atlassian.com/design/1.2/containers.html this: !small_histogram.png!""","",0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0 +"CLOV-1425","01/15/2014 12:59:44",1,"change dashboard boxes look ""This: [^dashboard_boxes.png] should look like this: https://developer.atlassian.com/design/1.2/containers.html""","",0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0 +"CLOV-1426","01/15/2014 13:02:52",1,"change page footer look ""This: [^page_footer.png] should look like this: https://developer.atlassian.com/design/1.2/page-footer.html ""","",0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0 +"CLOV-1427","01/15/2014 13:08:54",1,"change cloud tabs ""The """"Package risks"""" and """"Quick Wins"""" tabs: !cloud_tabs.png! should have an ADG tabs look: https://developer.atlassian.com/design/1.2/tabs.html ""","",0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0 +"CLOV-1428","01/15/2014 13:18:27",2,"change classes/tests/results bottom left frame ""Change this: !classes_tests_results.png! Scope: * add a title: https://developer.atlassian.com/design/1.2/typography.html * use tabs: https://developer.atlassian.com/design/1.2/tabs.html * use sortable table: https://developer.atlassian.com/design/1.2/tables.html ""","",0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0 +"CLOV-1429","01/15/2014 13:20:57",1,"chage test result labels to lozenges """"""pass"""" / """"fail"""" / """"error"""" test statuses shall be changed to Subtle lozenges: https://developer.atlassian.com/design/1.2/lozenges.html ""","",0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0 +"CLOV-1431","01/17/2014 10:02:53",3,"JDK8 sources fail to compile when instrumented by Clover ""See the attached comparison of original and instrumented code: [^unicode_decoding_error.png] A problem is as follows: * Clover has a UnicodeDecodingReader class which translates 6-letter character sequences """"\uNNNN"""" into a single UTF16 character * this is used to correctly tokenize code identifiers (IDENT) written in non-ascii characters (a variable with German umlaut for instance) In this specific example, some """"\uNNNN"""" sequences were translated inside comments, and some characters were """"swallowed"""". So for instance a fragment: ends with """"java: illegal unicode escape"""". Related issues: * CLOV-1305 - syntax highlighting problem * CLOV-1131 - Eclipse/IDEA editors get out of sync """," {@code \u} ",1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0 +"CLOV-1432","01/20/2014 21:13:26",3,"Integration tests are not being instrumented in Grails 2.3 ""Clover does not instrument integration tests in Grails 2.3. Caused by: * new GrailsIntegrationTestCompiler wrapper introduced in Grails 2.3.0 is not being recognized by Clover as a Groovy compiler * GrailsTestRunner calls Groovy compiler internally and this compiler does not have grover.jar on a classpath, thus Clover AST transformer is not called Todo: * check how to recognize/pass inclusion/exclusion patterns to the internal compiler of GrailsTestRunner Workaround: * not available""","",1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0 +"CLOV-1434","01/23/2014 14:49:46",1,"Transitive dependency resolution fails in Grails 2.3 during installation of the Clover plugin ""Since Grails 2.3 sth has changed in the dependency resolution mechanism. As a consequence, when the Clover plugin is being installed for a first time, the transitive dependency to com.cenqua.clover:clover is not resolved and this jar is not available on class path. As a consequence build fails when it tries to import """"cloverlib.xml"""". Workaround: define a dependency to com.cenqua.clover:clover in BuildConfig.groovy (or in pom.xml) - in the very same way as it was made in Clover-for-Grails 3.1.12 or older under the Grails 2.2. Fix: 1) reconfigure dependencies.groovy / pom.xml ? 2) roll back to a previous approach - i.e. merge clover-grails1 branch into default, produce one plugin version, rollback documentation""","",1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0 +"CLOV-1438","01/28/2014 07:30:42",8,"Create an API for plugging custom I/O handler ""Currently Clover uses a standard Java IO/NIO libraries to read from and write to: a coverage database, coverage recording files (global and per-test), test optimization snapshots. This is not sufficient when user want to run an application on a custom file system, such as Apache HDFS. Provide an API which would allow to provide a custom IO handler. Scope: * writing coverage files (global and per-test) * reading/writing database (optional - we deal a lot with file channels which might be a problem; a growable coverage recorder can be used at runtime instead of this) * writing optimization snapshot (optional - not everyone uses test optimization) References: * https://answers.atlassian.com/questions/255286/does-clover-support-to-read-and-write-clover-db-and-coverage-recording-files-from-hdfs * https://answers.atlassian.com/questions/48360/how-can-i-get-functional-test-code-coverage-reports-for-mapreduce-program""","",0,1,0,0,0,0,0,1,0,0,0,0,0,1,1,0,0 +"CLOV-1441","01/30/2014 08:49:09",2,"Clover plugin doesn't load on IDEA 13 Startup "" """," null java.lang.NullPointerException at com.cenqua.clover.idea.LibrarySupport.getValidatedCloverLibrary(LibrarySupport.java:81) at com.cenqua.clover.idea.build.CloverLibraryInjector$1.run(CloverLibraryInjector.java:44) at com.intellij.openapi.application.impl.ApplicationImpl.runWriteAction(ApplicationImpl.java:997) at com.cenqua.clover.idea.build.CloverLibraryInjector.addCloverLibrary(CloverLibraryInjector.java:61) at com.cenqua.clover.idea.build.CloverLibraryInjector.updateModulesDependencies(CloverLibraryInjector.java:35) at com.cenqua.clover.idea.ProjectPlugin.projectPostStartup(ProjectPlugin.java:116) at com.cenqua.clover.idea.ProjectPlugin$1.run(ProjectPlugin.java:86) at com.intellij.ide.startup.impl.StartupManagerImpl$7.run(StartupManagerImpl.java:286) at com.intellij.ide.startup.impl.StartupManagerImpl.a(StartupManagerImpl.java:259) at com.intellij.ide.startup.impl.StartupManagerImpl.access$100(StartupManagerImpl.java:52) at com.intellij.ide.startup.impl.StartupManagerImpl$4.run(StartupManagerImpl.java:184) at com.intellij.openapi.project.DumbServiceImpl.a(DumbServiceImpl.java:238) at com.intellij.openapi.project.DumbServiceImpl.access$500(DumbServiceImpl.java:53) at com.intellij.openapi.project.DumbServiceImpl$IndexUpdateRunnable$1$3.run(DumbServiceImpl.java:420) at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:733) at java.awt.EventQueue.access$200(EventQueue.java:103) at java.awt.EventQueue$3.run(EventQueue.java:694) at java.awt.EventQueue$3.run(EventQueue.java:692) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76) at java.awt.EventQueue.dispatchEvent(EventQueue.java:703) at com.intellij.ide.IdeEventQueue.e(IdeEventQueue.java:696) at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:524) at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:335) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138) at java.awt.EventDispatchThread.run(EventDispatchThread.java:91) ",1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0 +"CLOV-1442","01/30/2014 12:58:42",2,"Use more unique property names in clover.xml ""The clover.xml contains the following properties: Their names are not very unique so there's some chance that developer could actually use similar ones in his project. This may lead to clash an Ant properties are not read-only once set. Use more distinct names, e.g. """"clover.project.name"""". Update documentation on CAC accordingly. """," ",1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0 +"CLOV-1443","01/31/2014 09:40:15",2,"Clover Grails Plugin fails when tests are launched from IDEA ""Steps to reproduce: * import Grails-based project into IntelliJ IDEA * add Clover Grails plugin to the project * run *forked* tests from IDEA Build fails with an error like: Workaround: * disable forked test execution in IDEA Probable cause: IDEA does not call """"grails test-app"""" but executes the GrailsScriptRunner, e.g.: The most probably this runner does not import the _GrailsTest.groovy, which contains a definition of the testNames property."""," | Error Error running forked test-app: No such property: testNames for class: _Events (Use --stacktrace to see the full trace) | Error Forked Grails VM exited with error java -cp ... org.codehaus.groovy.grails.cli.support.GrailsStarter --main org.codehaus.groovy.grails.cli.GrailsScriptRunner ",1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0 +"CLOV-1446","02/07/2014 10:26:41",2,"Tree map report has an empty line in context menu ""Open TreeMap report in IDEA, right click on a class, a context menu is opened which has an empty first line: !jump_to_source.png! ""","",1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0 +"CLOV-1447","02/10/2014 08:30:10",5,"Add possibility to configure in Eclipse and IDEA IDEs ""The and tasks allow to define section, where we can select coverage recorder type etc. There's no possibility to configure it in Clover-for-Eclipse and Clover-for-IDEA plugins.""","",0,1,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0 +"CLOV-1448","02/10/2014 09:10:04",3,"Test spock under gradle ""We don't support Gradle. However, it's worth checking how our Spock works (or not :-) ) with open-source gradle clover plugins available. To do: * prepare a sample app with a build.gradle script * integrate Clover into it using the https://github.com/bmuschko/gradle-clover-plugin * check if spock instrumentation works here * publish results on CAC as a developer guide ""","",0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0 +"CLOV-1449","02/10/2014 09:15:26",2,"Test spock with XML importing ""Test how the can be used together with: * Spock Spec classes with @Unroll * test results imported from an external XML file Purpose of test: * check if runtime test names recorded by Clover matches test names reported by Spock Outcome: * document whether it works (and how) or not""","",0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0 +"CLOV-1451","02/10/2014 09:38:11",2,"Fix uncheched warnings for code instrumented by Clover ""Follow up of CLOV-1399: {quote} I tried it with 3.2.2 same issue for every instrumented class. [WARNING] /Users/kasperni/workspace/cake-container/cake-container/cake-container-api/target/clover/src-instrumented/org/cakeframework/container/RuntimeContainerException.java:[24,758] unchecked cast required: I found: java.lang.Object It is this generated line that generates the warning: return (I) java.lang.reflect.Proxy.newProxyInstance(l.getClass().getClassLoader(), l.getClass() .getInterfaces(), h); It can be solved by adding a @SuppressWarnings(""""unchecked"""") to the instrumented file: @SuppressWarnings(""""unchecked"""") public static I lambdaInc(final int i, final T l, final int si) {........} {quote}""","",1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0 +"CLOV-1455","02/17/2014 11:22:07",2,"///Clover:OFF does not work with lambdas ""The following piece of code fails to be instrumented Results in [ERROR] /Users/kasperni/workspace/cake-container/cake-container/cake-container-impl/target/clover/src-instrumented/org/cakeframework/internal/container/handler/Foo.java:[28,58] cannot find symbol symbol: variable __CLR3_2_2133133hrrnhz2t location: class org.cakeframework.internal.container.handler.Foo"""," public class Foo { // /CLOVER:OFF public static void main(String[] args) { new ConcurrentHashMap<>().computeIfAbsent(""""foo"""", e -> null); } // /CLOVER:ON } ",1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0 +"CLOV-1457","02/21/2014 18:56:58",2,"clover-for-grails plugin is not working with grails.project.fork ""Hello, When I run the grails test-app command in grails 2.3.5. I get the following error: """," Error running forked test-app: No such property: testNames for class: _Events groovy.lang.MissingPropertyException: No such property: testNames for class: _Ev ents at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap(ScriptByteco deAdapter.java:50) at org.codehaus.groovy.runtime.callsite.PogoGetPropertySite.getProperty( PogoGetPropertySite.java:49) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callGroovyObjec tGetProperty(AbstractCallSite.java:231) at _Events$_run_closure3.doCall(_Events.groovy:75) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl. java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces sorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at org.springsource.loaded.ri.ReflectiveInterceptor.jlrMethodInvoke(Refl ectiveInterceptor.java:1254) at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java: 90) at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233) at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1086) at groovy.lang.ExpandoMetaClass.invokeMethod(ExpandoMetaClass.java:1110) ",1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0 +"CLOV-1459","02/27/2014 21:46:00",2,"native2ascii error converting i18n bundles for plugin ""When running with -clover.on in our CI environment (TeamCity), we are getting a weird error: Error native2ascii error converting i18n bundles for plugin [xxxx] java.lang.reflect.InvocationTargetException It's not constrained to a single plugin, typically it lists different plugins. The full stack trace is: Running without """"-clover.on"""" removes this problem. """," [15:28:49][Step 4/8] | Error native2ascii error converting i18n bundles for plugin [spring-security-core-1.2.7.3] java.lang.reflect.InvocationTargetException [15:28:49][Step 4/8] | Error Error executing script TestApp: : java.lang.reflect.InvocationTargetException (NOTE: Stack trace has been filtered. Use --verbose to see entire trace.) [15:28:49][Step 4/8] : java.lang.reflect.InvocationTargetException [15:28:49][Step 4/8] at org.codehaus.gant.GantBuilder.invokeMethod(GantBuilder.java:99) [15:28:49][Step 4/8] at _GrailsTest_groovy$_run_closure1.doCall(_GrailsTest_groovy:102) [15:28:49][Step 4/8] at org.codehaus.gant.GantMetaClass.invokeMethod(GantMetaClass.java:133) [15:28:49][Step 4/8] at org.codehaus.gant.GantBinding$_initializeGantBinding_closure5_closure16_closure18.doCall(GantBinding.groovy:185) [15:28:49][Step 4/8] at org.codehaus.gant.GantBinding$_initializeGantBinding_closure5_closure16_closure18.doCall(GantBinding.groovy) [15:28:49][Step 4/8] at org.codehaus.gant.GantBinding.withTargetEvent(GantBinding.groovy:90) [15:28:49][Step 4/8] at org.codehaus.gant.GantBinding.this$4$withTargetEvent(GantBinding.groovy) [15:28:49][Step 4/8] at org.codehaus.gant.GantBinding$_initializeGantBinding_closure5_closure16.doCall(GantBinding.groovy:185) [15:28:49][Step 4/8] at org.codehaus.gant.GantBinding$_initializeGantBinding_closure5_closure16.doCall(GantBinding.groovy) [15:28:49][Step 4/8] at org.codehaus.gant.GantMetaClass.invokeMethod(GantMetaClass.java:133) [15:28:49][Step 4/8] at TestApp$_run_closure1.doCall(TestApp:32) [15:28:49][Step 4/8] at org.codehaus.gant.GantMetaClass.invokeMethod(GantMetaClass.java:133) [15:28:49][Step 4/8] at org.codehaus.gant.GantBinding$_initializeGantBinding_closure5_closure16_closure18.doCall(GantBinding.groovy:185) [15:28:49][Step 4/8] at org.codehaus.gant.GantBinding$_initializeGantBinding_closure5_closure16_closure18.doCall(GantBinding.groovy) [15:28:49][Step 4/8] at org.codehaus.gant.GantBinding.withTargetEvent(GantBinding.groovy:90) [15:28:49][Step 4/8] at org.codehaus.gant.GantBinding.this$4$withTargetEvent(GantBinding.groovy) [15:28:49][Step 4/8] at org.codehaus.gant.GantBinding$_initializeGantBinding_closure5_closure16.doCall(GantBinding.groovy:185) [15:28:49][Step 4/8] at org.codehaus.gant.GantBinding$_initializeGantBinding_closure5_closure16.doCall(GantBinding.groovy) [15:28:49][Step 4/8] at gant.Gant$_dispatch_closure5.doCall(Gant.groovy:381) [15:28:49][Step 4/8] at gant.Gant$_dispatch_closure7.doCall(Gant.groovy:415) [15:28:49][Step 4/8] at gant.Gant$_dispatch_closure7.doCall(Gant.groovy) [15:28:49][Step 4/8] at gant.Gant.withBuildListeners(Gant.groovy:427) [15:28:49][Step 4/8] at gant.Gant.this$2$withBuildListeners(Gant.groovy) [15:28:49][Step 4/8] at gant.Gant$this$2$withBuildListeners$0.callCurrent(Unknown Source) [15:28:49][Step 4/8] at gant.Gant.dispatch(Gant.groovy:415) [15:28:49][Step 4/8] at gant.Gant.this$2$dispatch(Gant.groovy) [15:28:49][Step 4/8] at gant.Gant.invokeMethod(Gant.groovy) [15:28:49][Step 4/8] at gant.Gant.executeTargets(Gant.groovy:591) [15:28:49][Step 4/8] at gant.Gant.executeTargets(Gant.groovy:590) [15:28:49][Step 4/8] at org.grails.wrapper.GrailsWrapper.main(GrailsWrapper.java:93) [15:28:49][Step 4/8] Caused by: java.lang.reflect.InvocationTargetException [15:28:49][Step 4/8] ... 30 more [15:28:49][Step 4/8] Caused by: java.util.ConcurrentModificationException [15:28:49][Step 4/8] at com.atlassian.clover.ant.groovy.GroovycSupport.logGroovycTasks(GroovycSupport.java:102) [15:28:49][Step 4/8] at com.atlassian.clover.ant.groovy.GroovycSupport.taskStarted(GroovycSupport.java:123) [15:28:49][Step 4/8] at org.apache.tools.ant.Project.fireTaskStarted(Project.java:2184) [15:28:49][Step 4/8] ... 30 more [15:28:49][Step 4/8] | Error Error executing script TestApp: : java.lang.reflect.InvocationTargetException [15:28:50][Step 4/8] Process exited with code 1 ",1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0 +"CLOV-1462","03/12/2014 20:20:22",2,"ClassNotFoundException when running tests in IDEA 13.1 RC with Clover enabled ""Install IDEA 13.1 RC and Clover 3.2.2. Load Java project. Create a run configuration for JUnit, select """"Test kind: All in package"""", select """"Before launch: Make"""". Run tests with Clover disabled - all tests are executed. Run tests with Clover enabled - all tests are executed, but after second and next runs - ClassNotFoundException on a test class occurs. ""","",1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0 +"CLOV-1466","03/21/2014 00:29:26",3,"Several tests fail with Cannot cast object ... to class 'com_cenqua_clover.CoverageRecorder' ""See here for a travis build exhibiting this problem: https://travis-ci.org/thehyve/transmart-core-db/jobs/21220075 19 tests there fail because of this problem. The culprit seems to be this line: https://github.com/thehyve/transmart-core-db/blob/5e8f0400b9ddce75e1d3d2adccf747e42bff3ee6/src/groovy/org/transmartproject/db/dataquery/clinical/TerminalConceptVariablesTabularResult.groovy#L39""","",1,0,0,0,0,0,0,0,1,1,0,0,0,0,1,0,0 +"CLOV-1467","03/26/2014 10:45:00",3,"Rename com.cenqua to com.atlassian ""Rename all references to """"Cenqua"""" to """"Atlassian"""". It affects: * java packages - com.cenqua.* and com_cenqua_clover (/) * Clover-for-Eclipse plugins and features (/) * com.cenqua.clover:clover artifact (clover core) (/) Optional: Rename also Clover-for-Maven plugin from 'maven-clover2-plugin' to 'clover-maven-plugin'. (x) The maven plugin will not be renamed. Reason? Typing 'mvn clover:setup' in a project where clover-maven-plugin is not explicitly defined in pom.xml causes that Maven resolves the 'clover:setup' as 'com.atlassian.maven.plugins:maven-clover-plugin:maven-plugin:3.7' which is wrong. So it will be very confusing for customers. ""","",0,1,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0 +"CLOV-1469","03/27/2014 10:03:03",1,"Maven plugin sholud handle target/generated-test-sources ""The AbstractInstrumenter recognizes only the target/generated-sources path: It shall also detect the target/generated-test-sources."""," private boolean isGeneratedSourcesDirectory(final String sourceRoot) { String generatedSrcDirDefaultLifecycle = File.separator + """"target"""" + File.separator + """"generated-sources""""; String generatedSrcDirCloverLifecycle = File.separator + """"target"""" + File.separator + """"clover"""" + File.separator + """"generated-sources""""; return sourceRoot.indexOf(generatedSrcDirDefaultLifecycle) != -1 || sourceRoot.indexOf(generatedSrcDirCloverLifecycle) != -1; } ",0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0 +"CLOV-1470","03/27/2014 22:59:00",1,"Maven clover2:setup ignores generated sources ""We have several maven projects that contain only generated sources (target/generated-sources/...). The default source directory does not exist for those projects. clover2:setup does not work properly for those projects: the generated sources do not get compiled. We currently work around the issue by creating a marker file in the default source directory.""","",1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0 +"CLOV-1471","03/27/2014 23:02:11",3,"Maven clover2:setup triggers duplicate class exception ""We have several maven projects that have more than one source directory. The non-default directories are added using the build-helper plugin. The clover2:setup goal instruments all source folders, but then sets all non-generated directories as source folders on the maven project. That results in compile errors, since source files are both present in the clover instrumented sources and original location. Example: java/src << 1. default source folder java/src-build << 2. additional source folder target/generate-sources/jaxb << 3. generated source folder Case (2) is causing problems.""","",1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0 +"CLOV-1478","03/31/2014 10:42:08",1,"Double instrumentation error when running 'mvn site' on JDK8 ""Run 'mvn clean site' on the src/it/setTestFailureIgnore project using the JDK8 and Maven 2.2.1. It fails with an error: The same site goal works correctly under JDK7. """," [INFO] Processing files at 1.8 source level. [INFO] Instrumentation error com.atlassian.clover.api.CloverException: Double instrumentation detected: f:\Work\release\release-maven-clover2-plugin-hg\src\it\setTestFailureIgnore\target\clover\src-instrumented\com\atlassian\maven\plugin\clover\samples\setTestFailureIgnore\Simple.java appears to have already been instrumented by Clover. at com.atlassian.clover.instr.java.CloverTokenStreamFilter.guardAgainstDoubleInstrumentation(CloverTokenStreamFilter.java:66) ... ",1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0 +"CLOV-1481","04/10/2014 13:30:51",2,"Invalid instrumentation code for test methods inside anonymous inline classes ""Clover generates incorrect reference to the static field __CLR3_2_2_TEST_NAME_SNIFFER in case when a test method is declared inside an inner (static or non-static) or inside an anonymous inline class, which are located inside a non-test top-level class. In such case, the top-level class doesn't have the __CLR3_2_2_TEST_NAME_SNIFFER field (as it's not a test class), but inner/inline classes (which are test ones) are trying to access this field. Code example: """," [clover] 2 test methods detected. [javac] ---------- [javac] 1. ERROR in ... [javac] public boolean test() {__CLR3_2_262c962c9htee2hlb.R.globalSliceStart(getClass().getName(),284284);int $CLV_p$=0;java.lang.Throwable $CLV_t$=null;try {boolean $CLV_r$=__CLR3_2_2qua64563cs();$CLV_p$=1;return $CLV_r$;} catch(java.lang.Throwable $CLV_t2$){if($CLV_p$==0&&$CLV_t$==null){$CLV_t$=$CLV_t2$;}_CLR3_2_262c962c9htee2hlb.R.rethrow($CLV_t2$);return false;}finally{CLR3_2_262c962c9htee2hlb.R.globalSliceEnd(getClass().getName(),""""com.xyz.RuntimeDebugger.SaveTestCaseAction.getDefaultAvailablePredicate.test"""",CLR3_2_2_TEST_NAME_SNIFFER.getTestName(),284284,$CLV_p$,$CLV_t$);}}private boolean __CLR3_2_2qua64563cs(){_CLR3_2_262c962c9htee2hlb.R.inc(284284); [javac] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [javac] __CLR3_2_2_TEST_NAME_SNIFFER cannot be resolved [javac] ---------- [javac] 1 problem (1 error) public class SnifferInInnerAndInline { interface TestAction { boolean test(); } static class InnerStaticTest { public void testInnerStatic() { // FAILS HERE } } class InnerTest { public void testInnerNonStatic() { // FAILS HERE } } TestAction testWithInline() { return new TestAction() { public boolean test() { // FAILS HERE (assuming that we have a custom test pattern which matches it) return true; } }; } public static void main(String[] args) { new SnifferInInnerAndInline.InnerStaticTest().testInnerStatic(); new SnifferInInnerAndInline().new InnerTest().testInnerNonStatic(); new SnifferInInnerAndInline().testWithInline().test(); } } ",1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0 +"CLOV-1486","04/14/2014 13:34:18",1,"change historical report ""scope: header, footer, tables with """"added"""" and """"movers"""", optionally, put charts in some boxes""","",0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0 +"CLOV-1490","04/18/2014 19:30:45",3,"Clover safeEval method is imcompatible with Groovy's @CompileStatic annotation ""When trying to use Clover on a Groovy class that is marked @CompileStatic and it contains a null-safe operator (e.g. Bar bar = foo?.bar), then the groovyc compilation fails with the error: No such property: bar for class: java.lang.Object The error is that the generated method returns an Object instead of the type of the property. This then causes Groovy compiler to fail later. I've created a sample project that exhibits the problem at https://github.com/johnrengelman/clover-grooyv-compilestatic Simply run ""","$CLV_safeEval$./gradlew test",1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0 +"CLOV-1492","04/30/2014 21:45:56",3,"Grails' controller methods are not shown as entered ""Hello, For some reason the method in a controller is marked as not entered even though the content inside is shown to be executed. Please can you help me rationalize/ understand this? Please refer to me screenshots: index_method_not_executed.png: to see that the index() method is not executed even though its contents are. test_for_index_method.png: the test that is run to get the method to run. ""","",1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0 +"CLOV-1496","05/15/2014 11:29:08",3,"reduce html report size ""As a developer I'd like to have small HTML report size in order to reduce disk space consumption, especially in case of builds on CI server. Possible ways to reduce report size: 1) extract list of packages to separate JSON file and load it dynamically using JS function (instead of embedding it on virtually every page) (/) DONE 2) use some html compression utility (which would strip all whitespace etc) https://code.google.com/p/htmlcompressor/#Compressing_selective_content_in_Velocity_templates (x) performance of the HtmlCompressor is unacceptable (+340% time) 3) remove whitespace from most frequent loops from velocity templates (/) DONE""","",0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0 +"CLOV-1497","05/27/2014 08:49:19",3,"improve report accessiblity ""http://www.w3.org/TR/wai-aria-practices/#TreeView""","",0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0 +"CLOV-1498","05/28/2014 22:27:42",3,"improve navigation between report entities ""We can navigate vertically and horizontally, but on a file level we've got a break: fix it so that we can jump from test file to test results for a file fix it so that we have one """"source"""" tab for a file -> put 'classes and methods' and 'contributing tests' into expandable tables, dialogs etc """," project - dashboard | app | test | results | clouds | treemap v package - app | test | results | clouds | +--------------------------------------------------+ v v file - classes | contr tests | methods test class v test ",0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0 +"CLOV-1500","06/09/2014 10:50:15",3,"implement global search in the html report - backend ""Implement search box in a blue app header. Generate JSON data: * packages, files, classes, methods, tests Split into several indexes (for smaller file size) as theoretical size is up to 40MB (200'000 objects per 200 chars). Add """"automatic"""" option (up to 10'000 elements). (/) Add options for: /// (/) Add option for HtmlReporter: --globalSearchScope=package,file,class,method,test|auto --globalSearchLimit=10000 to choose which elements shall be searchable.""","",0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0 +"CLOV-1502","06/10/2014 10:57:03",1,"tree view is not compacted properly when only 1 package is present ""!tree_view_bug.png! We have com.cenqua + samples.money instead of exactly one (root) node named """"com.cenqua.samples.money"""". ""","",1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0 +"CLOV-1503","06/11/2014 12:49:08",1,"provide explanation when number of files is greater than number of classes for a package ""There might be a case that number of files > number of classes listed: !more_files_than_classes.png! This is normal behaviour, because by default Clover hides entities having no executable code, such as: empty classes, enums (with no methods), interfaces (with no virtual extension methods). However, this may be confusing for end user. How we could improve this: 1) Set the showEmpty to true by default. Benefit: 'classes >= files' in all cases. Drawback: report will contain unnecessary noise. 2) Add [(?) Help] button above the table. Example: !package_help.png! 3) Add tooltip for 'Files' (TotalElements.getHelp()) 4) Add small text below the class table. For example: """"3 classes are not listed because they contain no executable code."""" ""","",0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0 +"CLOV-1505","06/16/2014 15:16:11",3,"replace a vertical navigation component by a sidebar ""Instead of the aui-vertical-nav use the aui-sidebar component. ""","",0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0 +"CLOV-1508","06/25/2014 14:57:58",2,"Upgrade HTML report to ADG 2.2+ / AUI 5.9+ ""Upgrade AUI library to the latest version. We may need to make some corrections of CSS to be compatible (probably: colors, shadows, notification messages).""","",0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0 +"CLOV-1509","06/25/2014 21:50:49",3,"as a developer I'd like to have nanosecond precision for test duration ""In reports lots of tests have duration = 0. This is because unit tests are fast and the System.currentTimeMillis() is used to record start and end time of a test. Which is not precise by design. We could increase precision to nanoseconds using System.nanoTime(). Note: we'd still need to call System.currentTimeMillis() to record datetime when test was run.""","",0,1,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0 +"CLOV-1510","07/01/2014 13:20:30",0.5,"Remove ""See more"" links from the report dashboard ""for: * Most complex packages * Most complex classes * Least tested methods * Class Coverage Distribution * Class Complexity ""","",0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0 +"CLOV-1511","07/01/2014 13:24:41",0.5,"""Show contributing test"" change to ... """"""Select tests to highlight the code coverage"""" or something similar""","",0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0 +"CLOV-1512","07/09/2014 09:56:33",1,"The ""Show methods"" link does not open the modal dialog ""This happens for inner classes (i.e. when a class name contains """"."""") May be caused by a way how Modal Dialog handles element id.""","",1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0 +"CLOV-1514","07/10/2014 10:56:18",1,"tool tips in dashboard widgets shall not be displayed on the right ""Tool tips are by default placed on the right, so they don't fit in the 'Clover Dashboard' view: !screenshot-1.png!""","",1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0 +"CLOV-1515","07/11/2014 08:59:51",1,"use ADG fonts and colours in Cloud View in IDEA ""The ADG HTML report in Clover 4 uses new colour set (shades of red instead of blue-red) for tag clouds. The Clover-for-Eclipse has this theme: [^cloud_view_eclipse.png] but the Clover-for-IDEA still uses the old colour set: [^cloud_view_idea.png]""","",0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0 +"CLOV-1517","07/18/2014 08:14:04",1,"AntIntegrator adds unnecessary double quotes for -Dparam=value JVM options ""Class com.atlassian.clover.ci.AntIntegrator puts values of the following properties: -Dclover.historydir and -Dclover.license.cert, -Dclover.license.path in double quotes. On Windows platform it causes problems when a value contains space character - parameters are being split. See BAM-10740. Add a check if OS is Windows and don't add double quotes in such case. ""","",1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0 +"CLOV-1518","07/21/2014 11:01:54",5,"implement global search in the html report - frontend ""Implement search box in blue app header. Generate JSON data: * packages, files, classes, methods, tests Split into several indexes (for smaller file size) as theoretical size is up to 40MB (200'000 objects per 200 chars). Add """"automatic"""" option (up to 10'000 elements). Add options for to choose which elements shall be searchable.""","",0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0 +"CLOV-1526","07/28/2014 09:54:35",5,"View latest Clover information (BAM-14428) ""See BAM-14428.""","",1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0 +"CLOV-1527","07/28/2014 09:56:10",1,"Clover tab with an HTML report generated by Clover 4 shall have a vertical scroll bar (BAM-14777) ""See BAM-14777.""","",1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0 +"CLOV-1534","08/11/2014 09:45:08",1,"Move CloverCompilerAdapter out from org.apache.tools.ant.taskdefs package ""The org.apache.tools.ant.taskdefs.CloverCompilerAdapter may cause conflicts with Apache Ant packaged as OSGI bundle which exports the same package. Possible fix: (x) The Javac.getFileList() is a getter for compileList. Try using it - we must ensure that compileList and replacementCompileSet have the same size or (/) Use reflections to access the package-protected field. Thanks to this we could move CloverCompilerAdapter to com.atlassian.clover package. ""","",0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0 +"CLOV-1538","08/13/2014 13:37:01",2,"Instrumenting assignment of method reference to field results in reference to undefined symbol. ""Instrumenting the following snippet results in the compilation error [ERROR] clover/src-instrumented/Test.java:[2,18] cannot find symbol [ERROR] symbol: variable __CLR3_3_000hysmxbbd [ERROR] location: class Test Source: public class Test { Runnable r = System::currentTimeMillis; } Instrumented code: /* $$ This file has been instrumented by Clover 3.3.0#2014033113020816 $$ */public class Test { Runnable r = __CLR3_3_000hysmxbbd.lambdaInc(0,System::currentTimeMillis,1); } ""","",1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0 +"CLOV-1546","08/21/2014 09:30:19",1,"Resolve path to clover.jar when packed as OSGI bundle ""ClassPathUtil.getCloverJarPath() searches for a JAR in case when URL returned by class loader is like: or However, it does not handle a case for OSGI bundles, which have an URI like: Fix: use getClass().getProtectionDomain().getCodeSource().getLocation().toURI() """," jar:file:!/path/to/clover.jar/com/atlassian/clover/util/ClassPathUtil.class file:/path/to/classes/directory/com/atlassian/clover/util/ClassPathUtil.class bundle://28.0:2/com/atlassian/clover/util/ClassPathUtil.class ",1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0 +"CLOV-1547","08/21/2014 19:57:52",3,"The Grails' @Transactional annotation conflicts with Clover's AST transformations ""The @Transactional annotation is the new Grails-y way of controlling transactional behavior in a service. It uses an AST transformation to essentially wrap public methods (if added to the class) in a GrailsTransactionTemplate. So you get code that looks like this: The real body of the method is in the reject_closure5, which ends up calling a method named """"$tt_reject(...)"""". Clover doesn't realize that the code originally under the reject method has essentially been relocated to the $tt__reject method. Given that @Transactional is a core part of Grails (starting in 2.3, I believe) and the recommended way to control transactions going forward, this is probably something that should be addressed in Clover core."""," public void reject(Invoice invoice) { Reference invoice = new Reference(invoice); CallSite[] arrayOfCallSite = $getCallSiteArray(); GrailsTransactionAttribute $transactionAttribute = (GrailsTransactionAttribute)ScriptBytecodeAdapter.castToType(arrayOfCallSite[9].callConstructor(GrailsTransactionAttribute.class), GrailsTransactionAttribute.class); GrailsTransactionTemplate $transactionTemplate = (GrailsTransactionTemplate)ScriptBytecodeAdapter.castToType(arrayOfCallSite[10].callConstructor(GrailsTransactionTemplate.class, this.transactionManager, $transactionAttribute), GrailsTransactionTemplate.class); $transactionTemplate.execute(new _reject_closure5(this, invoice)); } ",1,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0 +"CLOV-1552","09/15/2014 09:55:47",3,"Upgrade FastUtil library to version 6.5.2 or later ""API was changed since version 4.4.3, some methods used by Clover are missing and there's no direct replacement for them. Migrate Clover's code. ""","",0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0 +"CLOV-1553","09/15/2014 10:02:16",3,"Upgrade Atlassian Extras to 3.2.x ""API has changed in Atlassian Extras 3.x vs 2.5. There's no LicenseManagerFactory.getLicenseManager() We can compose our own license manager and decoder using: Version1LicenseDecoder + Version2LicenseDecoder + DelegatingLicenseDecoder + CloverProductLicenseFactory + DefaultLicenseManager However, there are problems with decoding the """"Clover Desktop"""" license = the CloverLicenseTest.testDesktopLicense fails. Investigate: * maybe Clover Desktop license format has changed? * or maybe overlooked by atlassian-extras developers? * or ... ?""","",0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0 +"CLOV-1554","09/15/2014 11:26:16",5,"Replace iText library ""Replace current iText 2.0.1 library by: * a commercial version of iText 5.x or * a PDFBox (http://pdfbox.apache.org) or other tool based on a good open-source license (Apache 2.0, MIT, BSD, PD).""","",0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0 +"CLOV-1559","10/01/2014 12:02:11",40,"Create Bitbucket Connect Clover Plugin ""Bitbucket - Dan Bennett (Team Lead) - Investigate the creation of a Connect plugin to expose Clover functionality in Bitbucket diff & file viewer (same as Stash functionality)""","",0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0 +"CLOV-1561","10/07/2014 11:19:20",1,"Distributed Coverage does not work due to java.rmi.UnmarshalException """""," Received result: Remote_Stub[UnicastRef2 [liveRef: [endpoint:[192.168.157.181:11 98,clover.gnu.cajo.invoke.Remote$RCSF@732e103d](remote),objID:[-26c3f6bf:148ea10 98a9:-7ffb, -3801964032288496245]]]] Started proxy: Thread-9 cutOff(java.rmi.UnmarshalException: error unmarshalling return; nested exception is: java.io.WriteAbortedException: writing aborted; java.io.NotSerializableE xception: com.atlassian.clover.ErrorInfo); from: localhost:1198. Attempting to r econnect. ",1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0 +"CLOV-1567","10/09/2014 11:53:15",2,"Test optimization in IDEA 14 shows wrong number of classes ""There are 2 test classes in the 'Moneybags' tutorial project. Running test optimization in IDEA 14 (EAP build 138.2458.8) shows """"3 test classes"""". !idea14_clover_test_optimization.png!""","",1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0 +"CLOV-1568","10/13/2014 09:41:20",1,"An orphaned lozenge when there are no search results ""!html_adg_orphaned_lozenge.png!""","",1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0 +"CLOV-1569","10/13/2014 09:48:15",1,"A wrong caption in a search box in an HTML ADG report ""!search_box_wrong_caption.png!""","",1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0 +"CLOV-1570","10/13/2014 09:50:02",1,"A historical report contains link to an XML report ""!wrong_links_in_a_historical_report.png!""","",1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0 +"CLOV-1571","10/13/2014 11:28:16",8,"Upgrade third party libraries used by Clover - 2nd phase ""Upgrade third party libraries to their latest versions: * Antlr 4.0, including java.g syntax file (x) tracked in CLOV-1329, CLOV-1331 and CLOV-1332 * atlassian-extras 3.2 (x) tracked in CLOV-1553 * cajo 1.175 * commons-lang3 3.3.2 (x) * fastutil 6.5.2 (x) tracked in CLOV-1552 * GSON 2.2.2 * JDOM 2.0.4 * JSON - replace by com.google.code.gson:gson Upgrade feasibility to be verified: * theJIT * KTreeMap/JTreeMap Get rid of: * Overlibvms (x) not until we drop Classic reports (Clover 4.1) * Utils.js (x) not until we drop Classic reports (Clover 4.1) * iText (x) tracked in CLOV-1554 To be considered: * upgrade Log4j to or 2.0.x""","",0,1,0,1,1,0,0,0,0,0,1,0,0,0,0,0,0 +"CLOV-1584","11/15/2014 11:53:31",1,"Add additional logging for / element ""Currently, when contains a element, Clover prints information about included/excluded files (on a verbose logging level). In we can also use a similar element - but there's no logging for it. Add logging on a verbose level.""","",0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0 +"CLOV-1588","11/27/2014 10:47:57",5,"Integrate Clover with JUnitParams ""The JUnitParams (https://github.com/Pragmatists/junitparams) is much more convenient way to parameterize tests instead of using JUnit's 4.10 @Parameterized annotation. ""","",0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0 +"CLOV-1595","12/27/2014 12:20:56",3,"Clover does not work with Grails 2.4.4 ""When developers use """"./grailsw run-app"""" it gives the following error. """," Running Grails application Error Error loading event script from file [/opt/stanson/target/work/plugins/clover-4.0.2/scripts/_Events.groovy] startup failed: /opt/stanson/target/work/plugins/clover-4.0.2/scripts/_Events.groovy: 4: unable to resolve class org.codehaus.groovy.grails.test.GrailsTestTargetPattern @ line 4, column 1. import org.codehaus.groovy.grails.test.GrailsTestTargetPattern ^ 1 error (Use --stacktrace to see the full trace) ",1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0 +"CLOV-1596","12/27/2014 13:07:04",13,"Use heuristics to solve JDK8 Stream compilation errors ""Spike in which a problem with Java8 streams will be attacked as it seems that using stream() is very popular and the most probably it causes the majority of compilation problems with Clover's lambdaInc(). Scope: focus on streams only. Out of scope: attacking a generic problem of method signatures with a mixture of functional and non-functional arguments. ""","",1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0 +"CLOV-1597","12/27/2014 13:10:04",1,"Set instrumentLambda=none as a default value for instrumentation ""This is a temporary workaround thanks to which java8 code will always compile, at the cost that lambdas are not measured. User will be still able to enable lambda instrumentation, but this will be a conscious decision, so seeing compilation errors should be less surprising. Scope: CloverInstr, ant, maven, idea, eclipse, grails plugins.""","",0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0 +"CLOV-1603","01/07/2015 03:32:39",1,"CloverOptimizedTestNGSelector does not add ""clover-optimized"" group to TestNG @Before and @After annotations ""In order for Clover to optimize a TestNG test suite, we have to use the {{CloverOptimizedTestNGSelector}} listener, and restrict TestNG to only run the """"clover-optimized"""" group, as in: The problem with this is that TestNG's {{@Before}} and {{@After}} annotations ({{@BeforeMethod}}, {{@AfterClass}}, etc) will not be run, because they are not part of the """"clover-optimized"""" group. I have a workaround, which is to qualify all such annotations with {{alwaysRun=true}}, but this is pretty ugly. A possible solution is for {{CloverOptimizedTestNGSelector}} to implement {{IAnnotationTransformer2}} and override [transform( IConfigurationAnnotation, Class, Constructor, Method )|http://testng.org/javadoc/org/testng/IAnnotationTransformer2.html#transform%28org.testng.annotations.IConfigurationAnnotation,%20java.lang.Class,%20java.lang.reflect.Constructor,%20java.lang.reflect.Method%29], automatically adding the """"clover-optimized"""" group to all non-tests."""," ",1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0 +"CLOV-1605","01/09/2015 11:15:27",1,"Replace clover.licenseLocation by maven.clover.licenseLocation ""While it's perfectly fine to have a declaration like this: and next refer it in maven-clover2-plugin's configuration like this: it's misleading for users, because in case they would like to pass it via -D parameter or declare in settings.xml without having the in maven-clover2-plugin section, it will not work, because the correct property name is 'maven.clover.licenseLocation'. See: https://docs.atlassian.com/maven-clover2-plugin/latest/setup-mojo.html#licenseLocation Correct all references in documentation on confluence.atlassian.com, answers.atlassian.com, maven-clover2-plugin source code, tutorial source code. """," clover.license ${clover.licenseLocation} ",0,1,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0 +"CLOV-1606","01/09/2015 12:03:45",3,"Java8: method reference to a non-static method fails to compile ""{quote} *NOT REPRODUCIBLE* {quote} In this code sample: {code:java} return map.entrySet().stream() .collect(Collectors.toMap( Map.Entry::getKey, e -> e.getValue().getAverage() )); {code} the Collectors.toMap() takes a """"Map.Entry::getKey"""" method reference as input argument. However, the getKey method is not static. Wrapping it by Clover's lambdaInc() method leads to a compilation error like this: *Possible workarounds ??* 1) Disable instrumentation of expression-like lambda functions (method references are treated as expression-like lambda) - use instrumentLambda=""""block"""" or """"none"""". 2) Wrap such method reference with ///CLOVER:OFF and ///CLOVER:ON keywords, e.g.: 3) Use a variable with a non-static method reference or change to a lambda expression. """," return map.entrySet().stream() .collect(Collectors.toMap( Map.Entry::getKey, e -> e.getValue().getAverage() )); [javac] symbol: method lambdaInc(int,Map.Entry::getKey,int) [javac] location: class __CLR4_0_22ci2cii4lxhoaj [javac] Foo.java:33: error: invalid method reference [javac] __CLR4_0_22ci2cii4lxhoaj.lambdaInc(3045,Map.Entry::getKey,3046), [javac] ^ [javac] non-static method getKey() cannot be referenced from a static context [javac] where K is a type-variable: [javac] K extends Object declared in interface Entry return map.entrySet().stream() .collect(Collectors.toMap( ///CLOVER:OFF Map.Entry::getKey, ///CLOVER:ON e -> e.getValue().getAverage() )); return map.entrySet().stream() .collect(Collectors.toMap( e -> e.getKey(), // unfortunately IDEA suggests to change it back e -> e.getValue().getAverage() )); ",1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0 +"CLOV-1607","01/14/2015 10:20:40",1,"Java8: don't instrument lambda functions when source < 1.8 ""No matter what """"-source"""" value is set, Clover instruments both expression-like and block-like lambdas. It's a behaviour slightly different from the one we have for e.g.: * -source 1.3 (it handles 'assert' as not a keyword) or * -source 1.4 (no 'enums'). Ways to improve it: 1) change Java grammar so that handling lambda functions is optional - only for source >= 1.8; otherwise Clover should throw a parse error 2) or parse lambdas also for source < 1.8 (no parse errors would be thrown, only javac will raise a compilation error), but do not add Clover's instrumentation to it """," private LambdaBlockEntryEmitter instrEnterLambdaBlock(MethodSignature lambdaSignature, CloverToken leftCurly) { if (cfg.getInstrumentLambda() == LambdaInstrumentation.ALL || cfg.getInstrumentLambda() == LambdaInstrumentation.BLOCK /* add source level check*/ ) { ... ",0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0 +"CLOV-1608","01/17/2015 13:13:37",2,"New colour scheme for a tag cloud and a coverage treemap in the HTML report ""Customers reported that using a single, red color gradient in a coverage tree map and in tag clouds has two drawbacks: * it's harder to find which code areas require improvement * seeing always a red color is discouraging :-) ""","",0,1,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0 +"CLOV-1612","01/27/2015 12:53:14",1,"Clover fails to generate HTML report for more than one project in Eclipse "" """," Clover Version 4.0.3, built on January 27 2015 (build-dev) Loaded from: D:\Soft\Eclipse\eclipse-4.4-luna\plugins\com.atlassian.clover.eclipse.core_4.0.3.v20150127120908-dev.jar Clover: Developer License registered to Atlassian. [C:/Users/Marek/.workspace-eclipse-4.4/Moneybags/.clover/coverage.db, 0 seconds""""C:/Users/Marek/.workspace-eclipse-4.4/javasyntax18/.clover/coverage.db, 0 seconds--report, --testsIncludePattern, C:/Users/Marek/.workspace-eclipse-4.4/Moneybags/**/*Test.java, C:/Users/Marek/.workspace-eclipse-4.4/Moneybags/**/Test*.java, C:/Users/Marek/.workspace-eclipse-4.4/javasyntax18/**/*Test.java, C:/Users/Marek/.workspace-eclipse-4.4/javasyntax18/**/Test*.java--testsExcludePattern, C:/Users/Marek/.workspace-eclipse-4.4/Moneybags/, C:/Users/Marek/.workspace-eclipse-4.4/javasyntax18/, -a, -i, C:\Users\Marek\AppData\Local\Temp\clover3525180172645953949merge, -o, C:\Users\Marek\Desktop, -t, Coverage Report, -tc, 0, -f, , -s, 0 days] Error generating report: java.lang.NumberFormatException java.lang.NumberFormatException at java.math.BigDecimal.(BigDecimal.java:459) at java.math.BigDecimal.(BigDecimal.java:728) at com.atlassian.clover.cfg.Interval.initialise(Interval.java:183) at com.atlassian.clover.cfg.Interval.(Interval.java:121) at com.atlassian.clover.eclipse.core.reports.MergeReportJob$MergeAndReport.run(MergeReportJob.java:140) at com.atlassian.clover.eclipse.core.reports.ForkingReporter.main(ForkingReporter.java:25) ",1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0 +"CLOV-1613","01/27/2015 13:38:02",1,"Unable to open generated reports in Eclipse 4.4 ""Steps to reproduce: Open """"Coverage Exploer"""", click """"Run new report ..."""" and create any report. Next click """"View report"""" and select it on a list. Nothing happens in the UI and the """"Error log"""" view shows """"Unhandled event exception"""" entry with a stack trace as follows: """," java.lang.NoClassDefFoundError: Could not initialize class com.atlassian.clover.eclipse.core.reports.OpenReportOperation at com.atlassian.clover.eclipse.core.views.actions.GenerateReportAction$2.widgetSelected(GenerateReportAction.java:151) at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:248) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84) at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4353) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1061) at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4172) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3761) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$9.run(PartRenderingEngine.java:1151) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1032) at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:148) at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:636) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:579) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:150) at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:135) at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:134) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:382) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:236) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:648) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:603) at org.eclipse.equinox.launcher.Main.run(Main.java:1465) ",1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0 +"CLOV-1614","01/29/2015 10:54:24",3,"Error when closing Cloud Editor in Eclipse ""Closing the """"Cloud Editor"""" in Eclipse causes that sometimes an exception is thrown and reported in the Error Log: and Apparently, it fails in the CTabFolderLayout.computeSize() method: the 'renderer' is null. This renderer is being set in CTabFolder.init() method and set to null in the CTabFolder.onDispose() method. It *may* be related with the: CloudEditor.dispose() which calls removeCoverageChangeListener after the super.dispose() so a refresh event may come in the meantinme or CloudEditor.createPages() which """"hacks"""" the container layout by changing it from FillLayout to GridLayout."""," Error disposing widget for : org.eclipse.e4.ui.model.application.ui.basic.impl.PartImpl Clover Coverage Cloud Report java.lang.NullPointerException at org.eclipse.swt.custom.CTabFolderLayout.computeSize(CTabFolderLayout.java:39) at org.eclipse.swt.widgets.Composite.computeSize(Composite.java:234) at org.eclipse.swt.layout.GridData.computeSize(GridData.java:491) at org.eclipse.swt.layout.GridLayout.layout(GridLayout.java:221) at org.eclipse.swt.layout.GridLayout.layout(GridLayout.java:197) at org.eclipse.swt.widgets.Composite.updateLayout(Composite.java:1290) at org.eclipse.swt.widgets.Composite.updateLayout(Composite.java:1297) at org.eclipse.swt.widgets.Composite.updateLayout(Composite.java:1297) at org.eclipse.swt.widgets.Composite.updateLayout(Composite.java:1297) at org.eclipse.swt.widgets.Composite.updateLayout(Composite.java:1276) at org.eclipse.swt.widgets.Composite.layout(Composite.java:665) at org.eclipse.swt.custom.CTabFolder.runUpdate(CTabFolder.java:3755) at org.eclipse.swt.custom.CTabItem.getBounds(CTabItem.java:149) at org.eclipse.swt.custom.CTabFolder.onPaint(CTabFolder.java:1993) at org.eclipse.swt.custom.CTabFolder$1.handleEvent(CTabFolder.java:289) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84) at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4353) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1061) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1085) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1070) at org.eclipse.swt.widgets.Composite.WM_PAINT(Composite.java:1491) at org.eclipse.swt.widgets.Control.windowProc(Control.java:4667) at org.eclipse.swt.widgets.Display.windowProc(Display.java:5036) at org.eclipse.swt.internal.win32.OS.VtblCall(Native Method) at org.eclipse.swt.internal.ole.win32.IOleInPlaceObject.InPlaceDeactivate(IOleInPlaceObject.java:21) Unhandled event loop exception java.lang.NullPointerException at org.eclipse.swt.custom.CTabFolderLayout.computeSize(CTabFolderLayout.java:39) at org.eclipse.swt.widgets.Composite.computeSize(Composite.java:234) at org.eclipse.swt.layout.GridData.computeSize(GridData.java:491) at org.eclipse.swt.layout.GridLayout.layout(GridLayout.java:221) at org.eclipse.swt.layout.GridLayout.layout(GridLayout.java:197) at org.eclipse.swt.widgets.Composite.updateLayout(Composite.java:1290) at org.eclipse.swt.widgets.Composite.updateLayout(Composite.java:1297) at org.eclipse.swt.widgets.Composite.updateLayout(Composite.java:1297) at org.eclipse.swt.widgets.Composite.updateLayout(Composite.java:1297) at org.eclipse.swt.widgets.Composite.updateLayout(Composite.java:1297) at org.eclipse.swt.widgets.Composite.updateLayout(Composite.java:1297) at org.eclipse.swt.widgets.Composite.updateLayout(Composite.java:1297) at org.eclipse.swt.widgets.Composite.updateLayout(Composite.java:1297) at org.eclipse.swt.widgets.Composite.updateLayout(Composite.java:1297) at org.eclipse.swt.widgets.Composite.updateLayout(Composite.java:1297) at org.eclipse.swt.widgets.Composite.updateLayout(Composite.java:1297) at org.eclipse.swt.widgets.Composite.updateLayout(Composite.java:1276) at org.eclipse.swt.widgets.Composite.setLayoutDeferred(Composite.java:1087) at org.eclipse.swt.widgets.Display.runDeferredLayouts(Display.java:4196) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3754) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$9.run(PartRenderingEngine.java:1151) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1032) at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:148) at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:636) protected Point computeSize(Composite composite, int wHint, int hHint, boolean flushCache) { CTabFolder folder = (CTabFolder)composite; CTabFolderRenderer renderer = folder.renderer; ... tabW = Math.max(tabW, renderer.computeSize(width, 2, gc, -1, -1).x); ",1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0 +"CLOV-1617","02/09/2015 14:02:26",5,"Automatic Clover integration does not work for task ""*Problem:* Automatic Clover integration in Bamboo does now work for Ant Tasks containing the task. *Root cause:* When automatic Clover integration is enabled in Bamboo, it uses Clover's AntIntegrationListener: This listener listens to Ant's build events and intercepts Ant tasks such as: , , , However, it does not intercept the one. Integration with task is performed by the task, which calls: {code:java} GroovycSupport.ensureAddedTo(antProject); {code} Note that GroovycSupport implements Ant's BuildListener. However, it cannot be passed via command line, like this: because the GroovycSupport does not have a default constructor. *Workaround:* Call the from an Ant script. For example, add the following target: {code:xml} {code} Clover's initialization will occur only if '-Dwith.clover=true' is set. Therefore, modify the Ant Task in Bamboo, for instance: *Possible fixes:* 1) Add default constructor for GroovycSupport. Pass it as a second '-listener' to ant command in Bamboo. 2) Change the AntIntegrationListener so that it will intercept all tasks as well. """," ant ... -lib clover.jar -listener com.atlassian.clover.ci.AntIntegrationListener GroovycSupport.ensureAddedTo(antProject); ant ... -lib clover.jar -listener com.atlassian.clover.ant.groovy.GroovycSupport clean test -Dwith.clover=true ",1,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0 +"CLOV-1632","02/10/2015 14:33:38",3,"Protect against deployment of instrumented code ""If user calls """"mvn clover2:setup install"""" or """"mvn clover2:setup deploy"""", code instrumented by Clover will be installed to ~/.m2 or deployed to a repository. This may be not a desired behavior, especially if developer is not aware of it (for instance if someone switches on the automatic Clover integration in Bamboo). Furthermore, installation may occur not only for """"install"""" or """"deploy"""" phases expressed explicitly in the command line, but it can also happen when a plug-in runs such life cycle (mvn release:perform for instance). Implement a protection against it - in the clover2:setup check the reactor which phases are about to run and refuse code instrumentation if 'install' or 'deploy' will be called. This protection shall not be enabled by default, because there may be actually a need to install instrumented code (for instance - multiple build plans using the same local m2 cache or repository to fetch compiled artifacts and we want to measure coverage for all modules). Enable protection by a flag. e.g. mvn -Dmaven.clover.repositoryPollutionProtection=true Expected behavior: fail a build if repositoryPollutionProtection=true and build lifecycle contains 'install' or 'deploy' phases. *Extra:* Fail also if artifact contains a custom classifier and clover2:instrument is used (as Maven cannot handle an artifact with two classifiers)."""," true ",0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0 +"CLOV-1654","02/28/2015 15:08:08",5,"as a plugin developer I'd like to have annotations for a package in a Clover database ""Currently, annotations are available for classes and methods only: * ClassInfo.getModifiers().getAnnotations() * MethodInfo.getSignature().getAnnotations() There's nothing like PackageInfo.getAnnotations(). The reason to have this is that _package-info.java_ files may contain annotations (but no executable code). While having this adds no value for Clover instrumentation itself, it could be useful for plugin developers, who would like to read Clover database directly. For instance, this information could be used to filter classes based on the information stored on a package level. See: https://answers.atlassian.com/questions/12781852/how-to-read-package-annotations-from-clover-db ""","",0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0 +"CLOV-1657","03/03/2015 10:57:57",1,"Compiling Groovy code with Clover throws NPE ""Clover fails to integrate with Groovyc task and throws NPE: *Cause:* NPE is thrown when Clover cannot find it's AntInstrumentationConfig in project references in an Ant-based build. This can happen when a build calls or tasks without {{inheritrefs=true}} - lack of this property causes that AntInstrumentationConfig is not passed to these calls. *Workaround:* Ensure that {{inheritrefs=true}} is used. """," Clover failed to integrate with java.lang.NullPointerException at com.atlassian.clover.ant.groovy.GroovycSupport.buildTestDetector(GroovycSupport.java:242) at com.atlassian.clover.ant.groovy.GroovycSupport.taskStarted(GroovycSupport.java:141) at org.apache.tools.ant.Project.fireTaskStarted(Project.java:2184) at org.apache.tools.ant.Task.perform(Task.java:344) at org.apache.tools.ant.Target.execute(Target.java:392) at org.apache.tools.ant.Target.performTasks(Target.java:413) at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1399) ... ",1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0 +"CLOV-1658","03/13/2015 11:34:58",5,"Publish Clover-for-Scala prototype ""Tasks: * request releasing it as open source * publish plugin's source code on BitBucket, * prepare and publish documentation on CAC/Clover-for-Scala. * prepare plug-in developer documentation""","",0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 +"CLOV-1659","03/13/2015 11:43:12",13,"as a user I want to use Clover with maven-scala-plugin ""Integration of Clover-for-Scala with the maven-scala-plugin. Tasks: * clover2:setup shall """"connect"""" to the maven-scala-plugin; t.b.d. how - META-INF/services? a plugin point? some properties? * clover2:clover shall include also *.scala sources Checks: * is it possible to have joint Scala-Java compilation (like with joint Groovy-Java)? Out of scope: * clover2:instr is out of scope as integration is performed using AST, not source code * clover2:optimize as test optimization is in another task ""","",0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 +"CLOV-1660","03/13/2015 11:45:39",5,"as a user I want to use Clover with scalac ""Integration of Clover-for-Scala with scalac command line tool. Tasks: * shall be easy - plugging via META-INF/services Checks: * is it possible to have joint Scala-Java compilation? if yes, then how it works and how to intercept both compilers? ""","",0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 +"CLOV-1661","03/13/2015 11:49:07",20,"as a user I want to use Clover with SBT ""Integration of Clover-for-Scala with SBT. Tasks: * write build plugin for SBT - equivalent of clover2:setup, shall intercept any scalac calls; shall add clover.jar (clover-scala.jar?) to class paths for compilation and runtime * write build plugin for SBT - equivalent of clover2:clover, shall generate reports; we may call Clover-for-Ant under the hood ""","",0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 +"CLOV-1662","03/13/2015 11:55:58",5,"as a user I want to see nested functions in reports ""Scala allows to nest functions inside other functions. Enhance existing HTML / XML / JSON reports in such way that we could see such nesting as well. Some of the required functionality has already been done during implementation of lambda functions for Java 8 (Clover 3.2). Review if all possible nesting combinations are implemented in Velocity templates (method-in-method, class-in-method etc). Affects: table with list of methods for a class, calculation of metrics etc.""","",0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 +"CLOV-1664","03/13/2015 12:38:32",40,"as a user I want to use Clover-for-Scala in IntelliJ IDEA ""Tasks: * integrate with Scala complier in IDEA (using external build process) * show Scala classes in Cloverage view * show coverage highlighting in Scala editors (!) Challenge: simultaneous update of clover.db by Javac and Scalac (similar problem as for Groovy in IDE) Out of scope: * test optimization for Scala""","",0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 +"CLOV-1665","03/13/2015 12:43:55",40,"as a user I want to use Clover-for-Scala in Eclipse ""Integration of Clover-for-Scala with Eclipse. Tasks: * plug into *.scala text editors * show scala classes in the 'Coverage Explorer' * intercept compilation of Scala code (!) Challenge: simultaneous updates of clover.db by Scalac and Javac (similarly as for Groovy in IDE) Out of scope: * test optimization for Scala""","",0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 +"CLOV-1666","03/13/2015 12:48:29",40,"as a user I want to run test optimization for Scala tests ""It should be possible to perform test optimization for Scala test classes. Integrations: * Ant (?) * Maven * SBT * IDEA (?) * Eclipse (?) ""","",0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 +"CLOV-1667","03/13/2015 12:58:33",20,"as a user I want to see smart names for classes and functions in reports ""The point is that Scala code is being translated to a bytecode containing various """"cryptic"""" names. For instance, """"overloaded operators"""" have """"$op"""" in method's name. Think how to reasonably represent methods, functions, inline classes, anonymous functions, case classes, traits etc etc in HTML report at least (XML / JSON are less important). ""","",0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 +"CLOV-1668","03/13/2015 13:25:11",1,"Clover installs instrumented-jars in local Maven repo, in place of non-instrument ones ""I'm not sure if this has been reintroduced or something else is wrong, since the CLOVKB claims it is not the case: https://confluence.atlassian.com/display/CLOVERKB/Maven+is+deploying+instrumented+jars (I _am_ using the {{instrument}} goal - followed by {{log}} and {{check}}) In the below, you can see that, e.g., {{target/clover/magnolia-module-diff-1.7-SNAPSHOT-clover-tests.jar}} gets copied to {{.../magnolia-module-diff-1.7-SNAPSHOT-tests.jar}} (without {{-clover}} qualifier!) This seems to happen for ~all artifacts except the """"main"""" jar. (test jar, assemblies, etc..). In this case, the situation is saved by the """"real"""" install plugin that gets executed later and overwrites those wrong artifacts. However, if we use the (newish) {{installAtEnd}} feature of the {{maven-install-plugin}}, then this doesn't happen, and we end up with instrumented jars in place of the non-instrumented ones, which has tons of ugly consequences. See for yourself with the snippet:{code:xml} org.apache.maven.plugins maven-install-plugin false {code} Why is Clover installing anything, anyway ? Shouldn't it just _attach_ the instrumented jars (and only those) to the build, and let Maven do the rest ? """," org.apache.maven.plugins maven-install-plugin false [INFO] --- maven-clover2-plugin:4.0.2:check (instrument-and-check) @ magnolia-module-diff --- [INFO] [INFO] --- maven-install-plugin:2.5.2:install (default-install) @ magnolia-module-diff --- [INFO] Installing /Users/gjoseph/Dev/magnolia/git/enterprise/diff/target/clover/magnolia-module-diff-1.7-SNAPSHOT-clover.jar to /Users/gjoseph/.m2/repository/info/magnolia/magnolia-module-diff/1.7-SNAPSHOT/magnolia-module-diff-1.7-SNAPSHOT-clover.jar [INFO] Installing /Users/gjoseph/Dev/magnolia/git/enterprise/diff/pom.xml to /Users/gjoseph/.m2/repository/info/magnolia/magnolia-module-diff/1.7-SNAPSHOT/magnolia-module-diff-1.7-SNAPSHOT.pom [INFO] Installing /Users/gjoseph/Dev/magnolia/git/enterprise/diff/target/magnolia-module-diff-1.7-SNAPSHOT-bundle.zip to /Users/gjoseph/.m2/repository/info/magnolia/magnolia-module-diff/1.7-SNAPSHOT/magnolia-module-diff-1.7-SNAPSHOT-bundle.zip [INFO] Installing /Users/gjoseph/Dev/magnolia/git/enterprise/diff/target/magnolia-module-diff-1.7-SNAPSHOT-bundle.tar.gz to /Users/gjoseph/.m2/repository/info/magnolia/magnolia-module-diff/1.7-SNAPSHOT/magnolia-module-diff-1.7-SNAPSHOT-bundle.tar.gz [INFO] Installing /Users/gjoseph/Dev/magnolia/git/enterprise/diff/target/magnolia-module-diff-1.7-SNAPSHOT-tests.jar to /Users/gjoseph/.m2/repository/info/magnolia/magnolia-module-diff/1.7-SNAPSHOT/magnolia-module-diff-1.7-SNAPSHOT-tests.jar [INFO] Installing /Users/gjoseph/Dev/magnolia/git/enterprise/diff/target/clover/magnolia-module-diff-1.7-SNAPSHOT-clover-bundle.zip to /Users/gjoseph/.m2/repository/info/magnolia/magnolia-module-diff/1.7-SNAPSHOT/magnolia-module-diff-1.7-SNAPSHOT-bundle.zip [INFO] Installing /Users/gjoseph/Dev/magnolia/git/enterprise/diff/target/clover/magnolia-module-diff-1.7-SNAPSHOT-clover-bundle.tar.gz to /Users/gjoseph/.m2/repository/info/magnolia/magnolia-module-diff/1.7-SNAPSHOT/magnolia-module-diff-1.7-SNAPSHOT-bundle.tar.gz [INFO] Installing /Users/gjoseph/Dev/magnolia/git/enterprise/diff/target/clover/magnolia-module-diff-1.7-SNAPSHOT-clover-tests.jar to /Users/gjoseph/.m2/repository/info/magnolia/magnolia-module-diff/1.7-SNAPSHOT/magnolia-module-diff-1.7-SNAPSHOT-tests.jar [INFO] [INFO] <<< maven-clover2-plugin:4.0.2:instrument (instrument-and-check) < [clover]install @ magnolia-module-diff <<< [INFO] [INFO] --- maven-clover2-plugin:4.0.2:instrument (instrument-and-check) @ magnolia-module-diff --- [INFO] [INFO] --- maven-clover2-plugin:4.0.2:log (instrument-and-check) @ magnolia-module-diff --- [INFO] Clover Version 4.0.2, built on October 13 2014 (build-943) [...] [INFO] Coverage check PASSED [INFO] [INFO] --- maven-install-plugin:2.5.2:install (default-install) @ magnolia-module-diff --- [INFO] Installing /Users/gjoseph/Dev/magnolia/git/enterprise/diff/target/magnolia-module-diff-1.7-SNAPSHOT.jar to /Users/gjoseph/.m2/repository/info/magnolia/magnolia-module-diff/1.7-SNAPSHOT/magnolia-module-diff-1.7-SNAPSHOT.jar [INFO] Installing /Users/gjoseph/Dev/magnolia/git/enterprise/diff/pom.xml to /Users/gjoseph/.m2/repository/info/magnolia/magnolia-module-diff/1.7-SNAPSHOT/magnolia-module-diff-1.7-SNAPSHOT.pom [INFO] Installing /Users/gjoseph/Dev/magnolia/git/enterprise/diff/target/magnolia-module-diff-1.7-SNAPSHOT-bundle.zip to /Users/gjoseph/.m2/repository/info/magnolia/magnolia-module-diff/1.7-SNAPSHOT/magnolia-module-diff-1.7-SNAPSHOT-bundle.zip [INFO] Installing /Users/gjoseph/Dev/magnolia/git/enterprise/diff/target/magnolia-module-diff-1.7-SNAPSHOT-bundle.tar.gz to /Users/gjoseph/.m2/repository/info/magnolia/magnolia-module-diff/1.7-SNAPSHOT/magnolia-module-diff-1.7-SNAPSHOT-bundle.tar.gz [INFO] Installing /Users/gjoseph/Dev/magnolia/git/enterprise/diff/target/magnolia-module-diff-1.7-SNAPSHOT-tests.jar to /Users/gjoseph/.m2/repository/info/magnolia/magnolia-module-diff/1.7-SNAPSHOT/magnolia-module-diff-1.7-SNAPSHOT-tests.jar [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ ",1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0 +"CLOV-1672","03/30/2015 10:56:50",3,"Ensure that Clover JAR is readable by Ant 1.9.0-1.9.1 ""Ant 1.9.0/1.9.1 have a bug related with zip64 file handling: _central directory zip64 extended information extra field's length doesn't match central directory data. Expected length 0 but is 16_ While this bug has been fixed in Ant 1.9.2, it should be still possible to produce such Clover JAR file that it will be readable by buggy Ant versions as well. Ensure that new Clover 4.0.5 (and further versions) will be compatible.""","",0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0 +"CLOV-1675","03/31/2015 20:32:32",5,"Grails Clover Plugin compatibility with Grails 2.4.5, 2.5.0 ""New Grails versions have been released recently: * 2.4.5 24/Mar/15 * 2.5 24/Mar/15 Make Grails Clover Plugin compatible with them.""","",0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0 +"CLOV-1679","04/15/2015 09:19:43",1,"MavenIntegrator shall not add arguments if they are already present in original command ""This applies to: * build phases * Clover's properties Current problems: 1) The """"clean"""" phase can be doubled For example if original command has: it becomes: 2) User cannot override default values of Clover properties For example if a property is already defined: MavenIntegrator adds a second one with it's own value: """," mvn clean test mvn clean clean clover2:setup test clover2:aggregate clover2:clover ... mvn test -Dmaven.clover.licenseLocation=/my/clover.license mvn test -Dmaven.clover.licenseLocation=/my/clover.license -Dmaven.clover.licenseLocation=/tmp/clover.license ",1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0 +"CLOV-1682","04/20/2015 10:12:37",3,"Repository pollution protection reports a custom classifier under Maven 2.2.x ""*Problem:* Probably bug in Maven, needs further investigation. Running """"clean clover2:instrument"""" on a simple project (no additional plugins) with repository pollution protection enabled causes a build failure. Adding extra logging showed that it fails because a custom 'tests' classifier is used during a build - see XXXXXXXXXX below. What's interesting, running the same test but with clover2:setup not only does not fails a build (because repository pollution protection does not fail due to custom classifier if no 'clover' is used), but the artifact produced does NOT have the 'tests' classifier: It affects Maven 2.2.x. Does not occur in Maven 2.1.x or Maven 3.x. Summarizing, it seems that forking a parallel build life cycle causes that an artefact's classifier changes from empty to 'tests': * with clover2:instrument: * with clover2:setup: *Workaround:* * use clover2:setup instead of clover2:instrument to avoid forking life cycle or * use different Maven version or * disable the protection """," maven-clover2-plugin-hg\src\it\pollutionProtection>mvn clean clover2:instrument -Dmaven.clover.repositoryPollutionProtection=true [INFO] Scanning for projects... [INFO] snapshot com.atlassian.maven.plugins:maven-clover2-plugin:4.0.4-SNAPSHOT: checking for updates from atlassian-internal [INFO] ------------------------------------------------------------------------ [INFO] Building Unnamed - com.atlassian.maven.plugins.sample:clover-pollution-protection:jar:1.0-SNAPSHOT [INFO] task-segment: [clean, clover2:instrument] [INFO] ------------------------------------------------------------------------ [INFO] [clean:clean {execution: default-clean}] [INFO] Deleting directory f:\Work\maven-clover2-plugin-hg\src\it\pollutionProtection\target [INFO] Preparing clover2:instrument [INFO] snapshot com.atlassian.clover:clover:4.0.4-SNAPSHOT: checking for updates from atlassian-internal [INFO] [clover2:instrumentInternal {execution: default-instrumentInternal}] [INFO] ------------------------------------------------------------------------ [ERROR] BUILD ERROR [INFO] ------------------------------------------------------------------------ [INFO] Clover's repository pollution protection is enabled. Your build produces an artifact (com.atlassian.maven.plugins.sample:clover-pollution-protection:jar:tests:1.0-SNAPSHOT) with a custom classi fier. As Maven does not support multiple classifiers for an artifact, appending second 'clover' classifier may not be handled correctly. You can: - remove a custom classifier or - configure Clover to not append the '-clover' classifier to fix it. You can also disable pollution protection (-Dmaven.clover.repositoryPollutionProtection=false) if you know that it doesn't affect your build. maven-clover2-plugin-hg\src\it\pollutionProtection>mvn clean clover2:instrument [INFO] Scanning for projects... [INFO] snapshot com.atlassian.maven.plugins:maven-clover2-plugin:4.0.4-SNAPSHOT: checking for updates from atlassian-internal [INFO] ------------------------------------------------------------------------ [INFO] Building Unnamed - com.atlassian.maven.plugins.sample:clover-pollution-protection:jar:1.0-SNAPSHOT [INFO] task-segment: [clean, clover2:instrument] [INFO] ------------------------------------------------------------------------ [INFO] [clean:clean {execution: default-clean}] [INFO] Preparing clover2:instrument [INFO] snapshot com.atlassian.clover:clover:4.0.4-SNAPSHOT: checking for updates from atlassian-internal [INFO] [clover2:instrumentInternal {execution: default-instrumentInternal}] [INFO] XXXXXXXXXX CLASSIFIER= com.atlassian.maven.plugins.sample:clover-pollution-protection:jar:tests:1.0-SNAPSHOT [INFO] Clover Version 4.0.4, built on April 15 2015 (build-dev) [INFO] Loaded from: d:\Data\.m2\repository\com\atlassian\clover\clover\4.0.4-SNAPSHOT\clover-4.0.4-SNAPSHOT.jar [INFO] Clover: Developer License registered to Atlassian. [INFO] Creating new database at 'f:\Work\maven-clover2-plugin-hg\src\it\pollutionProtection\target\clover\clover.db'. [INFO] Processing files at 1.8 source level. [INFO] Clover all over. Instrumented 1 file (1 package). [INFO] Elapsed time = 0,077 secs. (12,987 files/sec, 64,935 srclines/sec) [INFO] Clover Version 4.0.4, built on April 15 2015 (build-dev) [INFO] Loaded from: d:\Data\.m2\repository\com\atlassian\clover\clover\4.0.4-SNAPSHOT\clover-4.0.4-SNAPSHOT.jar [INFO] Clover: Developer License registered to Atlassian. [INFO] Updating existing database at 'f:\Work\maven-clover2-plugin-hg\src\it\pollutionProtection\target\clover\clover.db'. [INFO] Processing files at 1.8 source level. [INFO] Clover all over. Instrumented 1 file (1 package). [INFO] 1 test method detected. [INFO] Elapsed time = 0,016 secs. (62,5 files/sec, 562,5 srclines/sec) [INFO] [resources:resources {execution: default-resources}] [WARNING] Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! [INFO] skip non existing resourceDirectory f:\Work\maven-clover2-plugin-hg\src\it\pollutionProtection\src\main\resources [INFO] Copying 1 resource [INFO] [compiler:compile {execution: default-compile}] [INFO] Compiling 1 source file to f:\Work\maven-clover2-plugin-hg\src\it\pollutionProtection\target\clover\classes [INFO] [resources:testResources {execution: default-testResources}] [WARNING] Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! [INFO] skip non existing resourceDirectory f:\Work\maven-clover2-plugin-hg\src\it\pollutionProtection\src\test\resources [INFO] [compiler:testCompile {execution: default-testCompile}] [INFO] Compiling 1 source file to f:\Work\maven-clover2-plugin-hg\src\it\pollutionProtection\target\clover\test-classes [INFO] [surefire:test {execution: default-test}] [INFO] Surefire report directory: f:\Work\maven-clover2-plugin-hg\src\it\pollutionProtection\target\clover\surefire-reports ------------------------------------------------------- T E S T S ------------------------------------------------------- Running ATest Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.168 sec Results : Tests run: 1, Failures: 0, Errors: 0, Skipped: 0 [INFO] [jar:jar {execution: default-jar}] [INFO] Building jar: f:\Work\maven-clover2-plugin-hg\src\it\pollutionProtection\target\clover\clover-pollution-protection-1.0-SNAPSHOT-clover.jar [INFO] [install:install {execution: default-install}] [INFO] Installing f:\Work\maven-clover2-plugin-hg\src\it\pollutionProtection\target\clover\clover-pollution-protection-1.0-SNAPSHOT-clover.jar to d:\Data\.m2\repository\com\atlassian\maven\plugins\sam ple\clover-pollution-protection\1.0-SNAPSHOT\clover-pollution-protection-1.0-SNAPSHOT-clover.jar [INFO] [clover2:instrument {execution: default-cli}] [INFO] XXXXXXXXXX CLASSIFIER= com.atlassian.maven.plugins.sample:clover-pollution-protection:jar:1.0-SNAPSHOT [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESSFUL [INFO] ------------------------------------------------------------------------ maven-clover2-plugin-hg\src\it\pollutionProtection>mvn clean clover2:setup verify [INFO] Scanning for projects... [INFO] snapshot com.atlassian.maven.plugins:maven-clover2-plugin:4.0.4-SNAPSHOT: checking for updates from atlassian-internal [INFO] ------------------------------------------------------------------------ [INFO] Building Unnamed - com.atlassian.maven.plugins.sample:clover-pollution-protection:jar:1.0-SNAPSHOT [INFO] task-segment: [clean, clover2:setup, verify] [INFO] ------------------------------------------------------------------------ [INFO] [clean:clean {execution: default-clean}] [INFO] Deleting directory f:\Work\maven-clover2-plugin-hg\src\it\pollutionProtection\target [INFO] snapshot com.atlassian.clover:clover:4.0.4-SNAPSHOT: checking for updates from atlassian-internal [INFO] [clover2:setup {execution: default-cli}] [INFO] XXXXXXXXXX CLASSIFIER= com.atlassian.maven.plugins.sample:clover-pollution-protection:jar:1.0-SNAPSHOT [INFO] Clover Version 4.0.4, built on April 15 2015 (build-dev) [INFO] Loaded from: d:\Data\.m2\repository\com\atlassian\clover\clover\4.0.4-SNAPSHOT\clover-4.0.4-SNAPSHOT.jar [INFO] Clover: Developer License registered to Atlassian. [INFO] Creating new database at 'f:\Work\maven-clover2-plugin-hg\src\it\pollutionProtection\target\clover\clover.db'. [INFO] Processing files at 1.8 source level. [INFO] Clover all over. Instrumented 1 file (1 package). [INFO] Elapsed time = 0,057 secs. (17,544 files/sec, 87,719 srclines/sec) [INFO] Clover Version 4.0.4, built on April 15 2015 (build-dev) [INFO] Loaded from: d:\Data\.m2\repository\com\atlassian\clover\clover\4.0.4-SNAPSHOT\clover-4.0.4-SNAPSHOT.jar [INFO] Clover: Developer License registered to Atlassian. [INFO] Updating existing database at 'f:\Work\maven-clover2-plugin-hg\src\it\pollutionProtection\target\clover\clover.db'. [INFO] Processing files at 1.8 source level. [INFO] Clover all over. Instrumented 1 file (1 package). [INFO] 1 test method detected. [INFO] Elapsed time = 0,011 secs. (90,909 files/sec, 818,182 srclines/sec) [INFO] [resources:resources {execution: default-resources}] [WARNING] Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! [INFO] skip non existing resourceDirectory f:\Work\maven-clover2-plugin-hg\src\it\pollutionProtection\src\main\resources [INFO] Copying 1 resource [INFO] [compiler:compile {execution: default-compile}] [INFO] Compiling 1 source file to f:\Work\maven-clover2-plugin-hg\src\it\pollutionProtection\target\classes [INFO] [resources:testResources {execution: default-testResources}] [WARNING] Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! [INFO] skip non existing resourceDirectory f:\Work\maven-clover2-plugin-hg\src\it\pollutionProtection\src\test\resources [INFO] [compiler:testCompile {execution: default-testCompile}] [INFO] Compiling 1 source file to f:\Work\maven-clover2-plugin-hg\src\it\pollutionProtection\target\test-classes [INFO] [surefire:test {execution: default-test}] [INFO] Surefire report directory: f:\Work\maven-clover2-plugin-hg\src\it\pollutionProtection\target\surefire-reports ------------------------------------------------------- T E S T S ------------------------------------------------------- Running ATest Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.155 sec Results : Tests run: 1, Failures: 0, Errors: 0, Skipped: 0 [INFO] [jar:jar {execution: default-jar}] [INFO] Building jar: f:\Work\maven-clover2-plugin-hg\src\it\pollutionProtection\target\clover-pollution-protection-1.0-SNAPSHOT.jar [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESSFUL [INFO] ------------------------------------------------------------------------ [INFO] [clover2:instrumentInternal {execution: default-instrumentInternal}] [INFO] XXXXXXXXXX CLASSIFIER= com.atlassian.maven.plugins.sample:clover-pollution-protection:jar:tests:1.0-SNAPSHOT ... [INFO] [clover2:instrument {execution: default-cli}] [INFO] XXXXXXXXXX CLASSIFIER= com.atlassian.maven.plugins.sample:clover-pollution-protection:jar:1.0-SNAPSHOT [INFO] [clover2:setup {execution: default-cli}] [INFO] XXXXXXXXXX CLASSIFIER= com.atlassian.maven.plugins.sample:clover-pollution-protection:jar:1.0-SNAPSHOT ",1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0 +"CLOV-1683","04/21/2015 10:52:34",5,"Grails Clover Plugin compatibility with Grails 3.x ""Grails 3 has been released (3.0 GA on 31/Mar/15). It uses the Gradle build tool instead of Gant, thus we may need to have Gradle support as well. It has also various changes in API. Implement support for Grails 3 in the Grails Clover Plugin. ""","",0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0 +"CLOV-1743","05/29/2015 21:24:01",2,"OutOfMemoryError while flushing coverage data "" """," 29-May-2015 12:53:08 ERROR: java.lang.OutOfMemoryError flushing coverage for recorder /media/ephemeral0/bamboo-working-dir/BAM-CLOVER344-UT/components/bamboo-core/target/clover/clover.dbbjv36u_ia9lwdsf: Java heap space 29-May-2015 12:53:08 Exception in thread """"CloverFlushThread"""" java.lang.OutOfMemoryError: Java heap space 29-May-2015 12:53:08 at java.util.zip.DeflaterOutputStream.(DeflaterOutputStream.java:56) 29-May-2015 12:53:08 at com.cenqua.clover.util.FileUtils.createDeflateOutputStream(FileUtils.java:468) 29-May-2015 12:53:08 at com.cenqua.clover.FileBasedGlobalCoverageRecording.write(FileBasedGlobalCoverageRecording.java:39) 29-May-2015 12:53:08 at com.cenqua.clover.GlobalRecordingWriteStrategy$1.write(GlobalRecordingWriteStrategy.java:9) 29-May-2015 12:53:08 at com.cenqua.clover.BaseCoverageRecorder.write(BaseCoverageRecorder.java:108) 29-May-2015 12:53:08 at com.cenqua.clover.FixedSizeCoverageRecorder.write(FixedSizeCoverageRecorder.java:56) 29-May-2015 12:53:08 at com.cenqua.clover.BaseCoverageRecorder.flush(BaseCoverageRecorder.java:302) 29-May-2015 12:53:08 at com.cenqua.clover.BaseCoverageRecorder.flush(BaseCoverageRecorder.java:271) 29-May-2015 12:53:08 at com.cenqua.clover.BaseCoverageRecorder$CloverFlushThread.run(BaseCoverageRecorder.java:155) 29-May-2015 12:55:48 ERROR: java.lang.OutOfMemoryError flushing coverage for recorder /media/ephemeral0/bamboo-working-dir/BAM-CLOVER344-UT/components/bamboo-core/target/clover/clover.dbdozy2b_ia9lwcia: Java heap space 29-May-2015 12:55:48 Exception in thread """"CloverFlushThread"""" java.lang.OutOfMemoryError: Java heap space 29-May-2015 12:56:03 ERROR: java.lang.OutOfMemoryError flushing coverage for recorder /media/ephemeral0/bamboo-working-dir/BAM-CLOVER344-UT/components/bamboo-api/target/clover/clover.dbjcsfjm_ia9lwcij: Java heap space 29-May-2015 12:56:03 Exception in thread """"CloverFlushThread"""" java.lang.OutOfMemoryError: Java heap space ",1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0 +"CLOV-1758","06/23/2015 22:52:57",20,"Support JDK9 by Clover ""* As per [https://adtmag.com/articles/2015/05/08/oracle-java.aspx|https://adtmag.com/articles/2015/05/08/oracle-java.aspx] we can expect to have the """"feature complete"""" version before December, 2015. Clover should be ready till then.""","",0,1,0,1,1,0,1,0,1,0,1,0,0,0,1,0,0 +"CLOV-1761","07/02/2015 07:32:23",1,"Add support for Eclipse Mars 4.5 version ""Add support for new Eclipse Mars (June 2015) https://adtmag.com/articles/2015/06/30/eclipse-release-train.aspx""","",0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0 +"CLOV-1766","07/08/2015 13:57:36",2,"Eclipse Mars 4.5 does not load platform:/ resources properly ""Clover uses """"platform:/"""" URIs to load standard Eclipse icons from eclipse-core such as a package icon, a folder icon etc. Eclipse Mars is buggy and does not always fetch these resources, as a consequence we don't see proper icons on a toolbar. Fix: bundle new icons in Clover-for-Eclipse plugin and replace """"platform:/"""" references by new icons using local URIs. Note: try aligning look of new icons with ADG and Clover's HTML reports.""","",1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0 +"CLOV-1775","07/24/2015 15:08:06",3,"Rename maven-clover2-plugin artifactId to clover-maven-plugin ""{panel:title=Decision|titleBGColor=#205081|bgColor=#59afe1} We are currently working on renaming Maven Clover2 Plugin according to the naming convention recommended by the Apache Maven project. Due to a fact that this is a major breaking change, forcing customers to modify their POMs, CI build plans etc, it will be done in the nearest major Clover release (currently planned for end of 2015) and appropriate migration guides will be prepared. New plugin name will be: *clover-maven-plugin* {panel} *Problem reported:* According the Maven's Plugin Naming Convention, Clover's plugin artifactID violates the Apache Maven Trademark. The artifactId should be clover2-maven-plugin. I would even suggest removing the 2 from the artifactId. [Plugin Naming Convention and Apache Maven Trademark|https://maven.apache.org/guides/plugin/guide-java-plugin-development.html] *Scope of the change:* _Before release_ (/) investigate if we can use clover-maven-plugin or must use cloverX-maven-plugin - _will be renamed to clover-maven-plugin_ (/) decide if major Clover release will be numbered 4.1.0 -or 5.0.0- (as per [Semantic Versioning|http://semver.org]) (/) prepare migration message in maven-clover2-plugin pom.xml for versions 4.0.x, similarly as it was done for Clover Core (com.cenqua.clover:clover:3.3.0) - _message added in pom in 4.0.6_ (/) rename maven-clover2-plugin artifactId for 4.1.0 / -5.0.0- , update integration tests (/) prepare migration guide for Clover 4.1 / -5.0- Release Notes (/) update Clover's Tutorial (Moneybags bundled in clover-ant.zip) -> see also CLOV-1827 _After release_ See CLOV-1828.""","",0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0 +"CLOV-1776","07/27/2015 06:46:26",2,"Instrumentation error on certain projects since 4.0.5 build of Clover. ""Instrumentation error on certain projects since 4.0.5 build of Clover. Making it a blocker as we can't run Clover on certain projects any longer. """," build 27-Jul-2015 13:46:14 [INFO] Processing files at 1.8 source level. build 27-Jul-2015 13:46:17 [INFO] Instrumentation error build 27-Jul-2015 13:46:17 java.util.NoSuchElementException build 27-Jul-2015 13:46:17 at java.util.ArrayDeque.getFirst(ArrayDeque.java:324) build 27-Jul-2015 13:46:17 at com.atlassian.clover.instr.java.JavaRecognizer.headIdentifiersStack(JavaRecognizer.java:113) build 27-Jul-2015 13:46:17 at com.atlassian.clover.instr.java.JavaRecognizer.pushIdentifierToHeadStack(JavaRecognizer.java:109) build 27-Jul-2015 13:46:17 at com.atlassian.clover.instr.java.JavaRecognizer.primaryExpressionPart(JavaRecognizer.java:3368) build 27-Jul-2015 13:46:17 at com.atlassian.clover.instr.java.JavaRecognizer.postfixExpression(JavaRecognizer.java:5047) build 27-Jul-2015 13:46:17 at com.atlassian.clover.instr.java.JavaRecognizer.unaryExpressionNotPlusMinus(JavaRecognizer.java:5007) build 27-Jul-2015 13:46:17 at com.atlassian.clover.instr.java.JavaRecognizer.unaryExpression(JavaRecognizer.java:4867) build 27-Jul-2015 13:46:17 at com.atlassian.clover.instr.java.JavaRecognizer.multiplicativeExpression(JavaRecognizer.java:4817) build 27-Jul-2015 13:46:17 at com.atlassian.clover.instr.java.JavaRecognizer.additiveExpression(JavaRecognizer.java:4787) build 27-Jul-2015 13:46:17 at com.atlassian.clover.instr.java.JavaRecognizer.shiftExpression(JavaRecognizer.java:4754) build 27-Jul-2015 13:46:17 at com.atlassian.clover.instr.java.JavaRecognizer.relationalExpression(JavaRecognizer.java:4706) build 27-Jul-2015 13:46:17 at com.atlassian.clover.instr.java.JavaRecognizer.equalityExpression(JavaRecognizer.java:4673) build 27-Jul-2015 13:46:17 at com.atlassian.clover.instr.java.JavaRecognizer.andExpression(JavaRecognizer.java:4654) build 27-Jul-2015 13:46:17 at com.atlassian.clover.instr.java.JavaRecognizer.exclusiveOrExpression(JavaRecognizer.java:4635) build 27-Jul-2015 13:46:17 at com.atlassian.clover.instr.java.JavaRecognizer.inclusiveOrExpression(JavaRecognizer.java:4616) build 27-Jul-2015 13:46:17 at com.atlassian.clover.instr.java.JavaRecognizer.logicalAndExpression(JavaRecognizer.java:4597) build 27-Jul-2015 13:46:17 at com.atlassian.clover.instr.java.JavaRecognizer.logicalOrExpression(JavaRecognizer.java:4578) build 27-Jul-2015 13:46:17 at com.atlassian.clover.instr.java.JavaRecognizer.conditionalExpression(JavaRecognizer.java:4549) build 27-Jul-2015 13:46:17 at com.atlassian.clover.instr.java.JavaRecognizer.conditionalExpression2(JavaRecognizer.java:5558) build 27-Jul-2015 13:46:17 at com.atlassian.clover.instr.java.JavaRecognizer.annMemberValue2(JavaRecognizer.java:5528) build 27-Jul-2015 13:46:17 at com.atlassian.clover.instr.java.JavaRecognizer.annMemberValuePair(JavaRecognizer.java:5465) build 27-Jul-2015 13:46:17 at com.atlassian.clover.instr.java.JavaRecognizer.annotation2(JavaRecognizer.java:1509) build 27-Jul-2015 13:46:17 at com.atlassian.clover.instr.java.JavaRecognizer.annotation(JavaRecognizer.java:667) build 27-Jul-2015 13:46:17 at com.atlassian.clover.instr.java.JavaRecognizer.packageDefinition(JavaRecognizer.java:593) build 27-Jul-2015 13:46:17 at com.atlassian.clover.instr.java.JavaRecognizer.compilationUnit(JavaRecognizer.java:540) build 27-Jul-2015 13:46:17 at com.atlassian.clover.instr.java.Instrumenter.instrument(Instrumenter.java:212) build 27-Jul-2015 13:46:17 at com.atlassian.clover.instr.java.Instrumenter.instrument(Instrumenter.java:125) build 27-Jul-2015 13:46:17 at com.atlassian.clover.CloverInstr.execute(CloverInstr.java:76) build 27-Jul-2015 13:46:17 at com.atlassian.clover.CloverInstr.mainImpl(CloverInstr.java:54) build 27-Jul-2015 13:46:17 at com.atlassian.maven.plugin.clover.internal.instrumentation.AbstractInstrumenter.instrumentSources(AbstractInstrumenter.java:197) build 27-Jul-2015 13:46:17 at com.atlassian.maven.plugin.clover.internal.instrumentation.AbstractInstrumenter.instrument(AbstractInstrumenter.java:72) build 27-Jul-2015 13:46:17 at com.atlassian.maven.plugin.clover.CloverInstrumentInternalMojo.execute(CloverInstrumentInternalMojo.java:289) build 27-Jul-2015 13:46:17 at com.atlassian.maven.plugin.clover.CloverSetupMojo.execute(CloverSetupMojo.java:31) build 27-Jul-2015 13:46:17 at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:132) build 27-Jul-2015 13:46:17 at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208) build 27-Jul-2015 13:46:17 at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153) build 27-Jul-2015 13:46:17 at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145) build 27-Jul-2015 13:46:17 at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116) build 27-Jul-2015 13:46:17 at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80) build 27-Jul-2015 13:46:17 at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51) build 27-Jul-2015 13:46:17 at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:120) build 27-Jul-2015 13:46:17 at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:347) build 27-Jul-2015 13:46:17 at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:154) build 27-Jul-2015 13:46:17 at org.apache.maven.cli.MavenCli.execute(MavenCli.java:584) build 27-Jul-2015 13:46:17 at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:213) build 27-Jul-2015 13:46:17 at org.apache.maven.cli.MavenCli.main(MavenCli.java:157) build 27-Jul-2015 13:46:17 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) build 27-Jul-2015 13:46:17 at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) build 27-Jul-2015 13:46:17 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) build 27-Jul-2015 13:46:17 at java.lang.reflect.Method.invoke(Method.java:483) build 27-Jul-2015 13:46:17 at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289) build 27-Jul-2015 13:46:17 at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229) build 27-Jul-2015 13:46:17 at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415) build 27-Jul-2015 13:46:17 at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356) build 27-Jul-2015 13:46:17 [INFO] ",1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0 +"CLOV-1779","08/05/2015 16:40:06",3,"Groovy code with Generics throw NPEs ""Starting with Clover version 4.0.1 when running JUnit tests against clover instrumented code I am getting a null pointer exception when attempting to call this method: {code:java} // in DateUtil.groovy static T copy(T date) { (T) date?.clone() } {code} It seems like something has changed with the instrumentation. Either of these two other variations of this same code *doesn't* have this problem: {code:java} static Date copy(Date date) { date?.clone() } static def copy(def date) { date?.clone() } {code} Here's the top of the stacktrace: """," // in DateUtil.groovy static T copy(T date) { (T) date?.clone() } static Date copy(Date date) { date?.clone() } static def copy(def date) { date?.clone() } java.lang.NullPointerException at com.sun.beans.TypeResolver.resolve(TypeResolver.java:203) at com.sun.beans.TypeResolver.resolve(TypeResolver.java:218) at com.sun.beans.TypeResolver.resolveInClass(TypeResolver.java:96) at java.beans.FeatureDescriptor.getParameterTypes(FeatureDescriptor.java:387) at java.beans.MethodDescriptor.setMethod(MethodDescriptor.java:116) at java.beans.MethodDescriptor.(MethodDescriptor.java:72) at java.beans.MethodDescriptor.(MethodDescriptor.java:56) at java.beans.Introspector.getTargetMethodInfo(Introspector.java:1205) at java.beans.Introspector.getBeanInfo(Introspector.java:426) at java.beans.Introspector.getBeanInfo(Introspector.java:173) at groovy.lang.MetaClassImpl$15.run(MetaClassImpl.java:3244) at java.security.AccessController.doPrivileged(Native Method) at groovy.lang.MetaClassImpl.addProperties(MetaClassImpl.java:3242) at groovy.lang.MetaClassImpl.initialize(MetaClassImpl.java:3225) at org.codehaus.groovy.reflection.ClassInfo.getMetaClassUnderLock(ClassInfo.java:222) at org.codehaus.groovy.reflection.ClassInfo.getMetaClass(ClassInfo.java:253) at org.codehaus.groovy.runtime.metaclass.MetaClassRegistryImpl.getMetaClass(MetaClassRegistryImpl.java:255) at org.codehaus.groovy.runtime.InvokerHelper.getMetaClass(InvokerHelper.java:859) at org.codehaus.groovy.runtime.callsite.CallSiteArray.createCallStaticSite(CallSiteArray.java:72) at org.codehaus.groovy.runtime.callsite.CallSiteArray.createCallSite(CallSiteArray.java:159) at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:45) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:116) at com.surescripts.common.DateUtilTest.clone_NonNullValue(DateUtilTest.groovy:16) ",1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0 +"CLOV-1780","08/13/2015 08:32:59",2,"Add migration message in maven-clover2-plugin POM ""(/) investigate if we can use clover-maven-plugin or must use cloverX-maven-plugin -> it would be great to have just clover- instead of cloverX- to avoid changing a number in future (?) decide if major Clover release will be numbered 4.1.0 or 5.0.0 (as per Semantic Versioning) -> it may affect whether it will be named clover4- or clover-5 (/) prepare migration message in maven-clover2-plugin pom.xml for versions 4.0.x, similarly as it was done for Clover Core (com.cenqua.clover:clover:3.3.0) -> deliver in Clover 4.0.6, 4.0.7, ... to be considered: (x) prepare a fork of the plugin and release under two names since 4.0.6? (x) add an extra migration warning printed by the clover2:setup / clover2:instr goal?""","",0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0 +"CLOV-1784","09/18/2015 15:05:28",2,"Extend interfaces to manipulate test optimization ""Interface to manipulate test optimization: * to reorganize optimized test sets * to manipulate content the test optimization snapshot file""","",0,1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0 +"CLOV-1785","09/19/2015 18:47:18",3,"Extend database format to handle statements and methods in a file ""Allow better modelling of file-level statements and methods so that we can better support languages like Ruby which support top-level scripting constructs. Example: Some preparation have been already done for Java 8 (Clover 3.2). Things to be checked: * how our code calculates the start/end line/col range for a statement/method outside a class * how it calculates code metrics for a file having top-level statements/methods * how it handles exclusion filters (statement/method regexp) * how it handles nested entities (method-in-method etc) Things to be implemented: * take into account these top-level statements/methods in reporting ** show in XML / HTML / PDF / JSON ** render lines ** show in tables etc Out of scope: * test optimization Note: Looking at how Clojure is written, for any Clojure file there would only ever be one FileInfo containing lots of StatementInfos and MethodInfos but no ClassInfos."""," session.enterFile(..); session.enterMethod(...); // top-level-method, not inside a class ... // some statements ... session.exitMethod(); ... session.addStatement(...); // top-level-statement, not inside a class or a method ... session.exitFile(); ",0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0 +"CLOV-1787","09/19/2015 18:55:01",1,"Rename ClassInfo to TypeInfo ""ClassInfo is just OK for Java and Groovy (we have classes). But we also have enums, interfaces and annotations! And in other languages we also have closures (Groovy), traits (Groovy, Scala) etc. Thus the name ClassInfo does not suit well for other languages. Rename ClassInfo to something better. TypeInfo might be better.""","",0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0 +"CLOV-1788","09/19/2015 20:36:51",3,"Make session.enterClass() more language-independent ""Clean up InstrumentationSession.enterClass(..., boolean isInterface, boolean isEnum, boolean isAnnotation) so that it instead takes a LanguageConstruct to indicated what it is which is then embedded in ClassInfo. This divorces this part of the API from Java allowing us to model languages like Scala who have things like traits, singleton objects, etc. This may require a separate LanguageConstruct-like type (TypeConstruct ?) as it will likely need to be smarter than LanguageConstruct and be able to answer some basic questions Clover may need to ask e.g. The example above is a bit fake because surely we could determine if a TypeInfo is abstract by traversing it but there may be situations where we need to ask similar questions. """," if (!typeInfo.getConstruct().isAbstract(typeInfo)) { //Java interfaces and annotations are always abstract, Scala trait is sometimes abstract, ... //include in the report } ",0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0 +"CLOV-1789","09/19/2015 20:41:14",2,"Add possibility to add custom properties for code elements ""Introduce a base interface to ClassInfo, MethodInfo, PackageInfo, FileInfo, StatementInfo, BranchInfo which allows API clients to add arbitrary properties to the model. They values should be raw types, possible Serializable objects too. This should allow instrumentation providers better answer questions Clover may have about the model they've produced. Something like: interface CustomInfo - getProperties(): Map - setProperty(String, Object) - getProperty(String) interface FileInfo extends ..., CustomInfo interface TypeInfo extends ..., CustomInfo interface MethodInfo extends ..., CustomInfo interface BranchInfo extends ..., CustomInfo interface StatementInfo extends ..., CustomInfo ""","",0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0 +"CLOV-1790","09/19/2015 20:43:37",1,"Rename StatementInfo to ExpressionInfo ""Rename StatementInfo to ExpressionInfo in the API. Java is the odd one out here. Scala, Clojure etc all have expressions as there basic unit of execution. A statement is an expression with no result. ""","",0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0 +"CLOV-1793","09/21/2015 12:42:04",2,"Drop Grails 1.3 "" * remove legacy code (if any)""","",0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0 +"CLOV-1794","09/21/2015 12:42:48",1,"Drop Eclipse 3.6 and 3.7 ""* compile against eclipse 4.2 * fix deprecation warnings etc * remove legacy code (if any) * bump version numbers in feature name""","",0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0 +"CLOV-1795","09/23/2015 14:19:46",0.5,"Remove --style from Command line processors ""{{--style}} argument has been deprecated in 4.1.0 it should be removed in next major version 4.2.0. Scope: * remove HtmlReporter#Style * update docs i necessary * cleanup all TODO CLOV-1795""","",0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0 +"CLOV-1797","09/25/2015 13:04:53",0.5,"Support for IDEA 14.1.5 ""It should work but let's be sure. http://blog.jetbrains.com/idea/2015/09/intellij-idea-14-1-5-update-is-out/""","",0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0 +"CLOV-1804","10/07/2015 07:36:42",0.5,"Add support for Eclipse Mars.1 ""Eclipse Mars.1 was released on 01.10. Make sure Clover is compatible by: * smoke testing * adding new version to Eclipse versions matrix. ""","",0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0 +"CLOV-1808","10/15/2015 08:23:50",1,"StringIndexOutOfBoundsException in CloverStartup.evaluateDaysLeft ""Clover fails to decode the license key. Stacktrace: """," Caused by: java.lang.StringIndexOutOfBoundsException: String index out of range: 47 at java.lang.String.charAt(String.java:646) at com.atlassian.clover.CloverStartup.evaluateDaysLeft(CloverStartup.java:334) at com.atlassian.clover.CloverStartup.loadLicense(CloverStartup.java:122) at com.atlassian.clover.CloverStartup.loadLicense(CloverStartup.java:26) at com.atlassian.clover.CloverInstr.mainImpl(CloverInstr.java:45) at com.atlassian.maven.plugin.clover.internal.instrumentation.AbstractInstrumenter.instrumentSources(AbstractInstrumenter.java:196) at com.atlassian.maven.plugin.clover.internal.instrumentation.AbstractInstrumenter.instrument(AbstractInstrumenter.java:71) at com.atlassian.maven.plugin.clover.CloverInstrumentInternalMojo.execute(CloverInstrumentInternalMojo.java:290) at com.atlassian.maven.plugin.clover.CloverSetupMojo.execute(CloverSetupMojo.java:30) at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager. java:134): .. 11 more ",1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0 +"CLOV-1817","10/22/2015 14:09:41",0.5,"Fix colors of test passed / failed / error icons in Eclipse ""Currently we use dark blue color for a failed test. It's not contrast enough compared to the green one. Furthermore, we use a red background for a """"FAIL"""" status label, which is not consistent. Also, a green background used for a """"PASS"""" label is different from the green dot in the icon. Current colors used: green-pass, blue-fail, red-error are the same as in Eclipse's JUnit view. Consider also changing a dot to three different figures to make it accessible for color-blinded people. For instance: * light green circle - pass * dark blue triangle - fail * red square - error ""","",0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0 +"CLOV-1823","10/23/2015 13:32:32",0.5,"Test optimization in Eclipse Mars 4.5.1 keeps running one test ""Steps to reproduce: * rebuild a project, clean database and optimization snapshot * two times on 'run optimized' button, for the first time it runs all test, for the second time it runs one test (and should none)""","",1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0 +"CLOV-1825","10/26/2015 10:40:38",0.5,"Add more debug logging for clover2:aggregate ""Currently, it's not known why a project has no child databases and what user can do with it. ""","",0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0 +"CLOV-1827","10/28/2015 15:32:20",1,"Update Clover Tutorial "" * use source=1.6 instead of 1.4 * download required JARs (build*.xml) * do not require env.GROOVY_HOME set to 1.7 * rename 'test' to 'test.run' * remove cloverjunitlib.xml * convert unit tests to JUnit4 * simplify goals * use clover-maven-plugin ""","",0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0 +"CLOV-1834","11/03/2015 23:04:34",1,"Instrumentation failure of an annotation inside the catch clause ""Clover is failing to instrument below section of java 7 code This is a perfectly valid java 7 syntax but clover instrumentation fails at @SuppressWarnings(""""unused"""") annotation. """," try { innerStream.close(); } catch (@SuppressWarnings(""""unused"""") final IOException e) { // ignore } ",1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0 +"CLOV-1835","11/05/2015 08:17:46",2,"Unicode 0x200B (zero-width whitespace) causes instrumentation failure ""JDK 6 implements Unicode 4.0. In this version of Unicode, the zero-width whitespace character (0x200B) is being treated as a whitespace. JDK 7 implements Unicode 6.0. In this version of Unicode, the zero-width whitespace has been reclassified to the 'format character' group (other characters in this group are, for example, left-/right- text direction markers). Thus, Java compiler in JDK 6 allows to use 0x200B as a normal whitespace character, e.g. separating symbols. The Java compiler since JDK 7 silently ignores the 0x200B, which means that it cannot be used to separate symbols anymore. However you can put this character virtually in any place, e.g.: {code:java} void this<200B>Is<200B>MyMethod(); {code} Clover fails on parsing the 200B character: *Planned fix:* * Ignore 200B characters in Java 7+. Treat 200B character as space in Java 6. * Question: Shall it be based on source level setting or the JDK detected? * Question: which other control characters needs to be ignored by Clover? * Question: which other whitespace characters (other than space, \t, \n, \r) shall be recognized by Clover parser? *Workaround:* Remove all 200B character occurrences from the source code. """," void this<200B>Is<200B>MyMethod(); Xyz.java:287:90:unexpected char: 0x200B at com.atlassian.clover.instr.java.Instrumenter.instrument(Instrumenter.java:166) at com.atlassian.clover.CloverInstr.execute(CloverInstr.java:76) at com.atlassian.clover.CloverInstr.mainImpl(CloverInstr.java:54) at ... ",1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0 +"CLOV-1841","11/26/2015 09:40:23",2,"Prepare feature analysis of JCov tool ""Analyse https://wiki.openjdk.java.net/display/CodeTools/jcov and publish on https://confluence.atlassian.com/display/CLOVER/Comparison+of+code+coverage+tools ""","",0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0 +"CLOV-1846","12/01/2015 11:26:15",1,"IntelliJ Plugin should ask for rebuilding project after changing exclusions ""Currently it doesn't always ask which sometime may lead to {{ClassNotFoudException}} h2. Preconditions IntelliJ IDEA with Clover installed h2. Repro steps # Clean project and coverage db # Exclude some class with context menu # Run tests # Wait for exception h2. Expected result # Clean project and coverage db # Exclude some class with context menu # Clover asks user for rebuilding the project. ""","",0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0 +"CLOV-1847","12/03/2015 08:37:01",2,"IntelliJ Plugin should not use UI thread to generate Cloud report ""Currently Clover generates Cloud report in UI thread, it can take couple of seconds with bigger projects causing whole UI to freeze. Let's try to move it back to background somehow. ""","",0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0 +"CLOV-1848","12/03/2015 13:19:10",0.5,"Add IntelliJ 15.0.2 to test matrix ""Add IntelliJ 15.0.2 to test matrix after it being released. Currently there was RC released. ""","",0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0 +"CLOV-1855","12/07/2015 10:33:15",1,"Drop support for IntelliJ IDEA 11.x ""Scope: * drop support for IntelliJ IDEA 11.x * refactor deprecated code * remove IntelliJ 11.x from test matrix * update plugin.xml to tell correct minimal version of IntelliJ IDEA which is supported. ""","",0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0 +"CLOV-1856","12/07/2015 10:35:24",0.5,"IntelliJ IDEA plugin with version 4.1.1 shows wrong supported version ""Site for Clover on IntelliJ plugin page indicates Clover 4.1.1 supports Idea 9x however it's not true. Update plugin.xml to show correct version. https://plugins.jetbrains.com/plugin/?id=132 ""","",1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0 +"CLOV-1884","02/12/2016 06:07:02",1,"CloverCompilerAdapter should look for Javac.compileList also in super classes ""It may happen that user will wrap or subclass the Apache's Javac field. In such case, Clover won't be able to find and set this field and break the build. The CloverCompilerAdapter should look it up in a class hierarchy. We can use Apache's FieldUtils for this purpose.""","",1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0 +"CLOV-1951","06/15/2016 11:14:15",3,"Support Eclipse 4.6 Neon ""Make Clover-for-Eclipse compatible with Eclipse Neon. Problems found so far: 1. Running optimised tests throws an exception (/)   2. Deprecated API (/) SubProgressMonitor in org.eclipse.core.runtime has been deprecated ViewerSorter in org.eclipse.jface.viewers has been deprecated setSorter(ViewerSorter) in StructuredViewer has been deprecated Main(PrintWriter,PrintWriter,boolean) in Main has been deprecated 3. Code incompatibility (/) CoverageAnnotationModel is not abstract and does not override abstract method getAnnotationIterator() in IAnnotationModel"""," eclipse.buildId=4.6.0.I20160525-2000 java.version=1.8.0_51 java.vendor=Oracle Corporation BootLoader constants: OS=macosx, ARCH=x86_64, WS=cocoa, NL=en_US Framework arguments: -product org.eclipse.epp.package.java.product -product org.eclipse.epp.package.java.product -product org.eclipse.epp.package.java.product Command-line arguments: -os macosx -ws cocoa -arch x86_64 -product org.eclipse.epp.package.java.product -product org.eclipse.epp.package.java.product -data file:/Users/mparfianowicz/.eclipse-4.6-workspace/ -product org.eclipse.epp.package.java.product org.eclipse.ui Error Tue Jun 14 15:51:17 CEST 2016 Unhandled event loop exception org.eclipse.swt.SWTException: Failed to execute runnable (java.lang.NullPointerException) at org.eclipse.swt.SWT.error(SWT.java:4533) at org.eclipse.swt.SWT.error(SWT.java:4448) at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:185) at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:4024) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3700) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$4.run(PartRenderingEngine.java:1121) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:336) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1022) at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:150) at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:687) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:336) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:604) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:148) at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:138) at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:134) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:388) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:243) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:497) at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:673) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:610) at org.eclipse.equinox.launcher.Main.run(Main.java:1519) Caused by: java.lang.NullPointerException at com.atlassian.clover.eclipse.testopt.views.actions.SavingsNotificationContributionItem$1$1.run(SavingsNotificationContributionItem.java:33) at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35) at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:182) ... 23 more ",0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0 +"CLOV-1953","06/21/2016 05:33:35",5,"Clover does not instrument all nodes in Groovy AST ""Problem was reproduced in Groovy 2.4.3 and 2.4.4: https://answers.atlassian.com/questions/39141626/why-is-clover-showing-green-on-gray https://answers.atlassian.com/questions/39141622/incomplete-clover-coverage-in-grails-2.5-integration-testing""","",1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0 +"CLOV-1956","06/21/2016 14:17:27",2,"Fix Ant 1.9.7 double quotes ""Ant prior to version 1.9.7 incorrectly handled arguments containing white space characters (they were being passed as separate arguments). For this reason, we put various paths (e.g. path to a license file) in double quotes. This has been fixed in Ant 1.9.7. However, as a consequence it does not strip double-quotes now, so paths are interpreted literally - with quotes. We need a fix on Clover side, but at the same time to keep compatibility with older Ant versions. Consider adding proper flag for Clover-for-Ant tasks (e.g. """"withQuotes=true""""). See also: * BAM-10740 * BAM-17201""","",1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0 +"CLOV-1960","06/29/2016 11:27:19",8,"Instrument Groovy traits and show code coverage for them ""*Current status* Groovy 2.3 introduced traits - a code construct for composition of behaviours: * http://docs.groovy-lang.org/latest/html/documentation/core-traits.html Currently Clover handles them like an interface - it records the class name in a database but it does not instrument the class, so it shows no code coverage in reports for them. Side note: Clover's reports by default do not show classes containing no executable code (empty classes, plain enums, interfaces with no default methods, traits) - you can show them by setting [showEmpty=true|https://confluence.atlassian.com/display/CLOVER/clover-report] parameter. *Proposed improvement* Instrument Groovy traits like normal classes or enums. Side note: Groovy 2.5 will probably not introduce interfaces with default methods (like in Java 8). * http://docs.groovy-lang.org/next/html/documentation/#_interface *Technical obstacles* * method '$CLV_R$' is private but should be public in a trait * method 'com_atlassian_clover.CoverageRecorder $CLV_R$()' must not be static; only fields may be static in a trait * field '$CLV_R$' is not 'public static final' in a trait ""","",0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0