/** * Set up Checkstyle, Findbugs and PMD to perform extensive code analysis. * * Gradle tasks added: * - checkstyle * - findbugs * - pmd * * The three tasks above are added as dependencies of the check task so running check will * run all of them. */ apply plugin: 'checkstyle' apply plugin: 'findbugs' apply plugin: 'pmd' dependencies { checkstyle 'com.puppycrawl.tools:checkstyle:6.5' } def qualityConfigDir = "$project.rootDir/config/quality" def reportsDir = "$project.buildDir/reports" check.dependsOn 'checkstyle', 'findbugs', 'pmd' task checkstyle(type: Checkstyle, group: 'Verification', description: 'Runs code style checks') { configFile file("$qualityConfigDir/checkstyle/checkstyle-config.xml") source 'src' include '**/*.java' reports { xml.enabled = true xml { destination "$reportsDir/checkstyle/checkstyle.xml" } } classpath = files( ) } task findbugs(type: FindBugs, group: 'Verification', description: 'Inspect java bytecode for bugs', dependsOn: ['compileDebugSources','compileReleaseSources']) { ignoreFailures = false effort = "max" reportLevel = "high" excludeFilter = new File("$qualityConfigDir/findbugs/android-exclude-filter.xml") classes = files("$project.rootDir/folioreader/build/intermediates/classes") source 'src' include '**/*.java' exclude '**/gen/**' reports { xml.enabled = false html.enabled = true xml { destination "$reportsDir/findbugs/findbugs.xml" } html { destination "$reportsDir/findbugs/findbugs.html" } } classpath = files() } task pmd(type: Pmd, group: 'Verification', description: 'Inspect sourcecode for bugs') { ruleSetFiles = files("$qualityConfigDir/pmd/pmd-ruleset.xml") ignoreFailures = false ruleSets = [] source 'src' include '**/*.java' exclude '**/gen/**' reports { xml.enabled = true html.enabled = true xml { destination "$reportsDir/pmd/pmd.xml" } html { destination "$reportsDir/pmd/pmd.html" } } }