Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Could not find method destination() for arguments on Report xml of type org.gradle.api.plugins.quality.internal.findbugs.FindBugsXmlReportImpl

After updating the android studio version to 3.4.0 I updated the Gradle version to 5.1.1 and tried rebuilding the project it is throwing an exception in quality.gradle file.

 Task failed with an exception.
-----------
* Where:
Script '/home/Desktop/workplace/testProject/quality/quality.gradle' line: 35

* What went wrong:
A problem occurred evaluating script.
> Could not find method destination() for arguments [/home/Desktop/workplace/testProject/app/build/reports/findbugs/findbugs.xml] on Report xml of type org.gradle.api.plugins.quality.internal.findbugs.FindBugsXmlReportImpl.

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

Android Project Level classpath URL and Gradle distribution URL

classpath 'com.android.tools.build:gradle:3.4.0' distributionUrl=https://services.gradle.org/distributions/gradle-5.1.1-all.zip

I tried doing invalidate the cache and restart the project. it keeps failing

Here is my quality.gradle file

apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-android'
apply plugin: 'checkstyle'
apply plugin: 'findbugs'
apply plugin: 'pmd'

task checkstyle(type: Checkstyle) {
    configFile file("${project.rootDir}/quality/checkstyle/checkstyle.xml")
    configProperties = [
            'checkstyle.cache.file': rootProject.file('build/checkstyle.cache'),
            'checkstyleSuppressionsPath': file("${project.rootDir}/quality/checkstyle/suppressions.xml").absolutePath
    ]
    source 'src'
    include '**/*.java'
    exclude '**/gen/**'
    exclude '**/commons/**' //exclude copied stuff from apache commons
    classpath = files()
}

task findbugs(type: FindBugs) {
    ignoreFailures = false
    effort = "max"
    reportLevel = "high"
    excludeFilter file("${project.rootDir}/quality/findbugs/findbugs-filter.xml")
    classes = fileTree('build/intermediates/classes/')

    source 'src'
    include '**/*.java'
    exclude '**/gen/**'

    reports {
        xml.enabled = false
        html.enabled = true
        xml {
            destination "$project.buildDir/reports/findbugs/findbugs.xml"
        }
        html {
            destination "$project.buildDir/reports/findbugs/findbugs.html"
        }
    }

    classpath = files()
}

task pmd(type: Pmd) {
    ignoreFailures = false
    ruleSetFiles = files("${project.rootDir}/quality/pmd/pmd-ruleset.xml")
    ruleSets = []

    source 'src'
    include '**/*.java'
    exclude '**/gen/**'

    reports {
        xml.enabled = false
        html.enabled = true
        xml {
            destination "$project.buildDir/reports/pmd/pmd.xml"
        }
        html {
            destination "$project.buildDir/reports/pmd/pmd.html"
        }
    }
}

check.doLast {
    project.tasks.getByName("checkstyle").execute()
    project.tasks.getByName("findbugs").execute()
    project.tasks.getByName("pmd").execute()
    project.tasks.getByName("lint").execute()
}

checkstyle {
    toolVersion '6.17'    // set Checkstyle version here
}

This is happening when I use the Gradle version 5.1.1 and Gradle classpath version 3.4.0. Earlier I was using Gradle 4.10.1 and classpath version 3.3.2.

like image 673
Sabarinathan Avatar asked Apr 30 '19 09:04

Sabarinathan


2 Answers

In Gradle 5.x setDestination(Object file) has been removed instead you must use

setDestination(File file)

which takes a File parameter so instead of

destination "$yourpath"

replace it with

destination file("$yourpath")

check gradle doc

like image 118
tamtom Avatar answered Oct 17 '22 08:10

tamtom


Proper example should be

 reports{
    html.enabled true
    html.destination(file("$yourpath"))
 }
 classpath = files()
like image 24
Aveek Avatar answered Oct 17 '22 07:10

Aveek