Gradle task that instruments java sources for Cobertura coverage reports.
The plugin will always add this task as a dependency of the copyCoberturaDatafiletask, but we only want to instrument classes if the user has elected to generate Cobertura reports for the build. The plugin will register a listener to figure out if this task should be enabled or not.
If this task is enabled, we only need to run it if the source code changed, or if the user changed any of the options that effect what should be included in the report, such as the coverageIgnoreTrivial option..
| Fields inherited from class | Fields |
|---|---|
class org.gradle.api.DefaultTask |
TASK_NAME, TASK_DESCRIPTION, TASK_GROUP, TASK_TYPE, TASK_DEPENDS_ON, TASK_OVERWRITE, TASK_ACTION, TASK_CONSTRUCTOR_ARGS |
| Type | Name and description |
|---|---|
static java.lang.String |
NAME |
org.gradle.api.artifacts.Configuration |
classpath |
CoberturaExtension |
configuration |
java.io.File |
destinationDir |
CoberturaRunner |
runner |
| Type Params | Return Type | Name and description |
|---|---|---|
|
java.lang.Object |
deleteSameFiles(java.lang.Object inputDir, java.lang.Object outputDir)Helper method to find the files that are the same in the given directories, after instrumentation is done. |
|
java.lang.Object |
findFiles(java.io.File dir, java.lang.Object condition = null)Helper method that finds all the files in a directory that meet a given condition, or all files in the directory if no condition is given. |
|
java.lang.Object |
getAuxiliaryClasspath()If the auxiliary classpath changes, we'll need to re-instrument. |
|
java.lang.Object |
getClassesDirs()If the compiled class files from our main source changes, we'll need to re-instrument. |
|
java.lang.Object |
getCoberturaVersion()If the user changes the Cobertura version, we need to re-instrument. |
|
java.lang.Object |
getExcludes()If the excluded classes change, we need to re-instrument |
|
java.lang.Object |
getIgnoreMethodAnnotations()If the user changes the annotation used to ignore methods, we'll need to re-instrument. |
|
java.lang.Object |
getIgnoreTrivial()If the user changes whether or not to ignore trivial, we'll need to re-instrument |
|
java.lang.Object |
getIgnores()If the user changes the things to ignore, we need to re-instrument. |
|
java.lang.Object |
getIncludes()If the included classes change, we need to re-instrument |
|
java.lang.Object |
getInputDatafile()The output file from this task is named inputDatafile because it is the input input for the task that copies the ser file, and is input for the tests. |
|
java.lang.Object |
getOutputClassesDir()If the instrumented class files change (or go missing), we need to re-instrument |
|
java.lang.Object |
instrument() |
|
java.lang.Object |
isSameFile(java.lang.Object dirA, java.lang.Object dirB, java.lang.Object relativeFile)Helper method to determine if a given file is the same in 2 directories. |
| Methods inherited from class | Name |
|---|---|
class org.gradle.api.DefaultTask |
org.gradle.api.DefaultTask#getProject(), org.gradle.api.DefaultTask#setDescription(java.lang.String), org.gradle.api.DefaultTask#getIdentityPath(), org.gradle.api.DefaultTask#getStandardOutputCapture(), org.gradle.api.DefaultTask#setGroup(java.lang.String), org.gradle.api.DefaultTask#getAnt(), org.gradle.api.DefaultTask#getConvention(), org.gradle.api.DefaultTask#getLogging(), org.gradle.api.DefaultTask#getLogging(), org.gradle.api.DefaultTask#getDidWork(), org.gradle.api.DefaultTask#getAsDynamicObject(), org.gradle.api.DefaultTask#setActions(java.util.List), org.gradle.api.DefaultTask#getDependsOn(), org.gradle.api.DefaultTask#getTaskDependencies(), org.gradle.api.DefaultTask#getTaskDependencies(), org.gradle.api.DefaultTask#setShouldRunAfter(java.lang.Iterable), org.gradle.api.DefaultTask#getShouldRunAfter(), org.gradle.api.DefaultTask#usesService(org.gradle.api.provider.Provider), org.gradle.api.DefaultTask#setDependsOn(java.lang.Iterable), org.gradle.api.DefaultTask#dependsOn([Ljava.lang.Object;), org.gradle.api.DefaultTask#onlyIf(groovy.lang.Closure), org.gradle.api.DefaultTask#onlyIf(org.gradle.api.specs.Spec), org.gradle.api.DefaultTask#setOnlyIf(groovy.lang.Closure), org.gradle.api.DefaultTask#setOnlyIf(org.gradle.api.specs.Spec), org.gradle.api.DefaultTask#setDidWork(boolean), org.gradle.api.DefaultTask#doFirst(groovy.lang.Closure), org.gradle.api.DefaultTask#doFirst(java.lang.String, org.gradle.api.Action), org.gradle.api.DefaultTask#doFirst(org.gradle.api.Action), org.gradle.api.DefaultTask#doLast(groovy.lang.Closure), org.gradle.api.DefaultTask#doLast(java.lang.String, org.gradle.api.Action), org.gradle.api.DefaultTask#doLast(org.gradle.api.Action), org.gradle.api.DefaultTask#getEnabled(), org.gradle.api.DefaultTask#getOutputs(), org.gradle.api.DefaultTask#getOutputs(), org.gradle.api.DefaultTask#getDestroyables(), org.gradle.api.DefaultTask#getLocalState(), org.gradle.api.DefaultTask#getTemporaryDir(), org.gradle.api.DefaultTask#mustRunAfter([Ljava.lang.Object;), org.gradle.api.DefaultTask#setMustRunAfter(java.lang.Iterable), org.gradle.api.DefaultTask#getMustRunAfter(), org.gradle.api.DefaultTask#finalizedBy([Ljava.lang.Object;), org.gradle.api.DefaultTask#setFinalizedBy(java.lang.Iterable), org.gradle.api.DefaultTask#getFinalizedBy(), org.gradle.api.DefaultTask#shouldRunAfter([Ljava.lang.Object;), org.gradle.api.DefaultTask#getTaskIdentity(), org.gradle.api.DefaultTask#injectIntoNewInstance(org.gradle.api.internal.project.ProjectInternal, org.gradle.api.internal.project.taskfactory.TaskIdentity, java.util.concurrent.Callable), org.gradle.api.DefaultTask#getTaskActions(), org.gradle.api.DefaultTask#hasTaskActions(), org.gradle.api.DefaultTask#getOnlyIf(), org.gradle.api.DefaultTask#getImpliesSubProjects(), org.gradle.api.DefaultTask#setImpliesSubProjects(boolean), org.gradle.api.DefaultTask#replaceLogger(org.gradle.api.logging.Logger), org.gradle.api.DefaultTask#getTemporaryDirFactory(), org.gradle.api.DefaultTask#prependParallelSafeAction(org.gradle.api.Action), org.gradle.api.DefaultTask#appendParallelSafeAction(org.gradle.api.Action), org.gradle.api.DefaultTask#isHasCustomActions(), org.gradle.api.DefaultTask#getRequiredServices(), org.gradle.api.DefaultTask#getSharedResources(), org.gradle.api.DefaultTask#getExtensions(), org.gradle.api.DefaultTask#getTimeout(), org.gradle.api.DefaultTask#isEnabled(), org.gradle.api.DefaultTask#configure(groovy.lang.Closure), org.gradle.api.DefaultTask#configure(groovy.lang.Closure), org.gradle.api.DefaultTask#getDescription(), org.gradle.api.DefaultTask#setEnabled(boolean), org.gradle.api.DefaultTask#property(java.lang.String), org.gradle.api.DefaultTask#hasProperty(java.lang.String), org.gradle.api.DefaultTask#getGroup(), org.gradle.api.DefaultTask#getInputs(), org.gradle.api.DefaultTask#getInputs(), org.gradle.api.DefaultTask#compareTo(java.lang.Object), org.gradle.api.DefaultTask#compareTo(org.gradle.api.Task), org.gradle.api.DefaultTask#getName(), org.gradle.api.DefaultTask#setProperty(java.lang.String, java.lang.Object), org.gradle.api.DefaultTask#getLogger(), org.gradle.api.DefaultTask#getActions(), org.gradle.api.DefaultTask#getState(), org.gradle.api.DefaultTask#getState(), org.gradle.api.DefaultTask#getPath(), org.gradle.api.DefaultTask#wait(long), org.gradle.api.DefaultTask#wait(long, int), org.gradle.api.DefaultTask#wait(), org.gradle.api.DefaultTask#equals(java.lang.Object), org.gradle.api.DefaultTask#toString(), org.gradle.api.DefaultTask#hashCode(), org.gradle.api.DefaultTask#getClass(), org.gradle.api.DefaultTask#notify(), org.gradle.api.DefaultTask#notifyAll() |
Helper method to find the files that are the same in the given directories, after instrumentation is done.
inputDir - a directory containing uninstrumented classes.outputDir - a directory containing instrumented classes.Helper method that finds all the files in a directory that meet a given condition, or all files in the directory if no condition is given.
dir - the directory to search.condition - the optional condition to check.If the auxiliary classpath changes, we'll need to re-instrument.
If the compiled class files from our main source changes, we'll need to re-instrument.
If the user changes the Cobertura version, we need to re-instrument.
If the excluded classes change, we need to re-instrument
If the user changes the annotation used to ignore methods, we'll need to re-instrument.
If the user changes whether or not to ignore trivial, we'll need to re-instrument
If the user changes the things to ignore, we need to re-instrument.
If the included classes change, we need to re-instrument
The output file from this task is named inputDatafile because it is the input input for the task that copies the ser file, and is input for the tests.
If the instrumented class files change (or go missing), we need to re-instrument
Helper method to determine if a given file is the same in 2 directories.
dirA - The first directory to checkdirB - The second directory to checkrelativeFile - the file to check, as a relative path. This file
is assumed to exist in both directories.