aaschmid/gradle-cpd-plugin

Warnings for other subprojects when building just one subproject

C-Otto opened this issue · 4 comments

When building a single subproject ./gradlew aaa:build I get the following warning for each subproject, aside from the one I'm building. I expect to only receive warnings related to subproject aaa.

WARNING: Due to the absence of 'LifecycleBasePlugin' on project ':bbb' the task ':cpdCheck' could not be added to task graph. Therefore CPD will not be executed. To prevent this, manually add a task dependency of ':cpdCheck' to a 'check' task of a subproject.
1) Directly to project ':aaa':
    check.dependsOn(':cpdCheck')
2) Indirectly, e.g. via project ':bbb:
    project(':aaa') {
        plugins.withType(LifecycleBasePlugin) { // <- just required if 'java' plugin is applied within subproject
            check.dependsOn(cpdCheck)
        }
    }

I'm using Gradle 6.6 RC2. Some relevant parts of my build.gradle (in root project):

plugins {
    id 'de.aaschmid.cpd' version '3.1' apply false
}
evaluationDependsOnChildren()

configure(subprojects.findAll { it.name != 'xxx' }) {
    apply plugin: 'java'
    apply plugin: 'de.aaschmid.cpd'

    check.dependsOn(cpdCheck)

    cpdCheck {
        source = sourceSets.main.allJava // do not run for test code
    }
}

The error is logged in CpdPlugin here and the problem is that I check if the cpdCheck task is on the task graph for every project on which cpd plugin is applied ...

So I need to change this check. The question is how as I can always think of situations where this warning is either false positive or false negative :-(
E.g. if looking for project's check task graph, one could want it on build.

Maybe I will remove this entirely and make it more prominent in the documentation.

If anyone has some hints / points on it, I would be very grateful hearing them.

In my understanding you want to log a helpful message to tell the user about a configuration issue (missing dependsOn?). If this is correct, I suggest to just drop this altogether. Instead, provide some documentation/examples, and maybe add a few examples that can be used to test the plugin.

This is creating lots of output when running gradle in continuous mode, to the point that I had to disable the plugin.

+1 this bug is super annoying