aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTor Norbye <tnorbye@google.com>2011-12-13 12:00:03 -0800
committerTor Norbye <tnorbye@google.com>2011-12-13 12:01:53 -0800
commit83c89e587ae8cbd57cec06a9cb6979c93d7eba5e (patch)
treef48cbf42a55e4e03a7569da84b228c5da6e65863
parentdaa5a5c9200708b09983bf3852b94bb8ebab1e27 (diff)
downloadsdk-83c89e587ae8cbd57cec06a9cb6979c93d7eba5e.zip
sdk-83c89e587ae8cbd57cec06a9cb6979c93d7eba5e.tar.gz
sdk-83c89e587ae8cbd57cec06a9cb6979c93d7eba5e.tar.bz2
Fix unused resource check to handle @string references in arrays
This fixes 22850: lint incorrectly reports resources as unused. Change-Id: I4dc2e82319fcda8c59754911a67f871d5aa00fbc
-rw-r--r--lint/libs/lint_checks/src/com/android/tools/lint/checks/UnusedResourceDetector.java10
-rw-r--r--lint/libs/lint_checks/tests/src/com/android/tools/lint/checks/UnusedResourceDetectorTest.java9
-rw-r--r--lint/libs/lint_checks/tests/src/com/android/tools/lint/checks/data/res/values/arrayusage.xml6
3 files changed, 23 insertions, 2 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 94ee772..5f2167d 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
@@ -24,8 +24,10 @@ import static com.android.tools.lint.detector.api.LintConstants.RESOURCE_CLR_STY
import static com.android.tools.lint.detector.api.LintConstants.RESOURCE_CLZ_ARRAY;
import static com.android.tools.lint.detector.api.LintConstants.RESOURCE_CLZ_ATTR;
import static com.android.tools.lint.detector.api.LintConstants.RESOURCE_CLZ_ID;
+import static com.android.tools.lint.detector.api.LintConstants.TAG_ARRAY;
import static com.android.tools.lint.detector.api.LintConstants.TAG_ITEM;
import static com.android.tools.lint.detector.api.LintConstants.TAG_RESOURCES;
+import static com.android.tools.lint.detector.api.LintConstants.TAG_STRING_ARRAY;
import static com.android.tools.lint.detector.api.LintConstants.TAG_STYLE;
import com.android.resources.ResourceType;
@@ -420,7 +422,9 @@ public class UnusedResourceDetector extends ResourceXmlDetector implements Detec
public Collection<String> getApplicableElements() {
return Arrays.asList(
TAG_STYLE,
- TAG_RESOURCES
+ TAG_RESOURCES,
+ TAG_ARRAY,
+ TAG_STRING_ARRAY
);
}
@@ -450,7 +454,9 @@ public class UnusedResourceDetector extends ResourceXmlDetector implements Detec
}
}
} else {
- assert TAG_STYLE.equals(element.getTagName());
+ assert TAG_STYLE.equals(element.getTagName())
+ || TAG_ARRAY.equals(element.getTagName())
+ || TAG_STRING_ARRAY.equals(element.getTagName());
// Look for ?attr/ and @dimen/foo etc references in the item children
for (Element item : LintUtils.getChildren(element)) {
NodeList childNodes = item.getChildNodes();
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 96590ba..7213c5d 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
@@ -80,4 +80,13 @@ public class UnusedResourceDetectorTest extends AbstractCheckTest {
"AndroidManifest.xml",
"res/layout/accessibility.xml"));
}
+
+ public void testArrayReference() throws Exception {
+ assertEquals(
+ "arrayusage.xml:3: Warning: The resource R.array.my_array appears to be unused",
+
+ lintProject(
+ "AndroidManifest.xml",
+ "res/values/arrayusage.xml"));
+ }
}
diff --git a/lint/libs/lint_checks/tests/src/com/android/tools/lint/checks/data/res/values/arrayusage.xml b/lint/libs/lint_checks/tests/src/com/android/tools/lint/checks/data/res/values/arrayusage.xml
new file mode 100644
index 0000000..0b890f7
--- /dev/null
+++ b/lint/libs/lint_checks/tests/src/com/android/tools/lint/checks/data/res/values/arrayusage.xml
@@ -0,0 +1,6 @@
+<resources>
+<string name="my_item">An Item</string>
+<string-array name="my_array">
+ <item>@string/my_item</item>
+</string-array>
+</resources>