Skip to content

Commit c51a42c

Browse files
Kroach/oasis 1621 analyze (#164)
* Xcode 8.3.3 'Update to recommended settings' removed a *.plist from Copy Resources * Fix Analyze 'Memory error' in OPTLYBucketer.m * Fix Analyze 'Instance variable used while self is not set' error' * Fix Analyze 'Value stored in 'userProfile' ... is never read * Fix Analyze 'Potential null dereference * Fix Analyze 'Method accepting NSError** ...' in OPTLYDatabase.m+.h * Fix compiler warning about 'return nil' in a BOOL method * Fix Analyze 'Method accepting NSError** ...' in OPTLYFileManager.m+.h * Fix Analyze 'Method accepting NSError** ...' in OPTLYEventDataStore.m+.h * Fix Analyze 'Method accepting NSError** ...' in OPTLYDataStore.m+.h * Fix Analyze 'Method accepting NSError** ...' in OPTLYClient.m * Fix Analyze 'Logic error' in 4 *.m files * OASIS-1621 Objective-C SDK producing "memory errors" when running Analyze Summary: Fix objective-c-sdk Xcode Analyze errors Xcode 8.3.3 'Update to recommended settings' removed a *.plist from Copy Resources Fix Analyze 'Memory error' in OPTLYBucketer.m Fix Analyze 'Instance variable used while self is not set' error' Fix Analyze 'Value stored in 'userProfile' ... is never read Fix Analyze 'Potential null dereference Fix Analyze 'Method accepting NSError** ...' in OPTLYDatabase.m+.h Fix compiler warning about 'return nil' in a BOOL method Fix Analyze 'Method accepting NSError** ...' in OPTLYFileManager.m+.h Fix Analyze 'Method accepting NSError** ...' in OPTLYEventDataStore.m+.h Fix Analyze 'Method accepting NSError** ...' in OPTLYDataStore.m+.h Fix Analyze 'Method accepting NSError** ...' in OPTLYClient.m Fix Analyze 'Logic error' in 4 *.m files Replace use of NSFileManager's createFileAtPath:contents:attributes: by NSData's writeToFile:options:error: Test Plan: Xcode Analyze + 2 demo apps + 10 test suites * Xcode Analyze with OptimizelyiOSDemoApp scheme selected has improved from 40 blue Analyze errors to 1 blue Aanalyze error (in JSONModel-iOS which isn't Optimizely's code). * OptimizelyiOSDemoApp PASSED * OptimizelyTVOSDemoApp PASSED * 5 iOS test suites PASSED * 5 tvOS test suites PASSED Reviewers: alda JIRA Issues: OASIS-1621 Differential Revision: https://phabricator.optimizely.com/D16979
1 parent fdd8ab6 commit c51a42c

File tree

35 files changed

+211
-146
lines changed

35 files changed

+211
-146
lines changed

OptimizelyDemoApp/OptimizelyDemoApp.xcodeproj/xcshareddata/xcschemes/OptimizelyTVOSDemoApp.xcscheme

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?xml version="1.0" encoding="UTF-8"?>
22
<Scheme
3-
LastUpgradeVersion = "0820"
3+
LastUpgradeVersion = "0830"
44
version = "1.3">
55
<BuildAction
66
parallelizeBuildables = "YES"

OptimizelyDemoApp/OptimizelyDemoApp.xcodeproj/xcshareddata/xcschemes/OptimizelyiOSDemoApp.xcscheme

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?xml version="1.0" encoding="UTF-8"?>
22
<Scheme
3-
LastUpgradeVersion = "0820"
3+
LastUpgradeVersion = "0830"
44
version = "1.3">
55
<BuildAction
66
parallelizeBuildables = "YES"

OptimizelySDKCore/OptimizelySDKCore.xcodeproj/xcshareddata/xcschemes/OptimizelySDKCoreTVOS.xcscheme

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?xml version="1.0" encoding="UTF-8"?>
22
<Scheme
3-
LastUpgradeVersion = "0820"
3+
LastUpgradeVersion = "0830"
44
version = "1.3">
55
<BuildAction
66
parallelizeBuildables = "YES"

OptimizelySDKCore/OptimizelySDKCore.xcodeproj/xcshareddata/xcschemes/OptimizelySDKCoreiOS.xcscheme

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?xml version="1.0" encoding="UTF-8"?>
22
<Scheme
3-
LastUpgradeVersion = "0820"
3+
LastUpgradeVersion = "0830"
44
version = "1.3">
55
<BuildAction
66
parallelizeBuildables = "YES"

OptimizelySDKCore/OptimizelySDKCore/OPTLYBucketer.m

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -62,30 +62,30 @@ - (instancetype)initWithConfig:(OPTLYProjectConfig *)config {
6262

6363
- (OPTLYVariation *)bucketExperiment:(OPTLYExperiment *)experiment
6464
withUserId:(NSString *)userId {
65-
65+
BOOL ok = YES;
6666
// check for mutex
6767
NSString *groupId = experiment.groupId;
6868
if (groupId != nil) {
6969
OPTLYGroup *group = [self.config getGroupForGroupId:groupId];
7070
if (group == nil) {
71-
experiment = nil;
71+
ok = NO;
7272
}
7373
else if ([group.policy isEqualToString:OPTLYBucketerOverlappingPolicy]) {
7474
// do nothing if it is overlapping policy
7575
}
7676
else if ([group.policy isEqualToString:OPTLYBucketerMutexPolicy]) {
7777
OPTLYExperiment *mutexExperiment = [self bucketToExperiment:group withUserId:userId];
7878
if (mutexExperiment != experiment) { // check to see if the experiment the user should fall into is the same experiment we are bucketing
79-
experiment = nil;
79+
ok = NO;
8080
}
8181
}
8282
else {
83-
experiment = nil;
83+
ok = NO;
8484
}
8585
}
8686

8787
// bucket to variation only if experiment passes Mutex check
88-
if (experiment != nil) {
88+
if (ok) {
8989
OPTLYVariation *variation = [self bucketToVariation:experiment withUserId:userId];
9090
return variation;
9191
}

OptimizelySDKCore/OptimizelySDKCore/OPTLYProjectConfigBuilder.m

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,9 @@ - (id) init {
3131
- (id)initWithBlock:(OPTLYProjectConfigBuilderBlock)block {
3232
self = [super init];
3333
if (self != nil) {
34-
block(self);
34+
if (block != nil) {
35+
block(self);
36+
}
3537
if (!_clientEngine) {
3638
_clientEngine = kClientEngine;
3739
}

OptimizelySDKCore/OptimizelySDKCore/Optimizely.m

Lines changed: 20 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -56,38 +56,35 @@ - (instancetype)init {
5656
}
5757

5858
- (instancetype)initWithBuilder:(OPTLYBuilder *)builder {
59-
if (builder != nil) {
60-
self = [super init];
61-
if (self != nil) {
59+
self = [super init];
60+
if (self != nil) {
61+
if (builder != nil) {
6262
_bucketer = builder.bucketer;
6363
_config = builder.config;
6464
_eventBuilder = builder.eventBuilder;
6565
_eventDispatcher = builder.eventDispatcher;
6666
_errorHandler = builder.errorHandler;
6767
_logger = builder.logger;
6868
_userProfileService = builder.userProfileService;
69+
} else {
70+
// Provided OPTLYBuilder object is invalid
71+
if (_logger == nil) {
72+
_logger = [[OPTLYLoggerDefault alloc] initWithLogLevel:OptimizelyLogLevelAll];
73+
}
74+
NSString *logMessage = NSLocalizedString(OPTLYErrorHandlerMessagesBuilderInvalid, nil);
75+
[_logger logMessage:logMessage
76+
withLevel:OptimizelyLogLevelError];
77+
NSError *error = [NSError errorWithDomain:OPTLYErrorHandlerMessagesDomain
78+
code:OPTLYErrorTypesBuilderInvalid
79+
userInfo:@{NSLocalizedDescriptionKey : logMessage}];
80+
if (_errorHandler == nil) {
81+
_errorHandler = [[OPTLYErrorHandlerNoOp alloc] init];
82+
}
83+
[_errorHandler handleError:error];
84+
self = nil;
6985
}
70-
return self;
71-
}
72-
else {
73-
if (_logger == nil) {
74-
_logger = [[OPTLYLoggerDefault alloc] initWithLogLevel:OptimizelyLogLevelAll];
75-
}
76-
77-
NSString *logMessage = NSLocalizedString(OPTLYErrorHandlerMessagesBuilderInvalid, nil);
78-
[_logger logMessage:logMessage
79-
withLevel:OptimizelyLogLevelError];
80-
81-
NSError *error = [NSError errorWithDomain:OPTLYErrorHandlerMessagesDomain
82-
code:OPTLYErrorTypesBuilderInvalid
83-
userInfo:@{NSLocalizedDescriptionKey : logMessage}];
84-
85-
if (_errorHandler == nil) {
86-
_errorHandler = [[OPTLYErrorHandlerNoOp alloc] init];
87-
}
88-
[_errorHandler handleError:error];
89-
return nil;
9086
}
87+
return self;
9188
}
9289

9390
- (OPTLYVariation *)activate:(NSString *)experimentKey

OptimizelySDKDatafileManager/OptimizelySDKDatafileManager.xcodeproj/xcshareddata/xcschemes/OptimizelySDKDatafileManagerTVOS.xcscheme

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?xml version="1.0" encoding="UTF-8"?>
22
<Scheme
3-
LastUpgradeVersion = "0820"
3+
LastUpgradeVersion = "0830"
44
version = "1.3">
55
<BuildAction
66
parallelizeBuildables = "YES"

OptimizelySDKDatafileManager/OptimizelySDKDatafileManager.xcodeproj/xcshareddata/xcschemes/OptimizelySDKDatafileManageriOS.xcscheme

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?xml version="1.0" encoding="UTF-8"?>
22
<Scheme
3-
LastUpgradeVersion = "0820"
3+
LastUpgradeVersion = "0830"
44
version = "1.3">
55
<BuildAction
66
parallelizeBuildables = "YES"

OptimizelySDKEventDispatcher/OptimizelySDKEventDispatcher.xcodeproj/xcshareddata/xcschemes/OptimizelySDKEventDispatcherTVOS.xcscheme

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?xml version="1.0" encoding="UTF-8"?>
22
<Scheme
3-
LastUpgradeVersion = "0820"
3+
LastUpgradeVersion = "0830"
44
version = "1.3">
55
<BuildAction
66
parallelizeBuildables = "YES"

0 commit comments

Comments
 (0)