We're thrilled to share with you next version of OpenClover. In this release we've implemented support for Java 14 switch expressions. I must admit this was not a small task, just have a look at the sheer amount of changes required. This was the last language feature missing from JDK17. In case you find any bugs, please do not hesitate to report them in our issue tracker, so that we could fix them before the 4.6.0 release. And there's more! The instanceof pattern matching, sealed types and bug-fixes. See the release notes for details.
By the way, we've refreshed look and feel of our website, did you notice? :)
See the release notes for details.
What's next on the roadmap?
I quite often get questions like "When are you going to deliver feature X or fix bug Y". For this reason I'd like to share my thoughts on how I see development of OpenClover in near future and give you insight what to expect.
We try to group features and bug-fixes from similar areas of functionality into themes and produce theme-focused releases. Let me share what are the themes of next releases and why:
You may ask why this order? We cannot postpone migration (4.5.0) as repositories will be deleted. Having an instrument-able and compile-able code (4.6.0) is more urgent than having smooth work in IDEs (4.7.0), because in the latter case you can always fallback to building from a command line (Ant / Maven / ...). And Java 11 (4.8.0) has to wait a bit, unfortunately, but it shall benefit from grammar fixes planned (4.6.0).
What do you think about our road map? Feel free to share your thoughts via email!
See our issue tracker for details.
Hint: an issue scheduled for given release have
[X.Y.Z] prefix in their title.
No matter how much time you spend on testing, there's always something you can overlook. I would like to say huge "Thank you!" to our amazing user community who quickly reported problems found after an upgrade. This release fixes three major bugs.
See the release notes for details.
It took us long time but OpenClover 4.4 is finally born! We're thrilled to share with you this new release, packed with new features:
Just read the release notes and do not hesitate upgrade. :)
In this release we fixed a blocker bug introduced in version 4.3.0. Feel free to upgrade to 4.3.1 to have your Java 9 projects with OpenClover
What went wrong? Well, I extended the ANTLR grammar to handle module-info.java files, but the semantic rules created by me caused that tokens like "requires", "uses", "to" etc became keywords, causing that it was impossible to use them as normal identifiers (variable name, method name etc). I tested regular java files and module-info files separately, thus it slipped through my testing process. Few tricks with syntactic predicates and lookahead into the token stream fixed the problem :).
Atlassian hosts a great conference called 'Atlassian Summit'. It will happen 3-5 September in Barcelona, Spain. You can find more details here.
In case you didn't know, I have the opportunity to work on Atlassian products for over 6 years already - I've been developing Atlassian Clover, Bamboo, Fisheye and Crucible. Currently, I'm a team leader of the Fisheye / Crucible development team. In case you would like to meet me and talk about these great products, come to the Bamboo/Fisheye/Crucible booth.
Tip: in case you did not purchase a ticket yet, use the TEAM15SAVE code to get 15% discount!
What about 4.3.1 release? I'm working on a fix for the second blocker, I expect to release it after the Atlassian Summit conference.
We are proud to share with you new feature release of OpenClover. Version 4.3.0 brings support for Java 9.
Java 9 support
With OpenClover 4.3.0 you can compile and run your projects using Java 9.
You can use the "Java 9" source level setting in OpenClover command line tools, Ant or Maven as well as in your Eclipse and IntelliJ IDEA projects. OpenClover core can also detect use of JDK9 and apply this language level automatically, if not set. The Java grammar parser has been extended and can parse module-info.java files - there is no need to exclude these files from instrumentation.
IntelliJ IDEA 13 is no longer supported
As announced few months ago, we had to use APIs from IDEA 14 in order to implement JDK9 support, so OpenClover will no longer run in IDEA 13. As compensation, we added to the road map a support for IDEA 2017 and 2018.
Ant <clover-env> task has been removed
This Ant task was modifying configuration of the system classloader, so it was not the best design for the Java 9+ modular world. Taking into account that it was only injecting high-level Ant targets, which were useful for tiny projects or tutorials rather than production projects, we decided to drop this task. Instead of using the predefined high-level Ant targets (e.g. "with.clover" or "clover.report") we strongly recommend to configure appropriate Ant tasks (e.g. <clover-setup> or <clover-report>) in build files.
Java 9 and 10 are coming \o/
We are moving forward with development of support for Java 9 and Java 10 by OpenClover. They will be supported in next major OpenClover release, which is 4.3.0 scheduled for June 2018.
End of support for old platforms is coming
As we want to modernize and simplify code base as well as simplify testing, we would like to drop support for some of the old tools. We will do it gradually till end of the 2018 calendar year, together with next major OpenClover releases. We want to give you heads-up so that you won't be surprised and explain the reasons.
Java 1.3-1.5 source level
OpenClover requires JDK6 or higher for compilation and runtime. However, it was possible to set 1.3-1.5 source level for instrumentation. We will remove support for these values, so the minimum level required will be 1.6. As Java language is backward-compatible you shall notice no impact. The only thing which breaks is using 'assert' keyword as variable name (which was possible in 1.3).
Eclipse 4.2 and 4.3
Eclipse 4.2 was released in 2012 and 4.3 in 2013, so long time ago. We believe that being able to run OpenClover with Eclipse 4.4 (Luna), which was released in 2014 is more than enough, especially that this version has integrated Java 8 support.
IntelliJ IDEA 13
Similarly, we're dropping support for IDEA 13, released in 2013. Another reason is that we need IDEA 14 APIs to support Java 9.
The oldest Groovy version supported will be 2.0.0, released in 2012. We are doing this, because we want to get rid of an old ASM library - we must currently handle both ASM3 and ASM4 with various hacks (as they're binary incompatible).
As Grails uses Groovy, the oldest Grails version supported will be 2.2.x (which is based on Groovy 2.0.x). So, you will be able to continue using OpenClover with Grails 2.2-2.5. Note that we don't have dedicated support for Grails 3.x yet - it depends on the Gradle plugin.
In OpenClover 4.2.1 we restored support for Maven 2.x (which was broken by a bug). However, the last Maven 2.2.1 release was published in November 2009 and it's end of life for long time. Therefore, we believe it's the high time to drop support for it in OpenClover, especially that this will help us refresh clover-maven-plugin code.
Java 6 (under consideration)
We are not dropping support for Java 6 yet. However, Java 10 is already available, which is 4 major releases ahead and Java 6 is no longer supported by Oracle. Furthermore, the "1.6" source/target level has been marked as deprecated in Java 9, so it may be removed from javac at any time. According to various reports, e.g. from Plumbr, Java 6 usage dropped below 5% in 2017 and the trend continues. It's even impossible to install Java 6 SDK on the latest MacOS. Therefore, as soon as we will be forced to (removal of 1.6 from javac), we will drop Java 6 from OpenClover - probably together with introduction of Java 11 support.
In this release we focused on solving bugs related with Pipeline builds and remote agents.
We also solved the problem of automatic Clover integration not running on Windows and later Jenkins versions. Integration is now also smarter and does not attempt to integrate with non-Ant tasks.
In addition to this we bumped minimum Jenkins version required to run the plugin. You have to use Jenkins 1.642.3 or higher. Note that this is the minimum version required by the Workflow Plugin 2.0 (aka the Pipelines Plugin).
But we also did not forget to give something to please your eyes :) The 'OpenClover coverage summary' page has better look-and-feel of tables now.
We have documentation!
We are happy to announce that we have prepared end-user and developer documentation on our website. You can enjoy quick start guides, tutorials, plugin-specific guides, knowledge base articles and many many more. It's over 300 pages in total! And this is not a simple copy-and-paste - all code snippets, URLs, Maven artifact IDs etc have been updated to OpenClover. You will no longer have to jump back and forth between openclover.org and confluence.atlassian.com sites and wonder what is different between Clover and OpenClover.
We have new plugin for SBT
Thanks to one volunteer, OpenClover has a second plugin for SBT: https://github.com/barkhorn/sbt-clover. This plugin supports newer SBT versions, links with OpenClover and SBT's internal tasks (test in Test, compile in Compile) are used for the build, rather than a custom scope.
OpenClover goes to the Hackengarten
On 18th of October, our project team member, Grzegorz Lewandowski, went to Hackengarten organized by Tricity Java User Group and presented OpenClover. The feedback was very positive and we found 5 volunteers willing to hack and code for us! Unfortunately they did not deliver any feature yet, as most of the time was spent on setting up development environment (it's a lesson for us to be better prepared and to simplify our build processes) and explaining OpenClover details. Nevertheless, the Hackengarten is a cyclic event, so stay tuned! In case you happen to be in Gdańsk, Poland and would like to join our forces, please watch the https://www.meetup.com/Trojmiasto-Java-User-Group for new meetings.
New 4.2.1 release is coming soon
This will be a bug-fix release in which we solve compatibility issues with Maven 2.x. It has also fixes for automatic Ant and Maven integrators, required for CI systems, such as Jenkins or Bamboo. More details on https://github.com/openclover/clover/issues
As I wrote in my previous blog post, we want to focus on Gradle and Jenkins plugins. I am also working on better support for OpenClover in Bamboo - so that it will be possible to use automatic integration feature.
This is a cross-post of OpenClover's newsletter.
OpenClover 4.2.0 is available
We are happy to announce that our first release of OpenClover is out. It is based on the open-sourced code of Atlassian Clover 4.1.2. Kudos for Atlassian for open-sourcing it! You can download OpenClover Core as well as integrations for Ant, Maven, Grails, Eclipse, IntelliJ IDEA, Jenkins, Hudson and AspectJ and enjoy the powerful HTML reports.
We're looking for contributors for Gradle Plugin
Unfortunately the Gradle Plugin for OpenClover is not ready yet. We decided to postpone it because does not handle multi-module projects, which we believe is a very common setup. In case you feel confident with writing plugins for Gradle and would like to help us, your contribution will be more than welcome!
In the incoming months we're going to:
In April 2017 Atlassian® decided to publish sources of Clover - the most sophisticated code coverage tool for Java and Groovy. Clover has been commercially developed for nearly fifteen years (first by Cenqua, next by Atlassian), so literally thousands of man hours were spent on making it so rich in features. Clover's source base is about 10 times larger than second best coverage tool - JaCoCo. I must admit that I had a pleasure to be one of its developers for five years. Thus, as you can notice, making Clover completely free and open source is an amazing gift from Atlassian to the open source community. Great kudos for Atlassian!
Clover is not only rich in features, but also unique compared to other code coverage tools (such as JaCoCo or Cobertura), because it's based on the source code instrumentation (and not the bytecode instrumentation). While this approach has some limitations (you need to recompile the code, for instance) it gives huge benefits, for instance:
I've been working on Clover since 2012 and I dare to say that several recent major releases of Clover (such as version 3.2 with Java 8, version 3.3 with parameterised JUnit4 and Spock tests or version 4.0 with overhauled HTML report) came out of my hands. I had the opportunity to do everything - from technical support to being developer lead and planning a road map. I know the product inside out and I really love it - from both end-user and a programmer perspective (the code is really solid piece of work). So at the moment I heard about the idea of open-sourcing it, I immediately knew that I want to participate in this "new life" of Clover.
So here we are: a new home page you're reading right now is set up, all sources are available for download from Bitbucket, I am working on a binary release of OpenClover 4.2, which should be ready quite soon. I am eager to share my expertize and to coordinate the entire open source project.
You may ask: What can I do?
My answer is: Just start using it! I am certain that you'll love it! Spread the word, ask questions, provide answers on Q&A forums like Atlassian Answers or Stackoverflow. Migrate your builds from Clover 4.1 (or older) to OpenClover 4.2 as soon as it becomes available.
The bigger user base, the bigger active Clover community, the bigger chance to find new volunteers to contribute to Clover. And last but not least the bigger motivation for me :-) to drive the whole project.
I am looking forward to hear from you. You can catch me via email email@example.com.