diff options
Diffstat (limited to 'clang/test/Analysis')
-rw-r--r-- | clang/test/Analysis/localization-aggressive.m | 243 | ||||
-rw-r--r-- | clang/test/Analysis/localization.m | 86 |
2 files changed, 0 insertions, 329 deletions
diff --git a/clang/test/Analysis/localization-aggressive.m b/clang/test/Analysis/localization-aggressive.m deleted file mode 100644 index eba6e15ea08..00000000000 --- a/clang/test/Analysis/localization-aggressive.m +++ /dev/null @@ -1,243 +0,0 @@ -// RUN: %clang_cc1 -analyze -fblocks -analyzer-store=region -analyzer-checker=alpha.osx.cocoa.NonLocalizedStringChecker -analyzer-checker=alpha.osx.cocoa.EmptyLocalizationContextChecker -verify -analyzer-config AggressiveReport=true %s - -// These declarations were reduced using Delta-Debugging from Foundation.h -// on Mac OS X. - -#define nil ((id)0) -#define NSLocalizedString(key, comment) \ - [[NSBundle mainBundle] localizedStringForKey:(key) value:@"" table:nil] -#define NSLocalizedStringFromTable(key, tbl, comment) \ - [[NSBundle mainBundle] localizedStringForKey:(key) value:@"" table:(tbl)] -#define NSLocalizedStringFromTableInBundle(key, tbl, bundle, comment) \ - [bundle localizedStringForKey:(key) value:@"" table:(tbl)] -#define NSLocalizedStringWithDefaultValue(key, tbl, bundle, val, comment) \ - [bundle localizedStringForKey:(key) value:(val) table:(tbl)] -#define CGFLOAT_TYPE double -typedef CGFLOAT_TYPE CGFloat; -struct CGPoint { - CGFloat x; - CGFloat y; -}; -typedef struct CGPoint CGPoint; -@interface NSObject -+ (id)alloc; -- (id)init; -@end -@class NSDictionary; -@interface NSString : NSObject -- (void)drawAtPoint:(CGPoint)point withAttributes:(NSDictionary *)attrs; -+ (instancetype)localizedStringWithFormat:(NSString *)format, ...; -@end -@interface NSBundle : NSObject -+ (NSBundle *)mainBundle; -- (NSString *)localizedStringForKey:(NSString *)key - value:(NSString *)value - table:(NSString *)tableName; -@end -@interface UILabel : NSObject -@property(nullable, nonatomic, copy) NSString *text; -- (void)accessibilitySetIdentification:(NSString *)ident; -@end -@interface TestObject : NSObject -@property(strong) NSString *text; -@end - -@interface LocalizationTestSuite : NSObject -NSString *ForceLocalized(NSString *str) - __attribute__((annotate("returns_localized_nsstring"))); -CGPoint CGPointMake(CGFloat x, CGFloat y); -int random(); -// This next one is a made up API -NSString *CFNumberFormatterCreateStringWithNumber(float x); -+ (NSString *)forceLocalized:(NSString *)str - __attribute__((annotate("returns_localized_nsstring"))); -@end - -// Test cases begin here -@implementation LocalizationTestSuite - -// A C-Funtion that returns a localized string because it has the -// "returns_localized_nsstring" annotation -NSString *ForceLocalized(NSString *str) { return str; } -// An ObjC method that returns a localized string because it has the -// "returns_localized_nsstring" annotation -+ (NSString *)forceLocalized:(NSString *)str { - return str; -} - -// An ObjC method that returns a localized string -+ (NSString *)unLocalizedStringMethod { - return @"UnlocalizedString"; -} - -- (void)testLocalizationErrorDetectedOnPathway { - UILabel *testLabel = [[UILabel alloc] init]; - NSString *bar = NSLocalizedString(@"Hello", @"Comment"); - - if (random()) { - bar = @"Unlocalized string"; - } - - [testLabel setText:bar]; // expected-warning {{String should be localized}} -} - -- (void)testLocalizationErrorDetectedOnNSString { - NSString *bar = NSLocalizedString(@"Hello", @"Comment"); - - if (random()) { - bar = @"Unlocalized string"; - } - - [bar drawAtPoint:CGPointMake(0, 0) withAttributes:nil]; // expected-warning {{String should be localized}} -} - -- (void)testNoLocalizationErrorDetectedFromCFunction { - UILabel *testLabel = [[UILabel alloc] init]; - NSString *bar = CFNumberFormatterCreateStringWithNumber(1); - - [testLabel setText:bar]; // no-warning -} - -- (void)testAnnotationAddsLocalizedStateForCFunction { - UILabel *testLabel = [[UILabel alloc] init]; - NSString *bar = NSLocalizedString(@"Hello", @"Comment"); - - if (random()) { - bar = @"Unlocalized string"; - } - - [testLabel setText:ForceLocalized(bar)]; // no-warning -} - -- (void)testAnnotationAddsLocalizedStateForObjCMethod { - UILabel *testLabel = [[UILabel alloc] init]; - NSString *bar = NSLocalizedString(@"Hello", @"Comment"); - - if (random()) { - bar = @"Unlocalized string"; - } - - [testLabel setText:[LocalizationTestSuite forceLocalized:bar]]; // no-warning -} - -// An empty string literal @"" should not raise an error -- (void)testEmptyStringLiteralHasLocalizedState { - UILabel *testLabel = [[UILabel alloc] init]; - NSString *bar = @""; - - [testLabel setText:bar]; // no-warning -} - -// An empty string literal @"" inline should not raise an error -- (void)testInlineEmptyStringLiteralHasLocalizedState { - UILabel *testLabel = [[UILabel alloc] init]; - [testLabel setText:@""]; // no-warning -} - -// An string literal @"Hello" inline should raise an error -- (void)testInlineStringLiteralHasLocalizedState { - UILabel *testLabel = [[UILabel alloc] init]; - [testLabel setText:@"Hello"]; // expected-warning {{String should be localized}} -} - -// A nil string should not raise an error -- (void)testNilStringIsNotMarkedAsUnlocalized { - UILabel *testLabel = [[UILabel alloc] init]; - [testLabel setText:nil]; // no-warning -} - -// A method that takes in a localized string and returns a string -// most likely that string is localized. -- (void)testLocalizedStringArgument { - UILabel *testLabel = [[UILabel alloc] init]; - NSString *localizedString = NSLocalizedString(@"Hello", @"Comment"); - - NSString *combinedString = - [NSString localizedStringWithFormat:@"%@", localizedString]; - - [testLabel setText:combinedString]; // no-warning -} - -// A String passed in as a an parameter should not be considered -// unlocalized -- (void)testLocalizedStringAsArgument:(NSString *)argumentString { - UILabel *testLabel = [[UILabel alloc] init]; - - [testLabel setText:argumentString]; // no-warning -} - -// A String passed into another method that calls a method that -// requires a localized string should give an error -- (void)localizedStringAsArgument:(NSString *)argumentString { - UILabel *testLabel = [[UILabel alloc] init]; - - [testLabel setText:argumentString]; // expected-warning {{String should be localized}} -} - -// The warning is expected to be seen in localizedStringAsArgument: body -- (void)testLocalizedStringAsArgumentOtherMethod:(NSString *)argumentString { - [self localizedStringAsArgument:@"UnlocalizedString"]; -} - -// [LocalizationTestSuite unLocalizedStringMethod] returns an unlocalized string -// so we expect an error. Unfrtunately, it probably doesn't make a difference -// what [LocalizationTestSuite unLocalizedStringMethod] returns since all -// string values returned are marked as Unlocalized in aggressive reporting. -- (void)testUnLocalizedStringMethod { - UILabel *testLabel = [[UILabel alloc] init]; - NSString *bar = NSLocalizedString(@"Hello", @"Comment"); - - [testLabel setText:[LocalizationTestSuite unLocalizedStringMethod]]; // expected-warning {{String should be localized}} -} - -// This is the reverse situation: accessibilitySetIdentification: doesn't care -// about localization so we don't expect a warning -- (void)testMethodNotInRequiresLocalizedStringMethods { - UILabel *testLabel = [[UILabel alloc] init]; - - [testLabel accessibilitySetIdentification:@"UnlocalizedString"]; // no-warning -} - -// EmptyLocalizationContextChecker tests -#define HOM(s) YOLOC(s) -#define YOLOC(x) NSLocalizedString(x, nil) - -- (void)testNilLocalizationContext { - NSString *string = NSLocalizedString(@"LocalizedString", nil); // expected-warning {{Localized string macro should include a non-empty comment for translators}} - NSString *string2 = NSLocalizedString(@"LocalizedString", nil); // expected-warning {{Localized string macro should include a non-empty comment for translators}} - NSString *string3 = NSLocalizedString(@"LocalizedString", nil); // expected-warning {{Localized string macro should include a non-empty comment for translators}} -} - -- (void)testEmptyLocalizationContext { - NSString *string = NSLocalizedString(@"LocalizedString", @""); // expected-warning {{Localized string macro should include a non-empty comment for translators}} - NSString *string2 = NSLocalizedString(@"LocalizedString", @" "); // expected-warning {{Localized string macro should include a non-empty comment for translators}} - NSString *string3 = NSLocalizedString(@"LocalizedString", @" "); // expected-warning {{Localized string macro should include a non-empty comment for translators}} -} - -- (void)testNSLocalizedStringVariants { - NSString *string = NSLocalizedStringFromTable(@"LocalizedString", nil, @""); // expected-warning {{Localized string macro should include a non-empty comment for translators}} - NSString *string2 = NSLocalizedStringFromTableInBundle(@"LocalizedString", nil, [[NSBundle alloc] init],@""); // expected-warning {{Localized string macro should include a non-empty comment for translators}} - NSString *string3 = NSLocalizedStringWithDefaultValue(@"LocalizedString", nil, [[NSBundle alloc] init], nil,@""); // expected-warning {{Localized string macro should include a non-empty comment for translators}} -} - -- (void)testMacroExpansionNilString { - NSString *string = YOLOC(@"Hello"); // expected-warning {{Localized string macro should include a non-empty comment for translators}} - NSString *string2 = HOM(@"Hello"); // expected-warning {{Localized string macro should include a non-empty comment for translators}} - NSString *string3 = NSLocalizedString((0 ? @"Critical" : @"Current"),nil); // expected-warning {{Localized string macro should include a non-empty comment for translators}} -} - -#define KCLocalizedString(x,comment) NSLocalizedString(x, comment) -#define POSSIBLE_FALSE_POSITIVE(s,other) KCLocalizedString(s,@"Comment") - -- (void)testNoWarningForNilCommentPassedIntoOtherMacro { - NSString *string = KCLocalizedString(@"Hello",@""); // no-warning - NSString *string2 = KCLocalizedString(@"Hello",nil); // no-warning - NSString *string3 = KCLocalizedString(@"Hello",@"Comment"); // no-warning -} - -- (void)testPossibleFalsePositiveSituationAbove { - NSString *string = POSSIBLE_FALSE_POSITIVE(@"Hello", nil); // no-warning - NSString *string2 = POSSIBLE_FALSE_POSITIVE(@"Hello", @"Hello"); // no-warning -} - -@end diff --git a/clang/test/Analysis/localization.m b/clang/test/Analysis/localization.m deleted file mode 100644 index 83ba1e6f24b..00000000000 --- a/clang/test/Analysis/localization.m +++ /dev/null @@ -1,86 +0,0 @@ -// RUN: %clang_cc1 -analyze -fblocks -analyzer-store=region -analyzer-checker=alpha.osx.cocoa.NonLocalizedStringChecker -analyzer-checker=alpha.osx.cocoa.EmptyLocalizationContextChecker -verify %s - -// The larger set of tests in located in localization.m. These are tests -// specific for non-aggressive reporting. - -// These declarations were reduced using Delta-Debugging from Foundation.h -// on Mac OS X. - -#define nil ((id)0) -#define NSLocalizedString(key, comment) \ - [[NSBundle mainBundle] localizedStringForKey:(key) value:@"" table:nil] -#define NSLocalizedStringFromTable(key, tbl, comment) \ - [[NSBundle mainBundle] localizedStringForKey:(key) value:@"" table:(tbl)] -#define NSLocalizedStringFromTableInBundle(key, tbl, bundle, comment) \ - [bundle localizedStringForKey:(key) value:@"" table:(tbl)] -#define NSLocalizedStringWithDefaultValue(key, tbl, bundle, val, comment) \ - [bundle localizedStringForKey:(key) value:(val) table:(tbl)] -@interface NSObject -+ (id)alloc; -- (id)init; -@end -@interface NSString : NSObject -@end -@interface NSBundle : NSObject -+ (NSBundle *)mainBundle; -- (NSString *)localizedStringForKey:(NSString *)key - value:(NSString *)value - table:(NSString *)tableName; -@end -@interface UILabel : NSObject -@property(nullable, nonatomic, copy) NSString *text; -@end -@interface TestObject : NSObject -@property(strong) NSString *text; -@end - -@interface LocalizationTestSuite : NSObject -int random(); -@end - -// Test cases begin here -@implementation LocalizationTestSuite - -// An object passed in as an parameter's string member -// should not be considered unlocalized -- (void)testObjectAsArgument:(TestObject *)argumentObject { - UILabel *testLabel = [[UILabel alloc] init]; - - [testLabel setText:[argumentObject text]]; // no-warning - [testLabel setText:argumentObject.text]; // no-warning -} - -- (void)testLocalizationErrorDetectedOnPathway { - UILabel *testLabel = [[UILabel alloc] init]; - NSString *bar = NSLocalizedString(@"Hello", @"Comment"); - - if (random()) { - bar = @"Unlocalized string"; - } - - [testLabel setText:bar]; // expected-warning {{String should be localized}} -} - -- (void)testOneCharacterStringsDoNotGiveAWarning { - UILabel *testLabel = [[UILabel alloc] init]; - NSString *bar = NSLocalizedString(@"Hello", @"Comment"); - - if (random()) { - bar = @"-"; - } - - [testLabel setText:bar]; // no-warning -} - -- (void)testOneCharacterUTFStringsDoNotGiveAWarning { - UILabel *testLabel = [[UILabel alloc] init]; - NSString *bar = NSLocalizedString(@"Hello", @"Comment"); - - if (random()) { - bar = @"—"; - } - - [testLabel setText:bar]; // no-warning -} - -@end |