aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lint/libs/lint_checks/src/com/android/tools/lint/checks/UnusedResourceDetector.java9
-rw-r--r--lint/libs/lint_checks/tests/src/com/android/tools/lint/checks/UnusedResourceDetectorTest.java11
-rw-r--r--lint/libs/lint_checks/tests/src/com/android/tools/lint/checks/data/res/layout/customattrlayout.xml7
-rw-r--r--lint/libs/lint_checks/tests/src/com/android/tools/lint/checks/data/res/values/customattr.xml6
-rw-r--r--lint/libs/lint_checks/tests/src/com/android/tools/lint/checks/data/unusedR.java.txt14
5 files changed, 46 insertions, 1 deletions
diff --git a/lint/libs/lint_checks/src/com/android/tools/lint/checks/UnusedResourceDetector.java b/lint/libs/lint_checks/src/com/android/tools/lint/checks/UnusedResourceDetector.java
index 5f2167d..13616b7 100644
--- a/lint/libs/lint_checks/src/com/android/tools/lint/checks/UnusedResourceDetector.java
+++ b/lint/libs/lint_checks/src/com/android/tools/lint/checks/UnusedResourceDetector.java
@@ -16,6 +16,7 @@
package com.android.tools.lint.checks;
+import static com.android.tools.lint.detector.api.LintConstants.ANDROID_URI;
import static com.android.tools.lint.detector.api.LintConstants.ATTR_NAME;
import static com.android.tools.lint.detector.api.LintConstants.DOT_JAVA;
import static com.android.tools.lint.detector.api.LintConstants.DOT_PNG;
@@ -339,7 +340,8 @@ public class UnusedResourceDetector extends ResourceXmlDetector implements Detec
// Remove styles: they may be used
List<String> styles = new ArrayList<String>();
for (String resource : unused) {
- if (resource.startsWith("R.style.")) { //$NON-NLS-1$
+ // R.style.x, R.styleable.x
+ if (resource.startsWith("R.style")) { //$NON-NLS-1$
styles.add(resource);
}
}
@@ -507,6 +509,11 @@ public class UnusedResourceDetector extends ResourceXmlDetector implements Detec
mReferences.add(R_PREFIX + RESOURCE_CLZ_ATTR + '.'
+ value.substring(ATTR_REF_PREFIX.length()));
}
+
+ if (attribute.getNamespaceURI() != null
+ && !ANDROID_URI.equals(attribute.getNamespaceURI())) {
+ mReferences.add(R_PREFIX + RESOURCE_CLZ_ATTR + '.' + attribute.getLocalName());
+ }
}
@Override
diff --git a/lint/libs/lint_checks/tests/src/com/android/tools/lint/checks/UnusedResourceDetectorTest.java b/lint/libs/lint_checks/tests/src/com/android/tools/lint/checks/UnusedResourceDetectorTest.java
index 7213c5d..e9e6f05 100644
--- a/lint/libs/lint_checks/tests/src/com/android/tools/lint/checks/UnusedResourceDetectorTest.java
+++ b/lint/libs/lint_checks/tests/src/com/android/tools/lint/checks/UnusedResourceDetectorTest.java
@@ -89,4 +89,15 @@ public class UnusedResourceDetectorTest extends AbstractCheckTest {
"AndroidManifest.xml",
"res/values/arrayusage.xml"));
}
+
+ public void testAttrs() throws Exception {
+ assertEquals(
+ "customattrlayout.xml: Warning: The resource R.layout.customattrlayout appears to be unused",
+
+ lintProject(
+ "res/values/customattr.xml",
+ "res/layout/customattrlayout.xml",
+ "unusedR.java.txt=>gen/my/pkg/R.java",
+ "AndroidManifest.xml"));
+ }
}
diff --git a/lint/libs/lint_checks/tests/src/com/android/tools/lint/checks/data/res/layout/customattrlayout.xml b/lint/libs/lint_checks/tests/src/com/android/tools/lint/checks/data/res/layout/customattrlayout.xml
new file mode 100644
index 0000000..b4c49f0
--- /dev/null
+++ b/lint/libs/lint_checks/tests/src/com/android/tools/lint/checks/data/res/layout/customattrlayout.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<foo.bar.ContentFrame
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:foobar="http://schemas.android.com/apk/res/foo.bar"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ foobar:contentId="@+id/test" />
diff --git a/lint/libs/lint_checks/tests/src/com/android/tools/lint/checks/data/res/values/customattr.xml b/lint/libs/lint_checks/tests/src/com/android/tools/lint/checks/data/res/values/customattr.xml
new file mode 100644
index 0000000..e1ca2d4
--- /dev/null
+++ b/lint/libs/lint_checks/tests/src/com/android/tools/lint/checks/data/res/values/customattr.xml
@@ -0,0 +1,6 @@
+<resources>
+ <declare-styleable name="ContentFrame">
+ <attr name="content" format="reference" />
+ <attr name="contentId" format="reference" />
+ </declare-styleable>
+</resources>
diff --git a/lint/libs/lint_checks/tests/src/com/android/tools/lint/checks/data/unusedR.java.txt b/lint/libs/lint_checks/tests/src/com/android/tools/lint/checks/data/unusedR.java.txt
new file mode 100644
index 0000000..3eae431
--- /dev/null
+++ b/lint/libs/lint_checks/tests/src/com/android/tools/lint/checks/data/unusedR.java.txt
@@ -0,0 +1,14 @@
+/* AUTO-GENERATED FILE. DO NOT MODIFY.
+ *
+ * This class was automatically generated by the
+ * aapt tool from the resource data it found. It
+ * should not be modified by hand.
+ */
+
+package my.pkg;
+
+public final class R {
+ public static final class attr {
+ public static final int contentId=0x7f020000;
+ }
+}