From c1a8ec6c37d06a33480607a14755e3c45a65e2e7 Mon Sep 17 00:00:00 2001 From: Antonio Bertucci Date: Tue, 31 Jan 2017 17:12:30 +0100 Subject: [PATCH 01/11] Inline common configuration performed on each task --- .../internal/CodeQualityConfigurator.groovy | 11 ++++++----- .../internal/checkstyle/CheckstyleConfigurator.groovy | 1 - .../internal/findbugs/FindbugsConfigurator.groovy | 1 - .../internal/pmd/PmdConfigurator.groovy | 1 - 4 files changed, 6 insertions(+), 8 deletions(-) diff --git a/plugin/src/main/groovy/com/novoda/staticanalysis/internal/CodeQualityConfigurator.groovy b/plugin/src/main/groovy/com/novoda/staticanalysis/internal/CodeQualityConfigurator.groovy index 262853f..0b5bed8 100644 --- a/plugin/src/main/groovy/com/novoda/staticanalysis/internal/CodeQualityConfigurator.groovy +++ b/plugin/src/main/groovy/com/novoda/staticanalysis/internal/CodeQualityConfigurator.groovy @@ -38,7 +38,11 @@ abstract class CodeQualityConfigurator configureTask(task) } + project.tasks.withType(taskClass) { task -> + task.group = 'verification' + filter.applyTo(task) + configureTask(task) + } } } } @@ -63,9 +67,6 @@ abstract class CodeQualityConfigurator getTaskClass() - protected void configureTask(T task) { - task.group = 'verification' - filter.applyTo(task) - } + protected abstract void configureTask(T task) } diff --git a/plugin/src/main/groovy/com/novoda/staticanalysis/internal/checkstyle/CheckstyleConfigurator.groovy b/plugin/src/main/groovy/com/novoda/staticanalysis/internal/checkstyle/CheckstyleConfigurator.groovy index f26a385..e5dd694 100644 --- a/plugin/src/main/groovy/com/novoda/staticanalysis/internal/checkstyle/CheckstyleConfigurator.groovy +++ b/plugin/src/main/groovy/com/novoda/staticanalysis/internal/checkstyle/CheckstyleConfigurator.groovy @@ -68,7 +68,6 @@ class CheckstyleConfigurator extends CodeQualityConfigurator { @Override protected void configureTask(Pmd pmd) { - super.configureTask(pmd) pmd.ignoreFailures = true pmd.metaClass.getLogger = { QuietLogger.INSTANCE } pmd.doLast { From ee94b481d676a1bbdf89799adcec68752e3cef35 Mon Sep 17 00:00:00 2001 From: Antonio Bertucci Date: Tue, 31 Jan 2017 17:43:05 +0100 Subject: [PATCH 02/11] Rename method to clarify its purpose --- .../staticanalysis/internal/CodeQualityConfigurator.groovy | 4 ++-- .../internal/checkstyle/CheckstyleConfigurator.groovy | 2 +- .../internal/findbugs/FindbugsConfigurator.groovy | 2 +- .../novoda/staticanalysis/internal/pmd/PmdConfigurator.groovy | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/plugin/src/main/groovy/com/novoda/staticanalysis/internal/CodeQualityConfigurator.groovy b/plugin/src/main/groovy/com/novoda/staticanalysis/internal/CodeQualityConfigurator.groovy index 0b5bed8..6d4a8b5 100644 --- a/plugin/src/main/groovy/com/novoda/staticanalysis/internal/CodeQualityConfigurator.groovy +++ b/plugin/src/main/groovy/com/novoda/staticanalysis/internal/CodeQualityConfigurator.groovy @@ -41,7 +41,7 @@ abstract class CodeQualityConfigurator task.group = 'verification' filter.applyTo(task) - configureTask(task) + configureReportEvaluation(task) } } } @@ -67,6 +67,6 @@ abstract class CodeQualityConfigurator getTaskClass() - protected abstract void configureTask(T task) + protected abstract void configureReportEvaluation(T task) } diff --git a/plugin/src/main/groovy/com/novoda/staticanalysis/internal/checkstyle/CheckstyleConfigurator.groovy b/plugin/src/main/groovy/com/novoda/staticanalysis/internal/checkstyle/CheckstyleConfigurator.groovy index e5dd694..7b799c4 100644 --- a/plugin/src/main/groovy/com/novoda/staticanalysis/internal/checkstyle/CheckstyleConfigurator.groovy +++ b/plugin/src/main/groovy/com/novoda/staticanalysis/internal/checkstyle/CheckstyleConfigurator.groovy @@ -67,7 +67,7 @@ class CheckstyleConfigurator extends CodeQualityConfigurator { } @Override - protected void configureTask(Pmd pmd) { + protected void configureReportEvaluation(Pmd pmd) { pmd.ignoreFailures = true pmd.metaClass.getLogger = { QuietLogger.INSTANCE } pmd.doLast { From ea385ceebf44134a9c426b8905c2fcfd32fdf6de Mon Sep 17 00:00:00 2001 From: Antonio Bertucci Date: Tue, 31 Jan 2017 17:59:56 +0100 Subject: [PATCH 03/11] Rename field --- .../internal/CodeQualityConfigurator.groovy | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/plugin/src/main/groovy/com/novoda/staticanalysis/internal/CodeQualityConfigurator.groovy b/plugin/src/main/groovy/com/novoda/staticanalysis/internal/CodeQualityConfigurator.groovy index 6d4a8b5..17131d8 100644 --- a/plugin/src/main/groovy/com/novoda/staticanalysis/internal/CodeQualityConfigurator.groovy +++ b/plugin/src/main/groovy/com/novoda/staticanalysis/internal/CodeQualityConfigurator.groovy @@ -12,13 +12,13 @@ abstract class CodeQualityConfigurator filter.exclude(rule) } + ext.exclude = { Object rule -> sourceFilter.exclude(rule) } config.delegate = it config() } @@ -40,7 +40,7 @@ abstract class CodeQualityConfigurator task.group = 'verification' - filter.applyTo(task) + sourceFilter.applyTo(task) configureReportEvaluation(task) } } From 86a440bafbc97434f039bd90b3377e8fde9d7ef7 Mon Sep 17 00:00:00 2001 From: Antonio Bertucci Date: Tue, 31 Jan 2017 18:07:10 +0100 Subject: [PATCH 04/11] Remove unnecessary check against source dir emptiness --- .../checkstyle/CheckstyleConfigurator.groovy | 12 ++++-------- .../internal/pmd/PmdConfigurator.groovy | 10 +++------- 2 files changed, 7 insertions(+), 15 deletions(-) diff --git a/plugin/src/main/groovy/com/novoda/staticanalysis/internal/checkstyle/CheckstyleConfigurator.groovy b/plugin/src/main/groovy/com/novoda/staticanalysis/internal/checkstyle/CheckstyleConfigurator.groovy index 7b799c4..91f253c 100644 --- a/plugin/src/main/groovy/com/novoda/staticanalysis/internal/checkstyle/CheckstyleConfigurator.groovy +++ b/plugin/src/main/groovy/com/novoda/staticanalysis/internal/checkstyle/CheckstyleConfigurator.groovy @@ -50,14 +50,10 @@ class CheckstyleConfigurator extends CodeQualityConfigurator 0 } - if (!notEmptyDirs.empty) { - checkstyle.with { - description = "Run Checkstyle analysis for ${sourceSet.name} classes" - source = sourceSet.java.srcDirs - classpath = files("$buildDir/intermediates/classes/") - } + checkstyle.with { + description = "Run Checkstyle analysis for ${sourceSet.name} classes" + source = sourceSet.java.srcDirs + classpath = files("$buildDir/intermediates/classes/") } } checkstyle.mustRunAfter variant.javaCompile diff --git a/plugin/src/main/groovy/com/novoda/staticanalysis/internal/pmd/PmdConfigurator.groovy b/plugin/src/main/groovy/com/novoda/staticanalysis/internal/pmd/PmdConfigurator.groovy index e83e407..2bd79c8 100644 --- a/plugin/src/main/groovy/com/novoda/staticanalysis/internal/pmd/PmdConfigurator.groovy +++ b/plugin/src/main/groovy/com/novoda/staticanalysis/internal/pmd/PmdConfigurator.groovy @@ -51,13 +51,9 @@ class PmdConfigurator extends CodeQualityConfigurator { Pmd pmd = tasks.findByName(taskName) if (pmd == null) { pmd = tasks.create(taskName, Pmd) - def sourceDirs = sourceSet.java.srcDirs - def notEmptyDirs = sourceDirs.findAll { it.list()?.length > 0 } - if (!notEmptyDirs.empty) { - pmd.with { - description = "Run PMD analysis for ${sourceSet.name} classes" - source = sourceSet.java.srcDirs - } + pmd.with { + description = "Run PMD analysis for ${sourceSet.name} classes" + source = sourceSet.java.srcDirs } } pmd.mustRunAfter variant.javaCompile From 325268be89c652bdab1022233e7152d369c795d2 Mon Sep 17 00:00:00 2001 From: Antonio Bertucci Date: Tue, 31 Jan 2017 18:10:26 +0100 Subject: [PATCH 05/11] Rename internal method to clarify intention --- .../internal/CodeQualityConfigurator.groovy | 8 ++++---- .../internal/checkstyle/CheckstyleConfigurator.groovy | 2 +- .../internal/findbugs/FindbugsConfigurator.groovy | 2 +- .../staticanalysis/internal/pmd/PmdConfigurator.groovy | 2 +- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/plugin/src/main/groovy/com/novoda/staticanalysis/internal/CodeQualityConfigurator.groovy b/plugin/src/main/groovy/com/novoda/staticanalysis/internal/CodeQualityConfigurator.groovy index 17131d8..216cfb1 100644 --- a/plugin/src/main/groovy/com/novoda/staticanalysis/internal/CodeQualityConfigurator.groovy +++ b/plugin/src/main/groovy/com/novoda/staticanalysis/internal/CodeQualityConfigurator.groovy @@ -34,9 +34,9 @@ abstract class CodeQualityConfigurator task.group = 'verification' @@ -63,7 +63,7 @@ abstract class CodeQualityConfigurator getTaskClass() diff --git a/plugin/src/main/groovy/com/novoda/staticanalysis/internal/checkstyle/CheckstyleConfigurator.groovy b/plugin/src/main/groovy/com/novoda/staticanalysis/internal/checkstyle/CheckstyleConfigurator.groovy index 91f253c..081ea29 100644 --- a/plugin/src/main/groovy/com/novoda/staticanalysis/internal/checkstyle/CheckstyleConfigurator.groovy +++ b/plugin/src/main/groovy/com/novoda/staticanalysis/internal/checkstyle/CheckstyleConfigurator.groovy @@ -42,7 +42,7 @@ class CheckstyleConfigurator extends CodeQualityConfigurator variant.sourceSets.each { sourceSet -> diff --git a/plugin/src/main/groovy/com/novoda/staticanalysis/internal/findbugs/FindbugsConfigurator.groovy b/plugin/src/main/groovy/com/novoda/staticanalysis/internal/findbugs/FindbugsConfigurator.groovy index 219d150..a2854c1 100644 --- a/plugin/src/main/groovy/com/novoda/staticanalysis/internal/findbugs/FindbugsConfigurator.groovy +++ b/plugin/src/main/groovy/com/novoda/staticanalysis/internal/findbugs/FindbugsConfigurator.groovy @@ -45,7 +45,7 @@ class FindbugsConfigurator extends CodeQualityConfigurator FindBugs task = project.tasks.create("findbugs${variant.name.capitalize()}", QuietFindbugsPlugin.Task) task.with { diff --git a/plugin/src/main/groovy/com/novoda/staticanalysis/internal/pmd/PmdConfigurator.groovy b/plugin/src/main/groovy/com/novoda/staticanalysis/internal/pmd/PmdConfigurator.groovy index 2bd79c8..673912e 100644 --- a/plugin/src/main/groovy/com/novoda/staticanalysis/internal/pmd/PmdConfigurator.groovy +++ b/plugin/src/main/groovy/com/novoda/staticanalysis/internal/pmd/PmdConfigurator.groovy @@ -43,7 +43,7 @@ class PmdConfigurator extends CodeQualityConfigurator { } @Override - protected void configureAndroid(Object variants) { + protected void configureAndroidProject(Object variants) { project.with { variants.all { variant -> variant.sourceSets.each { sourceSet -> From b6fbc6cf29abda446001c7fa67fb18dfbdc0ed3e Mon Sep 17 00:00:00 2001 From: Antonio Bertucci Date: Wed, 1 Feb 2017 11:47:24 +0100 Subject: [PATCH 06/11] Rename local variable --- .../internal/checkstyle/CheckstyleConfigurator.groovy | 10 +++++----- .../staticanalysis/internal/pmd/PmdConfigurator.groovy | 10 +++++----- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/plugin/src/main/groovy/com/novoda/staticanalysis/internal/checkstyle/CheckstyleConfigurator.groovy b/plugin/src/main/groovy/com/novoda/staticanalysis/internal/checkstyle/CheckstyleConfigurator.groovy index 081ea29..1c90bc3 100644 --- a/plugin/src/main/groovy/com/novoda/staticanalysis/internal/checkstyle/CheckstyleConfigurator.groovy +++ b/plugin/src/main/groovy/com/novoda/staticanalysis/internal/checkstyle/CheckstyleConfigurator.groovy @@ -47,16 +47,16 @@ class CheckstyleConfigurator extends CodeQualityConfigurator variant.sourceSets.each { sourceSet -> def taskName = "checkstyle${sourceSet.name.capitalize()}" - Checkstyle checkstyle = tasks.findByName(taskName) - if (checkstyle == null) { - checkstyle = tasks.create(taskName, Checkstyle) - checkstyle.with { + Checkstyle task = tasks.findByName(taskName) + if (task == null) { + task = tasks.create(taskName, Checkstyle) + task.with { description = "Run Checkstyle analysis for ${sourceSet.name} classes" source = sourceSet.java.srcDirs classpath = files("$buildDir/intermediates/classes/") } } - checkstyle.mustRunAfter variant.javaCompile + task.mustRunAfter variant.javaCompile } } } diff --git a/plugin/src/main/groovy/com/novoda/staticanalysis/internal/pmd/PmdConfigurator.groovy b/plugin/src/main/groovy/com/novoda/staticanalysis/internal/pmd/PmdConfigurator.groovy index 673912e..19d2eae 100644 --- a/plugin/src/main/groovy/com/novoda/staticanalysis/internal/pmd/PmdConfigurator.groovy +++ b/plugin/src/main/groovy/com/novoda/staticanalysis/internal/pmd/PmdConfigurator.groovy @@ -48,15 +48,15 @@ class PmdConfigurator extends CodeQualityConfigurator { variants.all { variant -> variant.sourceSets.each { sourceSet -> def taskName = "pmd${sourceSet.name.capitalize()}" - Pmd pmd = tasks.findByName(taskName) - if (pmd == null) { - pmd = tasks.create(taskName, Pmd) - pmd.with { + Pmd task = tasks.findByName(taskName) + if (task == null) { + task = tasks.create(taskName, Pmd) + task.with { description = "Run PMD analysis for ${sourceSet.name} classes" source = sourceSet.java.srcDirs } } - pmd.mustRunAfter variant.javaCompile + task.mustRunAfter variant.javaCompile } } } From b7e7017eb54e68e5fa2528f1e8a6eabf3c7f9d90 Mon Sep 17 00:00:00 2001 From: Antonio Bertucci Date: Wed, 1 Feb 2017 14:10:55 +0100 Subject: [PATCH 07/11] Introduce dedicated method to configure java projects --- .../staticanalysis/internal/CodeQualityConfigurator.groovy | 7 ++++++- .../internal/checkstyle/CheckstyleConfigurator.groovy | 1 + .../internal/findbugs/FindbugsConfigurator.groovy | 4 ++-- .../staticanalysis/internal/pmd/PmdConfigurator.groovy | 1 + 4 files changed, 10 insertions(+), 3 deletions(-) diff --git a/plugin/src/main/groovy/com/novoda/staticanalysis/internal/CodeQualityConfigurator.groovy b/plugin/src/main/groovy/com/novoda/staticanalysis/internal/CodeQualityConfigurator.groovy index 216cfb1..8222e80 100644 --- a/plugin/src/main/groovy/com/novoda/staticanalysis/internal/CodeQualityConfigurator.groovy +++ b/plugin/src/main/groovy/com/novoda/staticanalysis/internal/CodeQualityConfigurator.groovy @@ -37,10 +37,11 @@ abstract class CodeQualityConfigurator task.group = 'verification' - sourceFilter.applyTo(task) configureReportEvaluation(task) } } @@ -65,6 +66,10 @@ abstract class CodeQualityConfigurator sourceFilter.applyTo(task) } + } + protected abstract Class getTaskClass() protected abstract void configureReportEvaluation(T task) diff --git a/plugin/src/main/groovy/com/novoda/staticanalysis/internal/checkstyle/CheckstyleConfigurator.groovy b/plugin/src/main/groovy/com/novoda/staticanalysis/internal/checkstyle/CheckstyleConfigurator.groovy index 1c90bc3..41fb479 100644 --- a/plugin/src/main/groovy/com/novoda/staticanalysis/internal/checkstyle/CheckstyleConfigurator.groovy +++ b/plugin/src/main/groovy/com/novoda/staticanalysis/internal/checkstyle/CheckstyleConfigurator.groovy @@ -56,6 +56,7 @@ class CheckstyleConfigurator extends CodeQualityConfigurator FindBugs task = project.tasks.create("findbugs${variant.name.capitalize()}", QuietFindbugsPlugin.Task) task.with { - group = "verification" description = "Run FindBugs analysis for ${variant.name} classes" source = variant.sourceSets.java.srcDirs.collect { it.path }.flatten() classes = project.fileTree(variant.javaCompile.destinationDir) classpath = variant.javaCompile.classpath - dependsOn variant.javaCompile } + sourceFilter.applyTo(task) + task.dependsOn variant.javaCompile } } diff --git a/plugin/src/main/groovy/com/novoda/staticanalysis/internal/pmd/PmdConfigurator.groovy b/plugin/src/main/groovy/com/novoda/staticanalysis/internal/pmd/PmdConfigurator.groovy index 19d2eae..e028e78 100644 --- a/plugin/src/main/groovy/com/novoda/staticanalysis/internal/pmd/PmdConfigurator.groovy +++ b/plugin/src/main/groovy/com/novoda/staticanalysis/internal/pmd/PmdConfigurator.groovy @@ -56,6 +56,7 @@ class PmdConfigurator extends CodeQualityConfigurator { source = sourceSet.java.srcDirs } } + sourceFilter.applyTo(task) task.mustRunAfter variant.javaCompile } } From 6696338c19626d5de81df1dae0972905f14f1659 Mon Sep 17 00:00:00 2001 From: Antonio Bertucci Date: Fri, 3 Feb 2017 18:00:26 +0100 Subject: [PATCH 08/11] Create include patterns for classes from filtered source files --- .../findbugs/FindbugsConfigurator.groovy | 59 ++++++++++++++++++- .../findbugs/FindbugsIntegrationTest.groovy | 4 +- 2 files changed, 59 insertions(+), 4 deletions(-) diff --git a/plugin/src/main/groovy/com/novoda/staticanalysis/internal/findbugs/FindbugsConfigurator.groovy b/plugin/src/main/groovy/com/novoda/staticanalysis/internal/findbugs/FindbugsConfigurator.groovy index 2282e77..3725d86 100644 --- a/plugin/src/main/groovy/com/novoda/staticanalysis/internal/findbugs/FindbugsConfigurator.groovy +++ b/plugin/src/main/groovy/com/novoda/staticanalysis/internal/findbugs/FindbugsConfigurator.groovy @@ -4,10 +4,15 @@ import com.novoda.staticanalysis.EvaluateViolationsTask import com.novoda.staticanalysis.internal.CodeQualityConfigurator import org.gradle.api.Action import org.gradle.api.Project +import org.gradle.api.file.ConfigurableFileTree +import org.gradle.api.file.FileCollection import org.gradle.api.plugins.quality.FindBugs import org.gradle.api.plugins.quality.FindBugsExtension +import org.gradle.api.tasks.SourceSet import org.gradle.internal.logging.ConsoleRenderer +import java.nio.file.Path + class FindbugsConfigurator extends CodeQualityConfigurator { FindbugsConfigurator(Project project, EvaluateViolationsTask evaluateViolations) { @@ -48,17 +53,67 @@ class FindbugsConfigurator extends CodeQualityConfigurator FindBugs task = project.tasks.create("findbugs${variant.name.capitalize()}", QuietFindbugsPlugin.Task) + List androidSourceDirs = variant.sourceSets.collect { it.javaDirectories }.flatten() task.with { description = "Run FindBugs analysis for ${variant.name} classes" - source = variant.sourceSets.java.srcDirs.collect { it.path }.flatten() - classes = project.fileTree(variant.javaCompile.destinationDir) + source = androidSourceDirs classpath = variant.javaCompile.classpath } sourceFilter.applyTo(task) + task.conventionMapping.map("classes", { + List includes = createIncludesPatternsFrom(task.source, androidSourceDirs) + project.fileTree(variant.javaCompile.destinationDir).include(includes) + }.memoize()); task.dependsOn variant.javaCompile } } + @Override + protected void configureJavaProject() { + project.sourceSets.each { SourceSet sourceSet -> + String taskName = sourceSet.getTaskName(toolName, null) + FindBugs task = project.tasks.findByName(taskName) + if (task != null) { + sourceFilter.applyTo(task) + task.conventionMapping.map("classes", { + List sourceDirs = sourceSet.allJava.srcDirs.findAll { it.exists() }.toList() + List includes = createIncludesPatternsFrom(task.source, sourceDirs) + createClassesTreeFrom(sourceSet).include(includes) + }.memoize()); + } + } + } + + private static List createIncludesPatternsFrom(FileCollection sourceFiles, List sourceDirs) { + List includedSourceFiles = sourceFiles.matching { '**/*.java' }.files.collect { it.toPath() } + createIncludePatterns(includedSourceFiles, sourceDirs.collect { it.toPath() }) + } + + private static List createIncludePatterns(List includedSourceFiles, List sourceDirs) { + createRelativePaths(includedSourceFiles, sourceDirs) + .collect { Path relativePath -> (relativePath as String) - '.java' + '*' } + .each { println "[include: $it]" } + } + + private static List createRelativePaths(List includedSourceFiles, List sourceDirs) { + includedSourceFiles.collect { Path sourceFile -> + sourceDirs + .findAll { Path sourceDir -> sourceFile.startsWith(sourceDir) } + .collect { Path sourceDir -> sourceDir.relativize(sourceFile) } + } + .flatten() + } + + /** + * The simple "classes = sourceSet.output" may lead to non-existing resources directory + * being passed to FindBugs Ant task, resulting in an error + * */ + private ConfigurableFileTree createClassesTreeFrom(SourceSet sourceSet) { + project.fileTree(sourceSet.output.classesDir, { + it.builtBy(sourceSet.output) + }) + } + @Override protected void configureReportEvaluation(FindBugs findBugs) { findBugs.ignoreFailures = true diff --git a/plugin/src/test/groovy/com/novoda/staticanalysis/internal/findbugs/FindbugsIntegrationTest.groovy b/plugin/src/test/groovy/com/novoda/staticanalysis/internal/findbugs/FindbugsIntegrationTest.groovy index 6f2979a..81ca95d 100644 --- a/plugin/src/test/groovy/com/novoda/staticanalysis/internal/findbugs/FindbugsIntegrationTest.groovy +++ b/plugin/src/test/groovy/com/novoda/staticanalysis/internal/findbugs/FindbugsIntegrationTest.groovy @@ -134,8 +134,8 @@ class FindbugsIntegrationTest { @Test public void shouldNotFailBuildWhenFindbugsConfiguredToExcludePattern() { TestProject.Result result = projectRule.newProject() - .withSourceSet('debug', SOURCES_WITH_LOW_VIOLATION, SOURCES_WITH_MEDIUM_VIOLATION) - .withSourceSet('release', SOURCES_WITH_HIGH_VIOLATION) + .withSourceSet('debug', SOURCES_WITH_LOW_VIOLATION) + .withSourceSet('release', SOURCES_WITH_HIGH_VIOLATION, SOURCES_WITH_MEDIUM_VIOLATION) .withPenalty('''{ maxErrors = 0 maxWarnings = 10 From 939a13f78568ebebb23966c36780ae7cc70e975d Mon Sep 17 00:00:00 2001 From: Antonio Bertucci Date: Fri, 3 Feb 2017 18:10:09 +0100 Subject: [PATCH 09/11] Remove debug log --- .../staticanalysis/internal/findbugs/FindbugsConfigurator.groovy | 1 - 1 file changed, 1 deletion(-) diff --git a/plugin/src/main/groovy/com/novoda/staticanalysis/internal/findbugs/FindbugsConfigurator.groovy b/plugin/src/main/groovy/com/novoda/staticanalysis/internal/findbugs/FindbugsConfigurator.groovy index 3725d86..2fbaef6 100644 --- a/plugin/src/main/groovy/com/novoda/staticanalysis/internal/findbugs/FindbugsConfigurator.groovy +++ b/plugin/src/main/groovy/com/novoda/staticanalysis/internal/findbugs/FindbugsConfigurator.groovy @@ -92,7 +92,6 @@ class FindbugsConfigurator extends CodeQualityConfigurator createIncludePatterns(List includedSourceFiles, List sourceDirs) { createRelativePaths(includedSourceFiles, sourceDirs) .collect { Path relativePath -> (relativePath as String) - '.java' + '*' } - .each { println "[include: $it]" } } private static List createRelativePaths(List includedSourceFiles, List sourceDirs) { From 8ea69ae6dab502ce8497991051e6f0f4477c3ac4 Mon Sep 17 00:00:00 2001 From: Antonio Bertucci Date: Fri, 3 Feb 2017 18:16:47 +0100 Subject: [PATCH 10/11] Use more significative test checking package and inner class --- .../findbugs/high/HighPriorityViolator.java | 9 --------- .../com/novoda/test/HighPriorityViolator.java | 15 +++++++++++++++ .../findbugs/FindbugsIntegrationTest.groovy | 2 +- 3 files changed, 16 insertions(+), 10 deletions(-) delete mode 100644 plugin/src/test/fixtures/findbugs/high/HighPriorityViolator.java create mode 100644 plugin/src/test/fixtures/findbugs/high/com/novoda/test/HighPriorityViolator.java diff --git a/plugin/src/test/fixtures/findbugs/high/HighPriorityViolator.java b/plugin/src/test/fixtures/findbugs/high/HighPriorityViolator.java deleted file mode 100644 index 7c24bd7..0000000 --- a/plugin/src/test/fixtures/findbugs/high/HighPriorityViolator.java +++ /dev/null @@ -1,9 +0,0 @@ -public class HighPriorityViolator { - - public void impossibleCast() { - final Object doubleValue = Double.valueOf(1.0); - final Long value = (Long) doubleValue; - System.out.println(" - " + value); - } - -} diff --git a/plugin/src/test/fixtures/findbugs/high/com/novoda/test/HighPriorityViolator.java b/plugin/src/test/fixtures/findbugs/high/com/novoda/test/HighPriorityViolator.java new file mode 100644 index 0000000..66f6cfa --- /dev/null +++ b/plugin/src/test/fixtures/findbugs/high/com/novoda/test/HighPriorityViolator.java @@ -0,0 +1,15 @@ +package com.novoda.test; + +public class HighPriorityViolator { + + public static class Internal { + + public void impossibleCast() { + final Object doubleValue = Double.valueOf(1.0); + final Long value = (Long) doubleValue; + System.out.println(" - " + value); + } + + } + +} diff --git a/plugin/src/test/groovy/com/novoda/staticanalysis/internal/findbugs/FindbugsIntegrationTest.groovy b/plugin/src/test/groovy/com/novoda/staticanalysis/internal/findbugs/FindbugsIntegrationTest.groovy index 81ca95d..12ba408 100644 --- a/plugin/src/test/groovy/com/novoda/staticanalysis/internal/findbugs/FindbugsIntegrationTest.groovy +++ b/plugin/src/test/groovy/com/novoda/staticanalysis/internal/findbugs/FindbugsIntegrationTest.groovy @@ -140,7 +140,7 @@ class FindbugsIntegrationTest { maxErrors = 0 maxWarnings = 10 }''') - .withFindbugs('findbugs { exclude "HighPriorityViolator.java" }') + .withFindbugs('findbugs { exclude "com/novoda/test/HighPriorityViolator.java" }') .build('check') assertThat(result.logs).doesNotContainLimitExceeded() From 02ce6142edcb07dbcc4b761a6fb9aef8e011cddf Mon Sep 17 00:00:00 2001 From: Antonio Bertucci Date: Wed, 8 Feb 2017 10:24:53 +0100 Subject: [PATCH 11/11] Inlined internal static method --- .../internal/findbugs/FindbugsConfigurator.groovy | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/plugin/src/main/groovy/com/novoda/staticanalysis/internal/findbugs/FindbugsConfigurator.groovy b/plugin/src/main/groovy/com/novoda/staticanalysis/internal/findbugs/FindbugsConfigurator.groovy index 2fbaef6..4896b27 100644 --- a/plugin/src/main/groovy/com/novoda/staticanalysis/internal/findbugs/FindbugsConfigurator.groovy +++ b/plugin/src/main/groovy/com/novoda/staticanalysis/internal/findbugs/FindbugsConfigurator.groovy @@ -61,7 +61,7 @@ class FindbugsConfigurator extends CodeQualityConfigurator includes = createIncludesPatternsFrom(task.source, androidSourceDirs) + List includes = createIncludePatterns(task.source, androidSourceDirs) project.fileTree(variant.javaCompile.destinationDir).include(includes) }.memoize()); task.dependsOn variant.javaCompile @@ -77,20 +77,17 @@ class FindbugsConfigurator extends CodeQualityConfigurator sourceDirs = sourceSet.allJava.srcDirs.findAll { it.exists() }.toList() - List includes = createIncludesPatternsFrom(task.source, sourceDirs) + List includes = createIncludePatterns(task.source, sourceDirs) createClassesTreeFrom(sourceSet).include(includes) }.memoize()); } } } - private static List createIncludesPatternsFrom(FileCollection sourceFiles, List sourceDirs) { - List includedSourceFiles = sourceFiles.matching { '**/*.java' }.files.collect { it.toPath() } - createIncludePatterns(includedSourceFiles, sourceDirs.collect { it.toPath() }) - } - - private static List createIncludePatterns(List includedSourceFiles, List sourceDirs) { - createRelativePaths(includedSourceFiles, sourceDirs) + private static List createIncludePatterns(FileCollection sourceFiles, List sourceDirs) { + List includedSourceFilesPaths = sourceFiles.matching { '**/*.java' }.files.collect { it.toPath() } + List sourceDirsPaths = sourceDirs.collect { it.toPath() } + createRelativePaths(includedSourceFilesPaths, sourceDirsPaths) .collect { Path relativePath -> (relativePath as String) - '.java' + '*' } }