Subscribe to our RSS channel to get notifications about new releases and other announcements. Click here

OpenClover 4.5.2 bug-fix release

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? :)

OpenClover 4.5.1 bug-fix release

The bug fix release solves code instrumentation error when the "record" keyword was used outside record class declaration (e.g. as a variable or a method name). The source level of 12 to 17 is also accepted now. See the release notes for details.

OpenClover 4.5.0 feature release

After long three years, we are thrilled announce experimental support for Java 17! Long-awaited support for annotations on data types is here too! We are also dropping support for Java 1.6, Groovy 2.x, old Grails 2.x plugin and Hudson plugin.

On top of this, OpenClover source code went through huge amount of technical changes, the biggest one was migration from Ant to Java. We hope this will make it much easier for you to contribute to the project.

See the release notes for details.

What's next on the roadmap?

  • 4.6.0 "languages" - full support for Java 17 (maybe also 21); support for Groovy 3.x and 4.x (maybe also 5.x)
  • 4.7.0 "eclidea" - compatibility with the latest Eclipse and IDEA versions; upgrades for Gradle plugin
  • 4.8.0 "polyglot" - we will explore support for Kotlin, Scala and other JVM languages

OpenClover road map - look into the future

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:

  • 4.5.0 "Dev speed"
    Because of the fact that Bitbucket terminates support for Mercurial and OpenClover uses it, we will migrate to Git (issue #98). We think it's quite beneficial as Git is an industry standard. Repositories will be migrated to GitHub, as this is more popular platform for open-source. We will also replace Ant with Maven (Gradle is quickly gaining in popularity, so this is also an option) and drop support for old plugins (Grails 2.x and Hudson) and Java versions (1.6 and older). We are convinced that all these actions will lower the entry barrier for contributors and will make development faster.
  • 4.6.0 "Languages"
    There is a number of open bugs for both Groovy and Java, such as adding support for @CompileStatic for Groovy (issue #31), type annotations for Java 8 (issue #20) or instrumentation of specific method references, like array constructors (issue #59 and #95). Without fixing these it's pretty painful to exclude source files one-by-one because of failing OpenClover.
  • 4.7.0 "Eclipse and IDEA"
    We want to add support for the latest versions of Eclipse and IntelliJ IDEA, as due to API evolution in these IDEs, OpenClover plugins are no longer fully compatible. By the latest we mean versions from 2020.
  • 4.8.0 "Java 11"
    Java 11 popularity is growing fast, so we no longer can ignore it. In this release we add support for both Java 10 and Java 11 in one shot.

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.

OpenClover 4.4.1 bug-fix release

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.

We're thrilled to announce OpenClover 4.4.0!

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:

  • Atlassian Bamboo 6.9 with built-in automatic integration with OpenClover
  • Maven plugin with custom test patterns and enhanced method context filtering
  • support for JUnit5, including parameterised tests
  • and much more!

Just read the release notes and do not hesitate upgrade. :)

OpenClover 4.3.1 has been released!

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 :).

Let's meet in Barcelona!

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.

OpenClover 4.3.0 has been released!

2018.08.20 update: Due to blockers #72 and #75 please hold on with upgrading to 4.3.0. I'm sorry for the trouble :-(. A first blocker is solved (on 'master' branch), I'm working on the second one. Both fixes will be delivered in 4.3.1.

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.

 

OpenClover platform deprecation announcements

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.

Groovy 1.6-1.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).

Grails 2.0-2.1

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.

Maven 2

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.

 

Jenkins Clover Plugin 4.9.0 has been released

In this release we focused on solving bugs related with Pipeline builds and remote agents.

We fixed JENKINS-45981, JENKINS-33610 and JENKINS-34439 bugs.

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.

Autumn update

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

What's next?

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.

OpenClover 4.2.0 has been released. What's next?

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!

What's next?
In the incoming months we're going to:

  • release the Gradle Plugin
  • attack the Jenkins Plugin, which has several critical bugs
  • prepare end-user and developer documentation on our website
Your feedback is valuable, feel free to report issues in our tracker or email us directly.

Welcome to OpenClover

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:

  • as Clover "knows" the code structure it can measure 20+ code metrics
  • it can recognize language- or framework-specific code constructs
  • it is more "transparent" to other bytecode manipulating tools

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.

Or maybe you would like to contribute? If yes, then jump to the Clover Development Hub for build instructions, clone the repository and grab some bug or feature request for implementation.

I am looking forward to hear from you. You can catch me via email marek.parfianowicz@gmail.com.

Subscribe to our newsletter

Get notified about new releases and other announcements.