aboutsummaryrefslogtreecommitdiffstats
path: root/anttasks
diff options
context:
space:
mode:
authorTor Norbye <tnorbye@google.com>2012-07-20 16:24:07 -0700
committerTor Norbye <tnorbye@google.com>2012-07-23 15:36:02 -0700
commita55067435f57c7a25f416ecde509d790a5e0799e (patch)
treed321798bed2dda4a85f31789aa680c47dddebac5 /anttasks
parent08eecafc50dceff0e7eb6960763c2b6ca5601524 (diff)
downloadsdk-a55067435f57c7a25f416ecde509d790a5e0799e.zip
sdk-a55067435f57c7a25f416ecde509d790a5e0799e.tar.gz
sdk-a55067435f57c7a25f416ecde509d790a5e0799e.tar.bz2
Add lint target for ant
Running "ant lint" will now run lint on the project, and dump out the errors to the console as well as also export the errors to lint.xml and lint.html int the bin/ directory. This changeset also modifies the lint CLI to allow multiple simultaneous result reporters - so you don't have to run lint twice in order to get both an .xml and an .html report for example (which is useful when you're running lint on a continuous integration server, and you want the .xml file for the lint plugin trend graph and the html file as a user readable report to click through to from the build page.) Change-Id: Idf8f3f5de0857eb9e7180267a066ae933640682d
Diffstat (limited to 'anttasks')
-rw-r--r--anttasks/src/anttasks.properties1
-rw-r--r--anttasks/src/com/android/ant/LintExecTask.java86
2 files changed, 87 insertions, 0 deletions
diff --git a/anttasks/src/anttasks.properties b/anttasks/src/anttasks.properties
index 04047e5..78b6513 100644
--- a/anttasks/src/anttasks.properties
+++ b/anttasks/src/anttasks.properties
@@ -18,3 +18,4 @@ zipalign: com.android.ant.ZipAlignTask
xpath: com.android.ant.XPathTask
if: com.android.ant.IfElseTask
propertybyreplace: com.android.ant.PropertyByReplaceTask
+lint: com.android.ant.LintExecTask
diff --git a/anttasks/src/com/android/ant/LintExecTask.java b/anttasks/src/com/android/ant/LintExecTask.java
new file mode 100644
index 0000000..64a6c00
--- /dev/null
+++ b/anttasks/src/com/android/ant/LintExecTask.java
@@ -0,0 +1,86 @@
+/*
+ * Copyright (C) 2012 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.ant;
+
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.taskdefs.ExecTask;
+import org.apache.tools.ant.types.Path;
+
+/**
+ * Custom task to execute lint
+ */
+public class LintExecTask extends ExecTask {
+
+ private String mExecutable;
+ private String mHtml;
+ private String mXml;
+
+ /**
+ * Sets the value of the "executable" attribute.
+ * @param executable the value.
+ */
+ public void setExecutable(Path executable) {
+ mExecutable = TaskHelper.checkSinglePath("executable", executable);
+ }
+
+ /**
+ * Sets the value of the "html" attribute: a path to a file or directory name
+ * where the HTML report should be written.
+ *
+ * @param html path to the html report
+ */
+ public void setHtml(Path html) {
+ mHtml = TaskHelper.checkSinglePath("html", html);
+ }
+
+ /**
+ * Sets the value of the "xml" attribute: a path to a file or directory name
+ * where the XML report should be written.
+ *
+ * @param xml path to the xml report
+ */
+ public void setXml(Path xml) {
+ mXml = TaskHelper.checkSinglePath("xml", xml);
+ }
+
+ @Override
+ public void execute() throws BuildException {
+
+ ExecTask task = new ExecTask();
+ task.setProject(getProject());
+ task.setOwningTarget(getOwningTarget());
+ task.setExecutable(mExecutable);
+ task.setTaskName("lint");
+ task.setFailonerror(true);
+
+ task.createArg().setValue("--text");
+ task.createArg().setValue("stdout");
+
+ if (mHtml != null) {
+ task.createArg().setValue("--html");
+ task.createArg().setValue(mHtml);
+ }
+
+ if (mXml != null) {
+ task.createArg().setValue("--xml");
+ task.createArg().setValue(mXml);
+ }
+
+ task.createArg().setValue(getProject().getBaseDir().getAbsolutePath());
+ task.execute();
+ }
+}