From a55067435f57c7a25f416ecde509d790a5e0799e Mon Sep 17 00:00:00 2001 From: Tor Norbye Date: Fri, 20 Jul 2012 16:24:07 -0700 Subject: 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 --- anttasks/src/anttasks.properties | 1 + anttasks/src/com/android/ant/LintExecTask.java | 86 ++++++++++++++++++++++++++ 2 files changed, 87 insertions(+) create mode 100644 anttasks/src/com/android/ant/LintExecTask.java (limited to 'anttasks') 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(); + } +} -- cgit v1.1