We are thrilled to announce OpenClover 5.0 — the first major release since the 4.x series began, and the result of years of careful work by the community! This release delivers on promises made throughout the 4.5.x cycle and sets the foundation for even bigger things ahead.
Throughout the 4.5.x releases we methodically chased down every missing language construct, edge case, and instrumentation bug for JDK 17. That work is done. We are proud to announce official, production-ready support for Java 17! You can now instrument and compile code at any language level from 8 to 17, and run it under any JDK/JRE from 8 to 17 with full confidence.
Planning your JDK upgrade? Good news: OpenClover now runs cleanly on Java 21 and Java 25, with both versions continuously built and tested. Note that this is runtime support — instrumentation of language features introduced in Java 18+ is not yet supported, that's what the next cycle is for. But if your build toolchain already runs on JDK 21 or the brand-new JDK 25, you won't be blocked.
To clear the path for Java 21 instrumentation support, we are officially dropping Java 1.7. If your OpenClover configuration specifies 1.7 as the language level, it will be silently treated as 8 and a warning will be printed. Since all OpenClover classes have always required JRE 8+ at runtime, this change affects only a very small number of projects still targeting a JVM that reached end-of-life years ago.
Groovy has been waiting for this for a while. We've rewritten OpenClover's Groovy AST transformations from scratch and updated all related libraries to bring solid, tested compatibility with Groovy 3.x, 4.x, and 5.x.
Two exciting new instrumentation capabilities come with this:
stream().map().filter() — no more blind
spots in functional-style code.
default branch instrumentation for switch statements.
When a switch has no explicit default case, OpenClover now instruments the
implicit one. This lets you catch places where not all cases are handled — a common source
of silent NullPointerExceptions.
$CLV_R$() into instrumented classes. Its visibility has changed from
private to package-private. If you use a library that scans non-private
members via reflection (e.g. a serialization framework), you may need to add an exclusion
for this method in that library's configuration.
Groovy 2.x reached end of life years ago, and maintaining compatibility was holding back Groovy 3–5 work. OpenClover 5.0.0 may still work with Groovy 2.x in practice, but we make no guarantees — future bug-fix releases will remove deprecated code without hesitation. Time to upgrade!
Let's be honest: Clover for Eclipse and Clover for IDEA hadn't been touched in years. The last officially supported versions were IntelliJ IDEA 2016.3 and Eclipse 4.6 (Neon) — released back in 2016. If you tried installing the old plugin into a modern IDE, it simply wouldn't load. Not anymore!
We tore into both plugins, rebuilt clover-idea on top of the modern IntelliJ Platform
Gradle plugin, chased down every API change across a decade of IDE releases, and got everything
green again. The result:
Install the plugin in your current IDE and get instantaneous code coverage feedback right where you write code — no more waiting for an external build and report to finish before you find out what you missed. Spot risky areas at a glance with heat maps, and jump straight to top risks and quick wins from the built-in mini dashboard. Per-test coverage lets you navigate straight from any line of code to the tests that exercise it, and back again. Combine that with OpenClover's test optimization feature and you can save dozens of hours a year by running only the tests that actually matter for your change.
com.atlassian.*
A major version bump was the perfect moment to finish the renaming that started when
Atlassian open-sourced Clover. All remaining com.atlassian.* package references
have been replaced with proper org.openclover.* prefixes, and each module now
has a unique package namespace. For the vast majority of users this is invisible. If you
maintain a custom plugin that imports OpenClover's internal Java classes directly, you will
need to update those import statements.
Download the new Clover-for-Ant ZIP and drop the new clover.jar into your build.
Download the new update site ZIP and install it in your Eclipse via Help → Install New Software.
Download the new plugin JAR and install it via Settings → Plugins → Install Plugin from Disk.
Bump the version to 5.0.0 for both org.openclover:clover-maven-plugin
and org.openclover:clover in your pom.xml files.
Also ensure your Maven version is at least 3.3.1 (see OC-236).
Upgrade to the latest 4.16.x plugin release from the Jenkins update centre.