|
@@ -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
|