diff options
| author | Devin Coughlin <dcoughlin@apple.com> | 2016-04-28 19:44:40 +0000 |
|---|---|---|
| committer | Devin Coughlin <dcoughlin@apple.com> | 2016-04-28 19:44:40 +0000 |
| commit | 97dc0c8c29f857fcffffc2b1ebaad459e91dc150 (patch) | |
| tree | 8d57cf4dc491102ca8bab1b1ff42c0869ebdd459 /clang/test | |
| parent | e8c6840c71db30f07e7eaa6796d6d2c189330e58 (diff) | |
| download | bcm5719-llvm-97dc0c8c29f857fcffffc2b1ebaad459e91dc150.tar.gz bcm5719-llvm-97dc0c8c29f857fcffffc2b1ebaad459e91dc150.zip | |
[analyzer] Add path note for localizability checker.
Add a path note indicating the location of the non-localized string
literal in NonLocalizedStringChecker.
rdar://problem/25981525
llvm-svn: 267924
Diffstat (limited to 'clang/test')
| -rw-r--r-- | clang/test/Analysis/localization.m | 43 |
1 files changed, 29 insertions, 14 deletions
diff --git a/clang/test/Analysis/localization.m b/clang/test/Analysis/localization.m index cf0697c76f5..dc80705428c 100644 --- a/clang/test/Analysis/localization.m +++ b/clang/test/Analysis/localization.m @@ -1,4 +1,4 @@ -// RUN: %clang_cc1 -analyze -fblocks -analyzer-store=region -analyzer-checker=optin.osx.cocoa.localizability.NonLocalizedStringChecker -analyzer-checker=alpha.osx.cocoa.localizability.PluralMisuseChecker -verify %s +// RUN: %clang_cc1 -analyze -fblocks -analyzer-store=region -analyzer-output=text -analyzer-checker=optin.osx.cocoa.localizability.NonLocalizedStringChecker -analyzer-checker=alpha.osx.cocoa.localizability.PluralMisuseChecker -verify %s // The larger set of tests in located in localization.m. These are tests // specific for non-aggressive reporting. @@ -61,11 +61,26 @@ NSString *KHLocalizedString(NSString* key, NSString* comment) { UILabel *testLabel = [[UILabel alloc] init]; NSString *bar = NSLocalizedString(@"Hello", @"Comment"); - if (random()) { - bar = @"Unlocalized string"; + if (random()) { // expected-note {{Taking true branch}} + bar = @"Unlocalized string"; // expected-note {{Non-localized string literal here}} } - [testLabel setText:bar]; // expected-warning {{User-facing text should use localized string macro}} + [testLabel setText:bar]; // expected-warning {{User-facing text should use localized string macro}} expected-note {{User-facing}} +} + +- (void)testMultipleUnlocalizedStringsInSamePath { + UILabel *testLabel = [[UILabel alloc] init]; + NSString *bar = @"Unlocalized string"; // no-note + + bar = @"Unlocalized string"; // expected-note {{Non-localized string literal here}} + + NSString *other = @"Other unlocalized string."; // no-note + (void)other; + + NSString *same = @"Unlocalized string"; // no-note + (void)same; + + [testLabel setText:bar]; // expected-warning {{User-facing text should use localized string macro}} expected-note {{User-facing}} } - (void)testOneCharacterStringsDoNotGiveAWarning { @@ -103,14 +118,14 @@ NSString *KHLocalizedString(NSString* key, NSString* comment) { - (NSString *)test1:(int)plural { if (plural) { - return MCLocalizedString(@"TYPE_PLURAL"); // expected-warning {{Plural cases are not supported accross all languages. Use a .stringsdict file}} + return MCLocalizedString(@"TYPE_PLURAL"); // expected-warning {{Plural cases are not supported accross all languages. Use a .stringsdict file}} expected-note {{Plural}} } return MCLocalizedString(@"TYPE"); } - (NSString *)test2:(int)numOfReminders { if (numOfReminders > 0) { - return [NSString stringWithFormat:@"%@, %@", @"Test", (numOfReminders != 1) ? [NSString stringWithFormat:NSLocalizedString(@"%@ Reminders", @"Plural count of reminders"), numOfReminders] : [NSString stringWithFormat:NSLocalizedString(@"1 reminder", @"One reminder")]]; // expected-warning {{Plural cases are not supported accross all languages. Use a .stringsdict file}} expected-warning {{Plural cases are not supported accross all languages. Use a .stringsdict file}} + return [NSString stringWithFormat:@"%@, %@", @"Test", (numOfReminders != 1) ? [NSString stringWithFormat:NSLocalizedString(@"%@ Reminders", @"Plural count of reminders"), numOfReminders] : [NSString stringWithFormat:NSLocalizedString(@"1 reminder", @"One reminder")]]; // expected-warning 2 {{Plural cases are not supported accross all languages. Use a .stringsdict file}} expected-note 2 {{Plural}} } return nil; } @@ -119,18 +134,18 @@ NSString *KHLocalizedString(NSString* key, NSString* comment) { NSString *count; if (self.unreadArticlesCount > 1) { - count = [count stringByAppendingFormat:@"%@", KHLocalizedString(@"New Stories", @"Plural count for new stories")]; // expected-warning {{Plural cases are not supported accross all languages. Use a .stringsdict file}} + count = [count stringByAppendingFormat:@"%@", KHLocalizedString(@"New Stories", @"Plural count for new stories")]; // expected-warning {{Plural cases are not supported accross all languages. Use a .stringsdict file}} expected-note {{Plural}} } else { - count = [count stringByAppendingFormat:@"%@", KHLocalizedString(@"New Story", @"One new story")]; // expected-warning {{Plural cases are not supported accross all languages. Use a .stringsdict file}} + count = [count stringByAppendingFormat:@"%@", KHLocalizedString(@"New Story", @"One new story")]; // expected-warning {{Plural cases are not supported accross all languages. Use a .stringsdict file}} expected-note {{Plural}} } } - (NSString *)test4:(int)count { if ( count == 1 ) { - return [NSString stringWithFormat:KHLocalizedString(@"value.singular",nil), count]; // expected-warning {{Plural cases are not supported accross all languages. Use a .stringsdict file}} + return [NSString stringWithFormat:KHLocalizedString(@"value.singular",nil), count]; // expected-warning {{Plural cases are not supported accross all languages. Use a .stringsdict file}} expected-note {{Plural}} } else { - return [NSString stringWithFormat:KHLocalizedString(@"value.plural",nil), count]; // expected-warning {{Plural cases are not supported accross all languages. Use a .stringsdict file}} + return [NSString stringWithFormat:KHLocalizedString(@"value.plural",nil), count]; // expected-warning {{Plural cases are not supported accross all languages. Use a .stringsdict file}} expected-note {{Plural}} } } @@ -138,9 +153,9 @@ NSString *KHLocalizedString(NSString* key, NSString* comment) { int test = count == 1; if (test) { - return [NSString stringWithFormat:KHLocalizedString(@"value.singular",nil), count]; // expected-warning {{Plural cases are not supported accross all languages. Use a .stringsdict file}} + return [NSString stringWithFormat:KHLocalizedString(@"value.singular",nil), count]; // expected-warning {{Plural cases are not supported accross all languages. Use a .stringsdict file}} expected-note {{Plural}} } else { - return [NSString stringWithFormat:KHLocalizedString(@"value.plural",nil), count]; // expected-warning {{Plural cases are not supported accross all languages. Use a .stringsdict file}} + return [NSString stringWithFormat:KHLocalizedString(@"value.plural",nil), count]; // expected-warning {{Plural cases are not supported accross all languages. Use a .stringsdict file}} expected-note {{Plural}} } } @@ -154,7 +169,7 @@ NSString *KHLocalizedString(NSString* key, NSString* comment) { if (someOtherVariable) return KHLocalizedString(@"OK",nil); // no-warning } else { - return KHLocalizedString(@"value.plural",nil); // expected-warning {{Plural cases are not supported accross all languages. Use a .stringsdict file}} + return KHLocalizedString(@"value.plural",nil); // expected-warning {{Plural cases are not supported accross all languages. Use a .stringsdict file}} expected-note {{Plural}} } return nil; } @@ -221,6 +236,6 @@ NSString *KHLocalizedString(NSString* key, NSString* comment) { @implementation MyDebugView - (void)setupScreen:(UILabel *)label { - label.text = @"Unlocalized"; + label.text = @"Unlocalized"; // no-warning } @end |

