diff --git a/CHANGELOG.md b/CHANGELOG.md index b94836ff87b..0986ee44720 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,6 @@ +## 12.X.X 2018-XX-XX +* Now matches clang static analyzer settings with Cocoapods, so you won't see any more analyzer issues. + ## 12.1.0 2018-02-05 * Adds `createCardSources` to `STPPaymentConfiguration`. If you enable this option, when your user adds a card in the SDK's UI, a card source will be created and attached to their Stripe Customer. If this option is disabled (the default), a card token is created. For more information on card sources, see https://stripe.com/docs/sources/cards diff --git a/Stripe/BuildConfigurations/Project-Shared.xcconfig b/Stripe/BuildConfigurations/Project-Shared.xcconfig index cf9d0a1ba0b..da168f2dc30 100644 --- a/Stripe/BuildConfigurations/Project-Shared.xcconfig +++ b/Stripe/BuildConfigurations/Project-Shared.xcconfig @@ -61,6 +61,12 @@ CLANG_WARN_UNREACHABLE_CODE = YES CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; +CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + +// Default value is YES_NONAGGRESSIVE. YES is "Yes, Aggressive" in Xcode 9 UI +CLANG_ANALYZER_NONNULL = YES; + + CLANG_WARN_INFINITE_RECURSION = YES; diff --git a/Stripe/STPAPIRequest.m b/Stripe/STPAPIRequest.m index a9769af43a5..0538d22f92b 100644 --- a/Stripe/STPAPIRequest.m +++ b/Stripe/STPAPIRequest.m @@ -155,7 +155,7 @@ + (void)parseResponse:(NSURLResponse *)response // Some deserializers don't conform to STPInternalAPIResponseDecodable deserializerClass = [deserializers.firstObject class]; } - else { + else if (objectString != nil) { for (id deserializer in deserializers) { if ([deserializer respondsToSelector:@selector(stripeObject)] && [[(id)deserializer stripeObject] isEqualToString:objectString]) { diff --git a/Stripe/STPAddress.m b/Stripe/STPAddress.m index 7ef71a7c2a2..4dd40355267 100644 --- a/Stripe/STPAddress.m +++ b/Stripe/STPAddress.m @@ -257,7 +257,7 @@ + (PKAddressField)pkAddressFieldsFromStripeContactFields:(NSSet for (STPContactField contactField in contactFields) { NSNumber *boxedConvertedField = contactToAddressFieldMap[contactField]; - if (boxedConvertedField) { + if (boxedConvertedField != nil) { addressFields = (PKAddressField) (addressFields | [boxedConvertedField unsignedIntegerValue]); } } diff --git a/Stripe/STPBankAccount.m b/Stripe/STPBankAccount.m index 9927515bece..1bc82c52efc 100644 --- a/Stripe/STPBankAccount.m +++ b/Stripe/STPBankAccount.m @@ -50,7 +50,7 @@ + (STPBankAccountStatus)statusFromString:(NSString *)string { NSString *key = [string lowercaseString]; NSNumber *statusNumber = [self stringToStatusMapping][key]; - if (statusNumber) { + if (statusNumber != nil) { return (STPBankAccountStatus)[statusNumber integerValue]; } diff --git a/Stripe/STPBankAccountParams.m b/Stripe/STPBankAccountParams.m index b85818b2b86..ace1f49fe1a 100644 --- a/Stripe/STPBankAccountParams.m +++ b/Stripe/STPBankAccountParams.m @@ -51,7 +51,7 @@ + (STPBankAccountHolderType)accountHolderTypeFromString:(NSString *)string { NSString *key = [string lowercaseString]; NSNumber *accountHolderTypeNumber = [self stringToAccountHolderTypeMapping][key]; - if (accountHolderTypeNumber) { + if (accountHolderTypeNumber != nil) { return (STPBankAccountHolderType)[accountHolderTypeNumber integerValue]; } diff --git a/Stripe/STPCard.m b/Stripe/STPCard.m index 6d0fed8be08..fc53a0ab6c6 100644 --- a/Stripe/STPCard.m +++ b/Stripe/STPCard.m @@ -92,7 +92,7 @@ + (STPCardFundingType)fundingFromString:(NSString *)string { NSString *key = [string lowercaseString]; NSNumber *fundingNumber = [self stringToFundingMapping][key]; - if (fundingNumber) { + if (fundingNumber != nil) { return (STPCardFundingType)[fundingNumber integerValue]; } @@ -181,7 +181,7 @@ + (nullable instancetype)decodedObjectFromAPIResponse:(nullable NSDictionary *)r NSString *rawBrand = [dict stp_stringForKey:@"brand"]; NSNumber *rawExpMonth = [dict stp_numberForKey:@"exp_month"]; NSNumber *rawExpYear = [dict stp_numberForKey:@"exp_year"]; - if (!stripeId || !last4 || !rawBrand || !rawExpMonth || !rawExpYear) { + if (stripeId == nil || last4 == nil || rawBrand == nil || rawExpMonth == nil || rawExpYear == nil) { return nil; } diff --git a/Stripe/STPFile.m b/Stripe/STPFile.m index 5590db8eadd..4530d5224f6 100644 --- a/Stripe/STPFile.m +++ b/Stripe/STPFile.m @@ -41,7 +41,7 @@ + (STPFilePurpose)purposeFromString:(NSString *)string { NSString *key = [string lowercaseString]; NSNumber *purposeNumber = [self stringToPurposeMapping][key]; - if (purposeNumber) { + if (purposeNumber != nil) { return (STPFilePurpose)[purposeNumber integerValue]; } @@ -88,7 +88,7 @@ + (instancetype)decodedObjectFromAPIResponse:(NSDictionary *)response { NSNumber *size = [dict stp_numberForKey:@"size"]; NSString *type = [dict stp_stringForKey:@"type"]; NSString *rawPurpose = [dict stp_stringForKey:@"purpose"]; - if (!stripeId || !created || !size || !type || !rawPurpose) { + if (stripeId == nil || created == nil || size == nil || type == nil || rawPurpose == nil) { return nil; } diff --git a/Stripe/STPSource.m b/Stripe/STPSource.m index 5abf0f8015e..3db03df9d72 100644 --- a/Stripe/STPSource.m +++ b/Stripe/STPSource.m @@ -68,7 +68,7 @@ + (STPSourceType)typeFromString:(NSString *)string { NSString *key = [string lowercaseString]; NSNumber *typeNumber = [self stringToTypeMapping][key]; - if (typeNumber) { + if (typeNumber != nil) { return (STPSourceType)[typeNumber integerValue]; } @@ -94,7 +94,7 @@ + (STPSourceFlow)flowFromString:(NSString *)string { NSString *key = [string lowercaseString]; NSNumber *flowNumber = [self stringToFlowMapping][key]; - if (flowNumber) { + if (flowNumber != nil) { return (STPSourceFlow)[flowNumber integerValue]; } @@ -121,7 +121,7 @@ + (STPSourceStatus)statusFromString:(NSString *)string { NSString *key = [string lowercaseString]; NSNumber *statusNumber = [self stringToStatusMapping][key]; - if (statusNumber) { + if (statusNumber != nil) { return (STPSourceStatus)[statusNumber integerValue]; } @@ -145,7 +145,7 @@ + (STPSourceUsage)usageFromString:(NSString *)string { NSString *key = [string lowercaseString]; NSNumber *usageNumber = [self stringToUsageMapping][key]; - if (usageNumber) { + if (usageNumber != nil) { return (STPSourceUsage)[usageNumber integerValue]; } diff --git a/Stripe/STPSourceCardDetails.m b/Stripe/STPSourceCardDetails.m index f9efe70a30d..45a77ca26cc 100644 --- a/Stripe/STPSourceCardDetails.m +++ b/Stripe/STPSourceCardDetails.m @@ -69,7 +69,7 @@ + (STPSourceCard3DSecureStatus)threeDSecureStatusFromString:(NSString *)string { NSString *key = [string lowercaseString]; NSNumber *threeDSecureStatusNumber = [self stringToThreeDSecureStatusMapping][key]; - if (threeDSecureStatusNumber) { + if (threeDSecureStatusNumber != nil) { return (STPSourceCard3DSecureStatus)[threeDSecureStatusNumber integerValue]; } diff --git a/Stripe/STPSourceRedirect.m b/Stripe/STPSourceRedirect.m index 5ece9067d45..846515141fa 100644 --- a/Stripe/STPSourceRedirect.m +++ b/Stripe/STPSourceRedirect.m @@ -36,7 +36,7 @@ + (STPSourceRedirectStatus)statusFromString:(NSString *)string { NSString *key = [string lowercaseString]; NSNumber *statusNumber = [self stringToStatusMapping][key]; - if (statusNumber) { + if (statusNumber != nil) { return (STPSourceRedirectStatus)[statusNumber integerValue]; } diff --git a/Stripe/STPSourceVerification.m b/Stripe/STPSourceVerification.m index 72861452c12..c99b97d1b92 100644 --- a/Stripe/STPSourceVerification.m +++ b/Stripe/STPSourceVerification.m @@ -35,7 +35,7 @@ + (STPSourceVerificationStatus)statusFromString:(NSString *)string { NSString *key = [string lowercaseString]; NSNumber *statusNumber = [self stringToStatusMapping][key]; - if (statusNumber) { + if (statusNumber != nil) { return (STPSourceVerificationStatus)[statusNumber integerValue]; } diff --git a/Stripe/STPTheme.m b/Stripe/STPTheme.m index a5ddf0c1641..fd6c9fddfbc 100644 --- a/Stripe/STPTheme.m +++ b/Stripe/STPTheme.m @@ -137,7 +137,7 @@ - (void)setBarStyle:(UIBarStyle)barStyle { } - (UIBarStyle)barStyle { - if (_internalBarStyle) { + if (_internalBarStyle != nil) { return [_internalBarStyle integerValue]; } return [self barStyleForColor:self.secondaryBackgroundColor];