diff options
author | Tor Norbye <tnorbye@google.com> | 2011-12-13 12:00:03 -0800 |
---|---|---|
committer | Tor Norbye <tnorbye@google.com> | 2011-12-13 12:01:53 -0800 |
commit | 83c89e587ae8cbd57cec06a9cb6979c93d7eba5e (patch) | |
tree | f48cbf42a55e4e03a7569da84b228c5da6e65863 | |
parent | daa5a5c9200708b09983bf3852b94bb8ebab1e27 (diff) | |
download | sdk-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
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> |