You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Calculating code coverage for applications written in Kotlin is a basic functionality closely related to the language itself.
Now this functionality is supplied separately in the form of a Gradle plugin, which is in no way related to the Kotlin compiler used.
Enabling coverage measurement requires a number of additional actions, using a plugin, and configuring scripts through extensions unrelated to Kotlin.
The Kotlin coverage settings have nothing to do with the Kotlin settings, which makes these settings less obvious.
For a smoother use of Kotlin, we decided to move the DSL coverage collection settings to Kotlin Gradle Plugin.
Motivation
Disadvantages of the current approach:
the complexity of the concepts used in Kover Gradle Plugin: it introduces its own concepts of artifacts, coverage measurement options, report variants, its own rules for combining variants, its own rules for merging reports. All these concepts do not fit well with Kotlin, and its look like an artificial pile-up
after creating a minimal Kotlin application, it is not obvious that you need to use a third-party utility to measure coverage
some Kover plugin settings duplicate existing settings, for example, the need to add an kover dependency when a implementation dependency has already been declared - this complicates the configuration for builds with a large number of subprojects
unobvious to configure Kover as a separate Gradle plugin that is not related to Kotlin in any way
difficulty of supporting two Gradle plugins in the IDE - it is easier to support one Kotlin Gradle Plugin than two plugins with different versions
the current plugin DSL is specific to Java or JaCoCo in many respects
complicated integration with the Kotlin compiler
different lifecycle of Kover Gradle Plugin and Kotlin Gradle Plugin potentially complicates delivering support for new compiler features
Among the additional advantages, integration with Kotlin Gradle Plugin will allow to add the functionality of native targets instrumentation more smoothly
Continued development of Kover Gradle Plugin
We will continue to maintain the current plugin and also add some small but convenient functionality.
However, the development of new big features will be suspended within this plugin, DSL will no longer be redesigned.
Products and naming
Functionality of coverage measurement settings will move to Kotlin Gradle Plugin and Kotlin Maven Plugin.
The word Kover will denote a variety of tools that will be published for general use, designed to work with the coverage of applications written in Kotlin.
Such tools will solve highly specialized tasks, and it is assumed that they will be used in custom pipelines: called from CLI scripts or from other build systems.
Examples of these tools:
JVM agent
generating human-readable reports
verification of coverage values
working with the Kotlin code coverage export format
develop a temporary kover settings plugin as prototype of configuring coverage in Kotlin Gradle Plugin to test new ideas
after the stabilization of the design and processing of the main user cases collected on the basis of settings plugin feedback, integration with Kotlin Gradle Plugin will begin
full integration with Kotlin Gradle Plugin and alignment of workflow and lifecycles, new HTML and export reports
* It is here to stay
* We would live to maintain it in its current form and have a clear vision for future development (#608) with a straightforward migration plan
* It is here to stay
* We would live to maintain it in its current form and have a clear vision for future development (#608) with a straightforward migration plan
Abstract
Calculating code coverage for applications written in Kotlin is a basic functionality closely related to the language itself.
Now this functionality is supplied separately in the form of a Gradle plugin, which is in no way related to the Kotlin compiler used.
Enabling coverage measurement requires a number of additional actions, using a plugin, and configuring scripts through extensions unrelated to Kotlin.
The Kotlin coverage settings have nothing to do with the Kotlin settings, which makes these settings less obvious.
For a smoother use of Kotlin, we decided to move the DSL coverage collection settings to Kotlin Gradle Plugin.
Motivation
Disadvantages of the current approach:
kover
dependency when aimplementation
dependency has already been declared - this complicates the configuration for builds with a large number of subprojectsAmong the additional advantages, integration with Kotlin Gradle Plugin will allow to add the functionality of native targets instrumentation more smoothly
Continued development of Kover Gradle Plugin
We will continue to maintain the current plugin and also add some small but convenient functionality.
Planned changes:
However, the development of new big features will be suspended within this plugin, DSL will no longer be redesigned.
Products and naming
Functionality of coverage measurement settings will move to Kotlin Gradle Plugin and Kotlin Maven Plugin.
The word
Kover
will denote a variety of tools that will be published for general use, designed to work with the coverage of applications written in Kotlin.Such tools will solve highly specialized tasks, and it is assumed that they will be used in custom pipelines: called from CLI scripts or from other build systems.
Examples of these tools:
Development milestones
The text was updated successfully, but these errors were encountered: