Merge branch 'mkirk/compiler-warnings'

pull/1/head
Michael Kirk 8 years ago
commit dd95b13d37

@ -136,7 +136,7 @@ CHECKOUT OPTIONS:
:commit: 7054e4b13ee5bcd6d524adb6dc9a726e8c466308 :commit: 7054e4b13ee5bcd6d524adb6dc9a726e8c466308
:git: https://github.com/WhisperSystems/JSQMessagesViewController.git :git: https://github.com/WhisperSystems/JSQMessagesViewController.git
SignalServiceKit: SignalServiceKit:
:commit: 24c84cbbad8d531951034c6e1902ac8cc4a45ead :commit: f078f8adc246d882d78d5b287c0dccc23ec4ce61
:git: https://github.com/WhisperSystems/SignalServiceKit.git :git: https://github.com/WhisperSystems/SignalServiceKit.git
SocketRocket: SocketRocket:
:commit: 877ac7438be3ad0b45ef5ca3969574e4b97112bf :commit: 877ac7438be3ad0b45ef5ca3969574e4b97112bf

@ -1683,7 +1683,7 @@
attributes = { attributes = {
LastSwiftUpdateCheck = 0720; LastSwiftUpdateCheck = 0720;
LastTestingUpgradeCheck = 0600; LastTestingUpgradeCheck = 0600;
LastUpgradeCheck = 0720; LastUpgradeCheck = 0830;
ORGANIZATIONNAME = "Open Whisper Systems"; ORGANIZATIONNAME = "Open Whisper Systems";
TargetAttributes = { TargetAttributes = {
D221A088169C9E5E00537ABF = { D221A088169C9E5E00537ABF = {
@ -2301,6 +2301,7 @@
isa = XCBuildConfiguration; isa = XCBuildConfiguration;
buildSettings = { buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO; ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES; CLANG_ENABLE_OBJC_ARC = YES;
@ -2309,14 +2310,19 @@
CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES; CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_IMPLICIT_SIGN_CONVERSION = YES; CLANG_WARN_IMPLICIT_SIGN_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES; CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_OBJC_RECEIVER_WEAK = YES; CLANG_WARN_OBJC_RECEIVER_WEAK = YES;
CLANG_WARN_SUSPICIOUS_IMPLICIT_CONVERSION = YES; CLANG_WARN_SUSPICIOUS_IMPLICIT_CONVERSION = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__ARC_BRIDGE_CAST_NONARC = YES; CLANG_WARN__ARC_BRIDGE_CAST_NONARC = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
CODE_SIGN_IDENTITY = "iPhone Developer"; CODE_SIGN_IDENTITY = "iPhone Developer";
ENABLE_BITCODE = NO; ENABLE_BITCODE = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES;
ENABLE_TESTABILITY = YES; ENABLE_TESTABILITY = YES;
GCC_NO_COMMON_BLOCKS = YES;
GCC_PREPROCESSOR_DEFINITIONS = ( GCC_PREPROCESSOR_DEFINITIONS = (
"DEBUG=1", "DEBUG=1",
"$(inherited)", "$(inherited)",
@ -2360,6 +2366,7 @@
isa = XCBuildConfiguration; isa = XCBuildConfiguration;
buildSettings = { buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO; ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES; CLANG_ENABLE_OBJC_ARC = YES;
@ -2368,13 +2375,18 @@
CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES; CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_IMPLICIT_SIGN_CONVERSION = YES; CLANG_WARN_IMPLICIT_SIGN_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES; CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_OBJC_RECEIVER_WEAK = YES; CLANG_WARN_OBJC_RECEIVER_WEAK = YES;
CLANG_WARN_SUSPICIOUS_IMPLICIT_CONVERSION = YES; CLANG_WARN_SUSPICIOUS_IMPLICIT_CONVERSION = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__ARC_BRIDGE_CAST_NONARC = YES; CLANG_WARN__ARC_BRIDGE_CAST_NONARC = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_IDENTITY = "iPhone Distribution";
ENABLE_BITCODE = NO; ENABLE_BITCODE = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES;
GCC_NO_COMMON_BLOCKS = YES;
GCC_TREAT_IMPLICIT_FUNCTION_DECLARATIONS_AS_ERRORS = YES; GCC_TREAT_IMPLICIT_FUNCTION_DECLARATIONS_AS_ERRORS = YES;
GCC_TREAT_INCOMPATIBLE_POINTER_TYPE_WARNINGS_AS_ERRORS = YES; GCC_TREAT_INCOMPATIBLE_POINTER_TYPE_WARNINGS_AS_ERRORS = YES;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
@ -2409,6 +2421,7 @@
"-fobjc-arc-exceptions", "-fobjc-arc-exceptions",
); );
SDKROOT = iphoneos; SDKROOT = iphoneos;
SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
VALIDATE_PRODUCT = YES; VALIDATE_PRODUCT = YES;
}; };
name = "App Store Release"; name = "App Store Release";
@ -2641,7 +2654,7 @@
PRODUCT_NAME = SignalTests; PRODUCT_NAME = SignalTests;
PROVISIONING_PROFILE = ""; PROVISIONING_PROFILE = "";
SWIFT_OBJC_BRIDGING_HEADER = "Signal/test/SignalTests-Bridging-Header.h"; SWIFT_OBJC_BRIDGING_HEADER = "Signal/test/SignalTests-Bridging-Header.h";
SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
SWIFT_VERSION = 3.0; SWIFT_VERSION = 3.0;
TEST_HOST = "$(BUNDLE_LOADER)"; TEST_HOST = "$(BUNDLE_LOADER)";
VALID_ARCHS = "arm64 armv7s armv7 i386 x86_64"; VALID_ARCHS = "arm64 armv7s armv7 i386 x86_64";

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<Scheme <Scheme
LastUpgradeVersion = "0700" LastUpgradeVersion = "0830"
version = "1.3"> version = "1.3">
<BuildAction <BuildAction
parallelizeBuildables = "YES" parallelizeBuildables = "YES"
@ -28,7 +28,7 @@
buildForAnalyzing = "YES"> buildForAnalyzing = "YES">
<BuildableReference <BuildableReference
BuildableIdentifier = "primary" BuildableIdentifier = "primary"
BlueprintIdentifier = "3B95C6D0A8DCB0450154B28670B6343E" BlueprintIdentifier = "606C728DF011400A4DF4884E7704A3D9"
BuildableName = "libSignalServiceKit.a" BuildableName = "libSignalServiceKit.a"
BlueprintName = "SignalServiceKit" BlueprintName = "SignalServiceKit"
ReferencedContainer = "container:Pods/Pods.xcodeproj"> ReferencedContainer = "container:Pods/Pods.xcodeproj">

@ -188,7 +188,7 @@ class MessageFetcherJob: NSObject {
Logger.debug("\(self.TAG) acknowledged delivery for message at timestamp: \(envelope.timestamp)") Logger.debug("\(self.TAG) acknowledged delivery for message at timestamp: \(envelope.timestamp)")
}, },
failure: { (_: URLSessionDataTask?, error: Error?) in failure: { (_: URLSessionDataTask?, error: Error?) in
Logger.debug("\(self.TAG) acknowledging delivery for message at timestamp: \(envelope.timestamp) failed with error: \(error)") Logger.debug("\(self.TAG) acknowledging delivery for message at timestamp: \(envelope.timestamp) failed with error: \(String(describing: error))")
}) })
} }
} }

@ -1,5 +1,6 @@
// Created by Michael Kirk on 11/15/16. //
// Copyright © 2016 Open Whisper Systems. All rights reserved. // Copyright (c) 2017 Open Whisper Systems. All rights reserved.
//
import Foundation import Foundation
@ -7,8 +8,8 @@ let CompareSafetyNumbersActivityType = "org.whispersystems.signal.activity.Compa
@objc(OWSCompareSafetyNumbersActivityDelegate) @objc(OWSCompareSafetyNumbersActivityDelegate)
protocol CompareSafetyNumbersActivityDelegate { protocol CompareSafetyNumbersActivityDelegate {
func compareSafetyNumbersActivitySucceeded(activity: CompareSafetyNumbersActivity) -> Void; func compareSafetyNumbersActivitySucceeded(activity: CompareSafetyNumbersActivity)
func compareSafetyNumbersActivity(_ activity: CompareSafetyNumbersActivity, failedWithError error: Error) -> Void; func compareSafetyNumbersActivity(_ activity: CompareSafetyNumbersActivity, failedWithError error: Error)
} }
@objc (OWSCompareSafetyNumbersActivity) @objc (OWSCompareSafetyNumbersActivity)
@ -18,7 +19,7 @@ class CompareSafetyNumbersActivity: UIActivity {
var mySafetyNumbers: String? var mySafetyNumbers: String?
let delegate: CompareSafetyNumbersActivityDelegate let delegate: CompareSafetyNumbersActivityDelegate
required init(delegate:CompareSafetyNumbersActivityDelegate) { required init(delegate: CompareSafetyNumbersActivityDelegate) {
self.delegate = delegate self.delegate = delegate
super.init() super.init()
} }
@ -59,7 +60,7 @@ class CompareSafetyNumbersActivity: UIActivity {
let pasteboardString = numericOnly(string: UIPasteboard.general.string) let pasteboardString = numericOnly(string: UIPasteboard.general.string)
guard (pasteboardString != nil && pasteboardString!.characters.count == 60) else { guard (pasteboardString != nil && pasteboardString!.characters.count == 60) else {
Logger.warn("\(TAG) no valid safety numbers found in pasteboard: \(pasteboardString)") Logger.warn("\(TAG) no valid safety numbers found in pasteboard: \(String(describing: pasteboardString))")
let error = OWSErrorWithCodeDescription(OWSErrorCode.userError, let error = OWSErrorWithCodeDescription(OWSErrorCode.userError,
NSLocalizedString("PRIVACY_VERIFICATION_FAILED_NO_SAFETY_NUMBERS_IN_CLIPBOARD", comment: "Alert body for user error")) NSLocalizedString("PRIVACY_VERIFICATION_FAILED_NO_SAFETY_NUMBERS_IN_CLIPBOARD", comment: "Alert body for user error"))
@ -70,10 +71,10 @@ class CompareSafetyNumbersActivity: UIActivity {
let pasteboardSafetyNumbers = pasteboardString! let pasteboardSafetyNumbers = pasteboardString!
if pasteboardSafetyNumbers == mySafetyNumbers { if pasteboardSafetyNumbers == mySafetyNumbers {
Logger.info("\(TAG) successfully matched safety numbers. local numbers: \(mySafetyNumbers) pasteboard:\(pasteboardSafetyNumbers)") Logger.info("\(TAG) successfully matched safety numbers. local numbers: \(String(describing: mySafetyNumbers)) pasteboard:\(pasteboardSafetyNumbers)")
delegate.compareSafetyNumbersActivitySucceeded(activity:self) delegate.compareSafetyNumbersActivitySucceeded(activity:self)
} else { } else {
Logger.warn("\(TAG) local numbers: \(mySafetyNumbers) didn't match pasteboard:\(pasteboardSafetyNumbers)") Logger.warn("\(TAG) local numbers: \(String(describing: mySafetyNumbers)) didn't match pasteboard:\(pasteboardSafetyNumbers)")
let error = OWSErrorWithCodeDescription(OWSErrorCode.privacyVerificationFailure, let error = OWSErrorWithCodeDescription(OWSErrorCode.privacyVerificationFailure,
NSLocalizedString("PRIVACY_VERIFICATION_FAILED_MISMATCHED_SAFETY_NUMBERS_IN_CLIPBOARD", comment: "Alert body")) NSLocalizedString("PRIVACY_VERIFICATION_FAILED_MISMATCHED_SAFETY_NUMBERS_IN_CLIPBOARD", comment: "Alert body"))
delegate.compareSafetyNumbersActivity(self, failedWithError: error) delegate.compareSafetyNumbersActivity(self, failedWithError: error)

@ -868,10 +868,8 @@ class CallViewController: UIViewController, CallObserver, CallServiceObserver, R
self.localVideoTrack = localVideoTrack self.localVideoTrack = localVideoTrack
var source: RTCAVFoundationVideoSource? let source = localVideoTrack?.source as? RTCAVFoundationVideoSource
if localVideoTrack?.source is RTCAVFoundationVideoSource {
source = localVideoTrack?.source as! RTCAVFoundationVideoSource
}
localVideoView.captureSession = source?.captureSession localVideoView.captureSession = source?.captureSession
let isHidden = source == nil let isHidden = source == nil
Logger.info("\(TAG) \(#function) isHidden: \(isHidden)") Logger.info("\(TAG) \(#function) isHidden: \(isHidden)")

@ -347,7 +347,7 @@ fileprivate extension CNContact {
@objc var nameForCollating: String { @objc var nameForCollating: String {
get { get {
if self.familyName.isEmpty && self.givenName.isEmpty { if self.familyName.isEmpty && self.givenName.isEmpty {
return self.emailAddresses.first?.value as? String ?? "" return self.emailAddresses.first?.value as String? ?? ""
} }
let compositeName: String let compositeName: String

@ -80,7 +80,7 @@ class SignalAttachment: NSObject {
AssertIsOnMainThread() AssertIsOnMainThread()
assert(oldValue == nil) assert(oldValue == nil)
Logger.verbose("\(SignalAttachment.TAG) Attachment has error: \(error)") Logger.verbose("\(SignalAttachment.TAG) Attachment has error: \(String(describing: error))")
} }
} }

@ -308,7 +308,7 @@ import AVFoundation
Logger.debug("\(self.TAG) set category: \(category) options: \(options)") Logger.debug("\(self.TAG) set category: \(category) options: \(options)")
} }
} catch { } catch {
let message = "\(self.TAG) in \(#function) failed to set category: \(category) mode: \(mode), options: \(options) with error: \(error)" let message = "\(self.TAG) in \(#function) failed to set category: \(category) mode: \(String(describing: mode)), options: \(options) with error: \(error)"
assertionFailure(message) assertionFailure(message)
Logger.error(message) Logger.error(message)
} }

@ -125,7 +125,7 @@ protocol CallServiceObserver: class {
didSet { didSet {
AssertIsOnMainThread() AssertIsOnMainThread()
Logger.debug("\(self.TAG) .peerConnectionClient setter: \(oldValue != nil) -> \(peerConnectionClient != nil) \(peerConnectionClient)") Logger.debug("\(self.TAG) .peerConnectionClient setter: \(oldValue != nil) -> \(peerConnectionClient != nil) \(String(describing: peerConnectionClient))")
} }
} }
@ -141,7 +141,7 @@ protocol CallServiceObserver: class {
updateIsVideoEnabled() updateIsVideoEnabled()
updateLockTimerEnabling() updateLockTimerEnabling()
Logger.debug("\(self.TAG) .call setter: \(oldValue != nil) -> \(call != nil) \(call)") Logger.debug("\(self.TAG) .call setter: \(oldValue != nil) -> \(call != nil) \(String(describing: call))")
for observer in observers { for observer in observers {
observer.value?.didUpdateCall(call:call) observer.value?.didUpdateCall(call:call)
@ -688,7 +688,7 @@ protocol CallServiceObserver: class {
guard thread.contactIdentifier() == self.thread?.contactIdentifier() else { guard thread.contactIdentifier() == self.thread?.contactIdentifier() else {
// This can safely be ignored. // This can safely be ignored.
// We don't want to fail the current call because an old call was slow to send us the hangup message. // We don't want to fail the current call because an old call was slow to send us the hangup message.
Logger.warn("\(TAG) ignoring hangup for thread:\(thread) which is not the current thread: \(self.thread)") Logger.warn("\(TAG) ignoring hangup for thread:\(thread) which is not the current thread: \(String(describing: self.thread))")
return return
} }

@ -1,3 +1,7 @@
//
// Copyright (c) 2017 Open Whisper Systems. All rights reserved.
//
#import <Foundation/Foundation.h> #import <Foundation/Foundation.h>
@interface NSString (Util) @interface NSString (Util)
@ -11,11 +15,9 @@
- (NSString *)withMatchesAgainst:(NSRegularExpression *)regex replacedBy:(NSString *)replacement; - (NSString *)withMatchesAgainst:(NSRegularExpression *)regex replacedBy:(NSString *)replacement;
- (bool)containsAnyMatches:(NSRegularExpression *)regex; - (bool)containsAnyMatches:(NSRegularExpression *)regex;
- (NSString *)withPrefixRemovedElseNull:(NSString *)prefix; - (NSString *)withPrefixRemovedElseNull:(NSString *)prefix;
- (NSData *)decodedAsJsonIntoData;
- (NSDictionary *)decodedAsJsonIntoDictionary; - (NSDictionary *)decodedAsJsonIntoDictionary;
- (NSData *)decodedAsHexString;
- (NSData *)decodedAsSpaceSeparatedHexString;
- (NSData *)decodedAsBase64Data;
- (NSNumber *)tryParseAsDecimalNumber; - (NSNumber *)tryParseAsDecimalNumber;
- (NSNumber *)tryParseAsUnsignedInteger; - (NSNumber *)tryParseAsUnsignedInteger;
- (NSString *)removeAllCharactersIn:(NSCharacterSet *)characterSet; - (NSString *)removeAllCharactersIn:(NSCharacterSet *)characterSet;

@ -6,20 +6,7 @@
#import "StringUtil.h" #import "StringUtil.h"
@implementation NSString (Util) @implementation NSString (Util)
- (NSData *)decodedAsHexString {
ows_require(self.length % 2 == 0);
NSUInteger n = self.length / 2;
uint8_t result[n];
for (NSUInteger i = 0; i < n; i++) {
unsigned int r;
NSScanner *scanner = [NSScanner scannerWithString:[self substringWithRange:NSMakeRange(i * 2, 2)]];
checkOperation([scanner scanHexInt:&r]);
checkOperation(r < 256);
result[i] = (uint8_t)r;
}
return [NSData dataWithBytes:result length:sizeof(result)];
}
- (NSData *)encodedAsUtf8 { - (NSData *)encodedAsUtf8 {
NSData *result = [self dataUsingEncoding:NSUTF8StringEncoding]; NSData *result = [self dataUsingEncoding:NSUTF8StringEncoding];
checkOperationDescribe(result != nil, @"Not a UTF8 string."); checkOperationDescribe(result != nil, @"Not a UTF8 string.");
@ -54,13 +41,6 @@
return nil; return nil;
return [self substringFromIndex:prefix.length]; return [self substringFromIndex:prefix.length];
} }
- (NSData *)decodedAsJsonIntoData {
NSError *jsonParseError = nil;
id parsedJson = [NSJSONSerialization dataWithJSONObject:self.encodedAsUtf8 options:0 error:&jsonParseError];
checkOperationDescribe(jsonParseError == nil, ([NSString stringWithFormat:@"Invalid json: %@", self]));
checkOperationDescribe([parsedJson isKindOfClass:NSData.class], @"Unexpected json data");
return parsedJson;
}
- (NSDictionary *)decodedAsJsonIntoDictionary { - (NSDictionary *)decodedAsJsonIntoDictionary {
NSError *jsonParseError = nil; NSError *jsonParseError = nil;
id parsedJson = [NSJSONSerialization JSONObjectWithData:self.encodedAsUtf8 options:0 error:&jsonParseError]; id parsedJson = [NSJSONSerialization JSONObjectWithData:self.encodedAsUtf8 options:0 error:&jsonParseError];

Loading…
Cancel
Save