summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTor Norbye <tnorbye@google.com>2014-09-23 00:56:36 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2014-09-23 00:56:37 +0000
commit346dce52674589b00ead4e5b59446c95dd130457 (patch)
treec2356e6ec90d4518413f886efd678652d92e5d4a
parent16a74241e5653f145f3b7b68ecd786dba2cb0597 (diff)
parent7f0a81a35479d4af43c1af7a2d115a1736bccd1e (diff)
downloadbase-346dce52674589b00ead4e5b59446c95dd130457.tar.gz
Merge "73880: XML layout lint doesn't complain when an id is empty ie. "@+id/"" into idea133
-rw-r--r--lint/cli/src/test/java/com/android/tools/lint/checks/WrongIdDetectorTest.java5
-rw-r--r--lint/cli/src/test/java/com/android/tools/lint/checks/data/res/layout/invalid_ids2.xml6
-rw-r--r--lint/libs/lint-checks/src/main/java/com/android/tools/lint/checks/WrongIdDetector.java5
3 files changed, 14 insertions, 2 deletions
diff --git a/lint/cli/src/test/java/com/android/tools/lint/checks/WrongIdDetectorTest.java b/lint/cli/src/test/java/com/android/tools/lint/checks/WrongIdDetectorTest.java
index a59b5713ca..6d2adbd3fa 100644
--- a/lint/cli/src/test/java/com/android/tools/lint/checks/WrongIdDetectorTest.java
+++ b/lint/cli/src/test/java/com/android/tools/lint/checks/WrongIdDetectorTest.java
@@ -140,7 +140,10 @@ public class WrongIdDetectorTest extends AbstractCheckTest {
+ "res/layout/invalid_ids2.xml:8: Error: ID definitions must be of the form @+id/name; try using @+id/btn_skip [InvalidId]\n"
+ " android:id=\"@+id/btn/skip\"\n"
+ " ~~~~~~~~~~~~~~~~~~~~~~~~~~\n"
- + "1 errors, 0 warnings\n",
+ + "res/layout/invalid_ids2.xml:16: Error: Invalid id: missing value [InvalidId]\n"
+ + " android:id=\"@+id/\"\n"
+ + " ~~~~~~~~~~~~~~~~~~\n"
+ + "2 errors, 0 warnings\n",
lintFiles("res/layout/invalid_ids2.xml"));
}
diff --git a/lint/cli/src/test/java/com/android/tools/lint/checks/data/res/layout/invalid_ids2.xml b/lint/cli/src/test/java/com/android/tools/lint/checks/data/res/layout/invalid_ids2.xml
index 259903a820..5c9b51b286 100644
--- a/lint/cli/src/test/java/com/android/tools/lint/checks/data/res/layout/invalid_ids2.xml
+++ b/lint/cli/src/test/java/com/android/tools/lint/checks/data/res/layout/invalid_ids2.xml
@@ -12,4 +12,10 @@
android:layout_alignParentTop="true"
android:text="Button" />
+ <Button
+ android:id="@+id/"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="Button" />
+
</RelativeLayout>
diff --git a/lint/libs/lint-checks/src/main/java/com/android/tools/lint/checks/WrongIdDetector.java b/lint/libs/lint-checks/src/main/java/com/android/tools/lint/checks/WrongIdDetector.java
index 6f553d800b..a001a4b669 100644
--- a/lint/libs/lint-checks/src/main/java/com/android/tools/lint/checks/WrongIdDetector.java
+++ b/lint/libs/lint-checks/src/main/java/com/android/tools/lint/checks/WrongIdDetector.java
@@ -382,7 +382,10 @@ public class WrongIdDetector extends LayoutDetector {
mFileIds.add(id);
mGlobalIds.add(id);
- if (id.startsWith("@+") && !id.startsWith(NEW_ID_PREFIX) //$NON-NLS-1$
+ if (id.equals(NEW_ID_PREFIX) || id.equals(ID_PREFIX) || "@+id".equals(ID_PREFIX)) {
+ String message = "Invalid id: missing value";
+ context.report(INVALID, attribute, context.getLocation(attribute), message);
+ } else if (id.startsWith("@+") && !id.startsWith(NEW_ID_PREFIX) //$NON-NLS-1$
&& !id.startsWith("@+android:id/") //$NON-NLS-1$
|| id.startsWith(NEW_ID_PREFIX)
&& id.indexOf('/', NEW_ID_PREFIX.length()) != -1) {