diff options
author | Tor Norbye <tnorbye@google.com> | 2013-11-27 20:37:29 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2013-11-27 20:37:30 +0000 |
commit | 7f7b1b0683bff6e44fd2d6c5137731a638bf0f51 (patch) | |
tree | 90b6c02ba0555d0a2e889e367536bc53675fb193 | |
parent | c2de5275272e8ce51f09fc7dc805c9223f076586 (diff) | |
parent | 598903386ee3d8a37af584f5caef615cc38d33dc (diff) | |
download | build-7f7b1b0683bff6e44fd2d6c5137731a638bf0f51.tar.gz |
Merge "Provide Gradle model to lint task"
4 files changed, 60 insertions, 10 deletions
diff --git a/gradle/src/main/groovy/com/android/build/gradle/BasePlugin.groovy b/gradle/src/main/groovy/com/android/build/gradle/BasePlugin.groovy index ab56022..f3d3fbe 100644 --- a/gradle/src/main/groovy/com/android/build/gradle/BasePlugin.groovy +++ b/gradle/src/main/groovy/com/android/build/gradle/BasePlugin.groovy @@ -1867,4 +1867,8 @@ public abstract class BasePlugin { Attributes attr = manifest.getMainAttributes(); return attr.getValue("Plugin-Version"); } + + public Project getProject() { + return project + } } diff --git a/gradle/src/main/groovy/com/android/build/gradle/internal/LintGradleClient.java b/gradle/src/main/groovy/com/android/build/gradle/internal/LintGradleClient.java index 6833ffc..6ebb37f 100644 --- a/gradle/src/main/groovy/com/android/build/gradle/internal/LintGradleClient.java +++ b/gradle/src/main/groovy/com/android/build/gradle/internal/LintGradleClient.java @@ -20,6 +20,7 @@ import com.google.common.collect.Lists; import com.android.annotations.NonNull; import com.android.annotations.Nullable; +import com.android.build.gradle.BasePlugin; import com.android.tools.lint.LintCliClient; import com.android.tools.lint.LintCliFlags; import com.android.tools.lint.detector.api.Project; @@ -29,11 +30,16 @@ import java.util.List; public class LintGradleClient extends LintCliClient { private List<File> mCustomRules = Lists.newArrayList(); - private File mySdkHome; + private BasePlugin mPlugin; - public LintGradleClient(@NonNull LintCliFlags flags, @Nullable File sdkHome) { + public LintGradleClient(@NonNull LintCliFlags flags, @NonNull BasePlugin plugin) { super(flags); - mySdkHome = sdkHome; + mPlugin = plugin; + } + + @NonNull + public BasePlugin getPlugin() { + return mPlugin; } public void setCustomRules(List<File> customRules) { @@ -50,14 +56,11 @@ public class LintGradleClient extends LintCliClient { return new LintGradleProject(this, dir, referenceDir); } - public void setSdkHome(File home) { - mySdkHome = home; - } - @Override public File getSdkHome() { - if (mySdkHome != null) { - return mySdkHome; + File sdkHome = mPlugin.getSdkDirectory(); + if (sdkHome != null) { + return sdkHome; } return super.getSdkHome(); } diff --git a/gradle/src/main/groovy/com/android/build/gradle/internal/LintGradleProject.java b/gradle/src/main/groovy/com/android/build/gradle/internal/LintGradleProject.java index e57113a..6724268 100644 --- a/gradle/src/main/groovy/com/android/build/gradle/internal/LintGradleProject.java +++ b/gradle/src/main/groovy/com/android/build/gradle/internal/LintGradleProject.java @@ -1,6 +1,12 @@ package com.android.build.gradle.internal; import com.android.annotations.NonNull; +import com.android.build.gradle.BasePlugin; +import com.android.build.gradle.LibraryPlugin; +import com.android.build.gradle.internal.model.ModelBuilder; +import com.android.builder.model.AndroidLibrary; +import com.android.builder.model.AndroidProject; +import com.android.builder.model.Variant; import com.android.tools.lint.client.api.LintClient; import com.android.tools.lint.detector.api.Project; @@ -8,6 +14,8 @@ import java.io.File; import java.util.Collections; public class LintGradleProject extends Project { + private AndroidProject mProject; + LintGradleProject( @NonNull LintClient client, @NonNull File dir, @@ -23,4 +31,39 @@ public class LintGradleProject extends Project { protected void initialize() { // Deliberately not calling super; that code is for ADT compatibility } + + @Override + public boolean isGradleProject() { + return true; + } + + @Override + public boolean isLibrary() { + LintGradleClient client = (LintGradleClient) mClient; + BasePlugin plugin = client.getPlugin(); + return plugin instanceof LibraryPlugin; + } + + @Override + public AndroidProject getGradleProjectModel() { + if (mProject == null) { + LintGradleClient client = (LintGradleClient) mClient; + BasePlugin plugin = client.getPlugin(); + String modelName = AndroidProject.class.getName(); + ModelBuilder builder = new ModelBuilder(); + mProject = (AndroidProject) builder.buildAll(modelName, plugin.getProject()); + } + + return mProject; + } + + @Override + public AndroidLibrary getGradleLibraryModel() { + return null; + } + + @Override + public Variant getCurrentVariant() { + return null; + } } diff --git a/gradle/src/main/groovy/com/android/build/gradle/tasks/Lint.groovy b/gradle/src/main/groovy/com/android/build/gradle/tasks/Lint.groovy index 2c756ce..d91f5b3 100644 --- a/gradle/src/main/groovy/com/android/build/gradle/tasks/Lint.groovy +++ b/gradle/src/main/groovy/com/android/build/gradle/tasks/Lint.groovy @@ -101,7 +101,7 @@ public class Lint extends DefaultTask { public void lint() { IssueRegistry registry = new BuiltinIssueRegistry() LintCliFlags flags = new LintCliFlags() - LintGradleClient client = new LintGradleClient(flags, mPlugin.getSdkDirectory()) + LintGradleClient client = new LintGradleClient(flags, mPlugin) // Configure Reporters |