diff options
author | Tor Norbye <tnorbye@google.com> | 2013-01-15 11:56:05 -0800 |
---|---|---|
committer | Tor Norbye <tnorbye@google.com> | 2013-01-15 12:43:13 -0800 |
commit | 9cb02a430d4763794a853e36d0cf630af234eeb3 (patch) | |
tree | de49c0f70123dfac61581ba1ec745a65712a8607 /lint/cli | |
parent | 3b69ed776287e703dc054c78a8759dbb63789d0b (diff) | |
download | sdk-9cb02a430d4763794a853e36d0cf630af234eeb3.zip sdk-9cb02a430d4763794a853e36d0cf630af234eeb3.tar.gz sdk-9cb02a430d4763794a853e36d0cf630af234eeb3.tar.bz2 |
42798: lint miscounts String.format()
Change-Id: Ibd997301864981ceb863a30b36034a784ab13392
Diffstat (limited to 'lint/cli')
3 files changed, 43 insertions, 0 deletions
diff --git a/lint/cli/src/test/java/com/android/tools/lint/checks/StringFormatDetectorTest.java b/lint/cli/src/test/java/com/android/tools/lint/checks/StringFormatDetectorTest.java index a49955b..47fbea1 100644 --- a/lint/cli/src/test/java/com/android/tools/lint/checks/StringFormatDetectorTest.java +++ b/lint/cli/src/test/java/com/android/tools/lint/checks/StringFormatDetectorTest.java @@ -163,6 +163,25 @@ public class StringFormatDetectorTest extends AbstractCheckTest { "src/test/pkg/StringFormatActivity2.java.txt=>src/test/pkg/StringFormatActivity2.java")); } + public void testIssue42798() throws Exception { + // http://code.google.com/p/android/issues/detail?id=42798 + // String playsCount = String.format(Locale.FRANCE, this.context.getString(R.string.gridview_views_count), article.playsCount); + assertEquals("" + + "src/test/pkg/StringFormat3.java:12: Error: Wrong argument type for formatting argument '#1' in gridview_views_count: conversion is 'd', received String [StringFormatMatches]\n" + + " context.getString(R.string.gridview_views_count), \"wrong\");\n" + + " ~~~~~~~\n" + + " res/values/formatstrings5.xml:3: Conflicting argument declaration here\n" + + "src/test/pkg/StringFormat3.java:13: Error: Wrong argument type for formatting argument '#1' in gridview_views_count: conversion is 'd', received String [StringFormatMatches]\n" + + " String s4 = String.format(context.getString(R.string.gridview_views_count), \"wrong\");\n" + + " ~~~~~~~\n" + + " res/values/formatstrings5.xml:3: Conflicting argument declaration here\n" + + "2 errors, 0 warnings\n", + + lintProject( + "res/values/formatstrings5.xml", + "src/test/pkg/StringFormat3.java.txt=>src/test/pkg/StringFormat3.java")); + } + public void testIsLocaleSpecific() throws Exception { assertFalse(isLocaleSpecific("")); assertFalse(isLocaleSpecific("Hello World!")); diff --git a/lint/cli/src/test/java/com/android/tools/lint/checks/data/res/values/formatstrings5.xml b/lint/cli/src/test/java/com/android/tools/lint/checks/data/res/values/formatstrings5.xml new file mode 100644 index 0000000..6b14570 --- /dev/null +++ b/lint/cli/src/test/java/com/android/tools/lint/checks/data/res/values/formatstrings5.xml @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <string name="gridview_views_count">%d vues</string> +</resources> diff --git a/lint/cli/src/test/java/com/android/tools/lint/checks/data/src/test/pkg/StringFormat3.java.txt b/lint/cli/src/test/java/com/android/tools/lint/checks/data/src/test/pkg/StringFormat3.java.txt new file mode 100644 index 0000000..d1bfe44 --- /dev/null +++ b/lint/cli/src/test/java/com/android/tools/lint/checks/data/src/test/pkg/StringFormat3.java.txt @@ -0,0 +1,20 @@ +package test.pkg; + +import android.app.Activity; + +public class StringFormat3 extends Activity { + public final void test(Context context) { + String s1 = String.format(Locale.FRANCE, + context.getString(R.string.gridview_views_count), article.playsCount); + String s2 = String.format(Locale.FRANCE, + context.getString(R.string.gridview_views_count), 5); + String s3 = String.format(Locale.FRANCE, + context.getString(R.string.gridview_views_count), "wrong"); + String s4 = String.format(context.getString(R.string.gridview_views_count), "wrong"); + String s5 = String.format(context.getString(R.string.gridview_views_count), 5); // OK + String s6 = String.format(Locale.getDefault(), + context.getString(R.string.gridview_views_count), 5); + String s7 = String.format(null, + context.getString(R.string.gridview_views_count), 5); + } +} |