diff options
author | Tor Norbye <tnorbye@google.com> | 2012-12-14 22:37:48 -0800 |
---|---|---|
committer | Tor Norbye <tnorbye@google.com> | 2012-12-19 09:14:06 -0800 |
commit | 75c40ee9e1d69ba6e494582f029e200a1c294999 (patch) | |
tree | 2dbf01c7b42f05554ab843caa3e0e8f35f3c6b22 /lint/cli | |
parent | b849650d01557b2a6d408bd2aeae6dca58fbd0fa (diff) | |
download | sdk-75c40ee9e1d69ba6e494582f029e200a1c294999.zip sdk-75c40ee9e1d69ba6e494582f029e200a1c294999.tar.gz sdk-75c40ee9e1d69ba6e494582f029e200a1c294999.tar.bz2 |
Lint: Flag using @dimen where not allowed in manifest
Adds a lint check which flags using resource ids for versionName,
versionCode, minSdkVersion and targetSdkVersion in the manifest.
Change-Id: I5b4e25d0b114cdf84f446a193fe5d3a095b2f415
Diffstat (limited to 'lint/cli')
3 files changed, 76 insertions, 0 deletions
diff --git a/lint/cli/src/test/java/com/android/tools/lint/checks/ManifestOrderDetectorTest.java b/lint/cli/src/test/java/com/android/tools/lint/checks/ManifestOrderDetectorTest.java index 8508d40..e845b57 100644 --- a/lint/cli/src/test/java/com/android/tools/lint/checks/ManifestOrderDetectorTest.java +++ b/lint/cli/src/test/java/com/android/tools/lint/checks/ManifestOrderDetectorTest.java @@ -287,4 +287,36 @@ public class ManifestOrderDetectorTest extends AbstractCheckTest { checkLint(Arrays.asList(master, library))); } + public void testMissingVersion() throws Exception { + mEnabled = Collections.singleton(ManifestOrderDetector.SET_VERSION); + assertEquals("" + + "AndroidManifest.xml:2: Warning: Should set android:versionCode to specify the application version [MissingVersion]\n" + + "<manifest xmlns:android=\"http://schemas.android.com/apk/res/android\"\n" + + "^\n" + + "AndroidManifest.xml:2: Warning: Should set android:versionName to specify the application version [MissingVersion]\n" + + "<manifest xmlns:android=\"http://schemas.android.com/apk/res/android\"\n" + + "^\n" + + "0 errors, 2 warnings\n", + lintProject("no_version.xml=>AndroidManifest.xml")); + } + + public void testIllegalReference() throws Exception { + mEnabled = Collections.singleton(ManifestOrderDetector.ILLEGAL_REFERENCE); + assertEquals("" + + "AndroidManifest.xml:2: Warning: The android:versionCode cannot be a resource url, it must be a literal integer [IllegalResourceRef]\n" + + "<manifest xmlns:android=\"http://schemas.android.com/apk/res/android\"\n" + + "^\n" + + "AndroidManifest.xml:2: Warning: The android:versionName cannot be a resource url, it must be a literal string [IllegalResourceRef]\n" + + "<manifest xmlns:android=\"http://schemas.android.com/apk/res/android\"\n" + + "^\n" + + "AndroidManifest.xml:7: Warning: The android:minSdkVersion cannot be a resource url, it must be a literal integer (or string if a preview codename) [IllegalResourceRef]\n" + + " <uses-sdk android:minSdkVersion=\"@dimen/minSdkVersion\" android:targetSdkVersion=\"@dimen/targetSdkVersion\" />\n" + + " ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" + + "AndroidManifest.xml:7: Warning: The android:targetSdkVersion cannot be a resource url, it must be a literal integer (or string if a preview codename) [IllegalResourceRef]\n" + + " <uses-sdk android:minSdkVersion=\"@dimen/minSdkVersion\" android:targetSdkVersion=\"@dimen/targetSdkVersion\" />\n" + + " ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" + + "0 errors, 4 warnings\n", + + lintProject("illegal_version.xml=>AndroidManifest.xml")); + } } diff --git a/lint/cli/src/test/java/com/android/tools/lint/checks/data/illegal_version.xml b/lint/cli/src/test/java/com/android/tools/lint/checks/data/illegal_version.xml new file mode 100644 index 0000000..3028117 --- /dev/null +++ b/lint/cli/src/test/java/com/android/tools/lint/checks/data/illegal_version.xml @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="utf-8"?> +<manifest xmlns:android="http://schemas.android.com/apk/res/android" + package="foo.bar2" + android:versionCode="@dimen/versionCode" + android:versionName="@dimen/versionName" > + + <uses-sdk android:minSdkVersion="@dimen/minSdkVersion" android:targetSdkVersion="@dimen/targetSdkVersion" /> + + <application + android:icon="@drawable/ic_launcher" + android:label="@string/app_name" > + <activity + android:label="@string/app_name" + android:name=".Foo2Activity" > + <intent-filter > + <action android:name="android.intent.action.MAIN" /> + + <category android:name="android.intent.category.LAUNCHER" /> + </intent-filter> + </activity> + </application> + +</manifest> diff --git a/lint/cli/src/test/java/com/android/tools/lint/checks/data/no_version.xml b/lint/cli/src/test/java/com/android/tools/lint/checks/data/no_version.xml new file mode 100644 index 0000000..1c3c0a4 --- /dev/null +++ b/lint/cli/src/test/java/com/android/tools/lint/checks/data/no_version.xml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="utf-8"?> +<manifest xmlns:android="http://schemas.android.com/apk/res/android" + package="foo.bar2" > + + <uses-sdk android:minSdkVersion="14" /> + + <application + android:icon="@drawable/ic_launcher" + android:label="@string/app_name" > + <activity + android:label="@string/app_name" + android:name=".Foo2Activity" > + <intent-filter > + <action android:name="android.intent.action.MAIN" /> + + <category android:name="android.intent.category.LAUNCHER" /> + </intent-filter> + </activity> + </application> + +</manifest> |