From d7f5834bec7215192a538758427aa1592dd77604 Mon Sep 17 00:00:00 2001 From: Mikael Sand Date: Sun, 21 Oct 2018 19:38:29 +0300 Subject: [PATCH] [ios] Simplify ios build conf. Add stricter warnings and fix them. --- ios/Brushes/RNSVGPainter.m | 6 +- ios/Brushes/RNSVGPainterBrush.m | 2 +- ios/Elements/RNSVGGroup.m | 2 +- ios/RNSVG.xcodeproj/project.pbxproj | 104 ++++++++++------------------ ios/RNSVGRenderable.m | 6 +- ios/Text/RNSVGTSpan.m | 6 +- ios/Utils/RNSVGBezierElement.h | 2 +- ios/Utils/RNSVGLength.h | 2 +- ios/Utils/RNSVGLength.m | 2 +- ios/Utils/RNSVGPathParser.m | 4 +- ios/ViewManagers/RNSVGNodeManager.m | 4 +- 11 files changed, 56 insertions(+), 84 deletions(-) diff --git a/ios/Brushes/RNSVGPainter.m b/ios/Brushes/RNSVGPainter.m index bccc5244..8ffcee44 100644 --- a/ios/Brushes/RNSVGPainter.m +++ b/ios/Brushes/RNSVGPainter.m @@ -88,11 +88,11 @@ RCT_NOT_IMPLEMENTED(- (instancetype)init) - (void)paint:(CGContextRef)context bounds:(CGRect)bounds { if (_type == kRNSVGLinearGradient) { - [self paintLinearGradient:context bounds:(CGRect)bounds]; + [self paintLinearGradient:context bounds:bounds]; } else if (_type == kRNSVGRadialGradient) { - [self paintRadialGradient:context bounds:(CGRect)bounds]; + [self paintRadialGradient:context bounds:bounds]; } else if (_type == kRNSVGPattern) { - [self paintPattern:context bounds:(CGRect)bounds]; + [self paintPattern:context bounds:bounds]; } } diff --git a/ios/Brushes/RNSVGPainterBrush.m b/ios/Brushes/RNSVGPainterBrush.m index 08d061ee..9a429735 100644 --- a/ios/Brushes/RNSVGPainterBrush.m +++ b/ios/Brushes/RNSVGPainterBrush.m @@ -35,7 +35,7 @@ CGContextBeginTransparencyLayer(context, NULL); } - [painter paint:context bounds:(CGRect)bounds]; + [painter paint:context bounds:bounds]; if (transparency) { CGContextEndTransparencyLayer(context); diff --git a/ios/Elements/RNSVGGroup.m b/ios/Elements/RNSVGGroup.m index b46285e7..3293b13f 100644 --- a/ios/Elements/RNSVGGroup.m +++ b/ios/Elements/RNSVGGroup.m @@ -64,7 +64,7 @@ CGFloat height = [self relativeOnHeightString:svgView.bbHeight]; CGRect rect = CGRectMake(0, 0, width, height); CGContextClipToRect(context, rect); - [svgView drawToContext:context withRect:(CGRect)rect]; + [svgView drawToContext:context withRect:rect]; } else { [node drawRect:rect]; } diff --git a/ios/RNSVG.xcodeproj/project.pbxproj b/ios/RNSVG.xcodeproj/project.pbxproj index 9e6cb6e0..8e861247 100644 --- a/ios/RNSVG.xcodeproj/project.pbxproj +++ b/ios/RNSVG.xcodeproj/project.pbxproj @@ -696,34 +696,41 @@ 0CF68AD31AF0540F00FF9E5C /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; + CLANG_ADDRESS_SANITIZER_CONTAINER_OVERFLOW = YES; + CLANG_ANALYZER_SECURITY_FLOATLOOPCOUNTER = YES; CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; + CLANG_UNDEFINED_BEHAVIOR_SANITIZER_INTEGER = YES; + CLANG_UNDEFINED_BEHAVIOR_SANITIZER_NULLABILITY = YES; + CLANG_WARN_ASSIGN_ENUM = YES; CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; CLANG_WARN_BOOL_CONVERSION = YES; CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_CXX0X_EXTENSIONS = YES; CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_FLOAT_CONVERSION = YES; CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_EXPLICIT_OWNERSHIP_TYPE = YES; + CLANG_WARN_OBJC_IMPLICIT_ATOMIC_PROPERTIES = YES; CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_IMPLICIT_CONVERSION = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CLANG_WARN__EXIT_TIME_DESTRUCTORS = YES; COPY_PHASE_STRIP = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_TESTABILITY = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; GCC_DYNAMIC_NO_PIC = NO; GCC_NO_COMMON_BLOCKS = YES; GCC_OPTIMIZATION_LEVEL = 0; @@ -733,23 +740,22 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_FOUR_CHARACTER_CONSTANTS = YES; + GCC_WARN_HIDDEN_VIRTUAL_FUNCTIONS = YES; + GCC_WARN_INITIALIZER_NOT_FULLY_BRACKETED = YES; + GCC_WARN_NON_VIRTUAL_DESTRUCTOR = YES; + GCC_WARN_STRICT_SELECTOR_MATCH = YES; GCC_WARN_UNDECLARED_SELECTOR = YES; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNKNOWN_PRAGMAS = YES; GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_LABEL = YES; GCC_WARN_UNUSED_VARIABLE = YES; - HEADER_SEARCH_PATHS = ( - "$(inherited)", - /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, - "$(SRCROOT)/../../React/**", - ); IPHONEOS_DEPLOYMENT_TARGET = 8.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; - OTHER_LDFLAGS = ( - "-ObjC++", - "-lstdc++", - ); SDKROOT = iphoneos; }; name = Debug; @@ -757,52 +763,58 @@ 0CF68AD41AF0540F00FF9E5C /* Release */ = { isa = XCBuildConfiguration; buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; + CLANG_ADDRESS_SANITIZER_CONTAINER_OVERFLOW = YES; + CLANG_ANALYZER_SECURITY_FLOATLOOPCOUNTER = YES; CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; + CLANG_UNDEFINED_BEHAVIOR_SANITIZER_INTEGER = YES; + CLANG_UNDEFINED_BEHAVIOR_SANITIZER_NULLABILITY = YES; + CLANG_WARN_ASSIGN_ENUM = YES; CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; CLANG_WARN_BOOL_CONVERSION = YES; CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_CXX0X_EXTENSIONS = YES; CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_FLOAT_CONVERSION = YES; CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_EXPLICIT_OWNERSHIP_TYPE = YES; + CLANG_WARN_OBJC_IMPLICIT_ATOMIC_PROPERTIES = YES; CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_IMPLICIT_CONVERSION = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CLANG_WARN__EXIT_TIME_DESTRUCTORS = YES; COPY_PHASE_STRIP = NO; ENABLE_NS_ASSERTIONS = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; GCC_NO_COMMON_BLOCKS = YES; GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_FOUR_CHARACTER_CONSTANTS = YES; + GCC_WARN_HIDDEN_VIRTUAL_FUNCTIONS = YES; + GCC_WARN_INITIALIZER_NOT_FULLY_BRACKETED = YES; + GCC_WARN_NON_VIRTUAL_DESTRUCTOR = YES; + GCC_WARN_STRICT_SELECTOR_MATCH = YES; GCC_WARN_UNDECLARED_SELECTOR = YES; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNKNOWN_PRAGMAS = YES; GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_LABEL = YES; GCC_WARN_UNUSED_VARIABLE = YES; - HEADER_SEARCH_PATHS = ( - "$(inherited)", - /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, - "$(SRCROOT)/../../React/**", - ); IPHONEOS_DEPLOYMENT_TARGET = 8.0; MTL_ENABLE_DEBUG_INFO = NO; - OTHER_LDFLAGS = ( - "-ObjC++", - "-lstdc++", - ); SDKROOT = iphoneos; VALIDATE_PRODUCT = YES; }; @@ -812,20 +824,6 @@ isa = XCBuildConfiguration; buildSettings = { CLANG_ENABLE_MODULE_DEBUGGING = YES; - FRAMEWORK_SEARCH_PATHS = ""; - HEADER_SEARCH_PATHS = ( - "$(inherited)", - /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, - "$(BUILT_PRODUCTS_DIR)/usr/local/include", - ./PerformanceBezier, - "./QuartzBookPack/**", - ); - LIBRARY_SEARCH_PATHS = ""; - OTHER_LDFLAGS = ( - "-all_load", - "-ObjC", - ); - PRELINK_LIBS = ""; PRODUCT_NAME = RNSVG; PUBLIC_HEADERS_FOLDER_PATH = /usr/local/include/; SKIP_INSTALL = YES; @@ -836,20 +834,6 @@ isa = XCBuildConfiguration; buildSettings = { CLANG_ENABLE_MODULE_DEBUGGING = YES; - FRAMEWORK_SEARCH_PATHS = ""; - HEADER_SEARCH_PATHS = ( - "$(inherited)", - /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, - "$(BUILT_PRODUCTS_DIR)/usr/local/include", - ./PerformanceBezier, - "./QuartzBookPack/**", - ); - LIBRARY_SEARCH_PATHS = ""; - OTHER_LDFLAGS = ( - "-all_load", - "-ObjC", - ); - PRELINK_LIBS = ""; PRODUCT_NAME = RNSVG; PUBLIC_HEADERS_FOLDER_PATH = /usr/local/include/; SKIP_INSTALL = YES; @@ -859,12 +843,6 @@ A361E7A11EB0C33D00646005 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { - HEADER_SEARCH_PATHS = ( - "$(inherited)", - /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, - "$(BUILT_PRODUCTS_DIR)/usr/local/include", - ); - OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; PUBLIC_HEADERS_FOLDER_PATH = /usr/local/include/; SDKROOT = appletvos; @@ -875,12 +853,6 @@ A361E7A21EB0C33D00646005 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { - HEADER_SEARCH_PATHS = ( - "$(inherited)", - /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, - "$(BUILT_PRODUCTS_DIR)/usr/local/include", - ); - OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; PUBLIC_HEADERS_FOLDER_PATH = /usr/local/include/; SDKROOT = appletvos; diff --git a/ios/RNSVGRenderable.m b/ios/RNSVGRenderable.m index 7e137cde..6170f3dd 100644 --- a/ios/RNSVGRenderable.m +++ b/ios/RNSVGRenderable.m @@ -162,7 +162,7 @@ UInt32 saturate(CGFloat value) { - return value <= 0 ? 0 : value >= 255 ? 255 : value; + return value <= 0 ? 0 : value >= 255 ? 255 : (UInt32)value; } - (void)renderTo:(CGContextRef)context rect:(CGRect)rect @@ -183,8 +183,8 @@ UInt32 saturate(CGFloat value) { CGSize boundsSize = bounds.size; CGFloat height = boundsSize.height; CGFloat width = boundsSize.width; - NSUInteger iheight = height; - NSUInteger iwidth = width; + NSUInteger iheight = (NSUInteger)height; + NSUInteger iwidth = (NSUInteger)width; NSUInteger npixels = iheight * iwidth; CGRect drawBounds = CGRectMake(0, 0, width, height); diff --git a/ios/Text/RNSVGTSpan.m b/ios/Text/RNSVGTSpan.m index 22d6ab46..0b162349 100644 --- a/ios/Text/RNSVGTSpan.m +++ b/ios/Text/RNSVGTSpan.m @@ -711,7 +711,7 @@ static CGFloat RNSVGTSpan_radToDeg = 180 / M_PI; CGFloat charWidth = advances[g].width * scaleSpacingAndGlyphs; CFIndex currIndex = indices[g]; - char currentChar = [str characterAtIndex:currIndex]; + unichar currentChar = [str characterAtIndex:currIndex]; bool isWordSeparator = [RNSVGTSpan_separators characterIsMember:currentChar]; CGFloat wordSpace = isWordSeparator ? wordSpacing : 0; CGFloat spacing = wordSpace + letterSpacing; @@ -829,8 +829,8 @@ static CGFloat RNSVGTSpan_radToDeg = 180 / M_PI; CGSize measuredSize = [currChars sizeWithAttributes: @{NSFontAttributeName:customFont}]; label.font = customFont; - CGFloat width = ceilf(measuredSize.width); - CGFloat height = ceilf(measuredSize.height); + CGFloat width = ceil(measuredSize.width); + CGFloat height = ceil(measuredSize.height); CGRect bounds = CGRectMake(0, 0, width, height); label.frame = bounds; diff --git a/ios/Utils/RNSVGBezierElement.h b/ios/Utils/RNSVGBezierElement.h index 87784d14..eefbbf18 100644 --- a/ios/Utils/RNSVGBezierElement.h +++ b/ios/Utils/RNSVGBezierElement.h @@ -21,5 +21,5 @@ + (instancetype) elementWithPathElement: (CGPathElement) element; + (NSArray *) elementsFromCGPath:(CGPathRef)path; -@end; +@end diff --git a/ios/Utils/RNSVGLength.h b/ios/Utils/RNSVGLength.h index 5a4af640..ba7fb092 100644 --- a/ios/Utils/RNSVGLength.h +++ b/ios/Utils/RNSVGLength.h @@ -27,6 +27,6 @@ typedef CF_ENUM(unsigned short, RNSVGLengthUnitType) { + (instancetype) lengthWithString: (NSString *) lengthString; - (BOOL) isEqualTo: (RNSVGLength *)other; -@end; +@end #endif /* RNSVGLength_h */ diff --git a/ios/Utils/RNSVGLength.m b/ios/Utils/RNSVGLength.m index f4dfd8ce..c62cd522 100644 --- a/ios/Utils/RNSVGLength.m +++ b/ios/Utils/RNSVGLength.m @@ -72,4 +72,4 @@ return self.unit == other.unit && self.value == other.value; } -@end; +@end diff --git a/ios/Utils/RNSVGPathParser.m b/ios/Utils/RNSVGPathParser.m index cc4532d6..34a222c7 100644 --- a/ios/Utils/RNSVGPathParser.m +++ b/ios/Utils/RNSVGPathParser.m @@ -253,7 +253,7 @@ } - float rad = rotation * M_PI / 180; + float rad = rotation * (float)M_PI / 180; float cosed = cosf(rad); float sined = sinf(rad); x -= tX; @@ -325,7 +325,7 @@ arc -= M_PI * 2; } - int n = ceilf(fabsf(arc / ((float)M_PI / 2))); + int n = (int)ceilf(fabsf(arc / ((float)M_PI / 2))); float step = arc / n; float k = (4.0f / 3.0f) * tanf(step / 4); diff --git a/ios/ViewManagers/RNSVGNodeManager.m b/ios/ViewManagers/RNSVGNodeManager.m index 0a405257..cb5bbaa6 100644 --- a/ios/ViewManagers/RNSVGNodeManager.m +++ b/ios/ViewManagers/RNSVGNodeManager.m @@ -125,11 +125,11 @@ static const NSUInteger kMatrixArrayLength = 4 * 4; } else if ([property isEqualToString:@"skewX"]) { CGFloat skew = [self convertToRadians:value]; - transform.m21 = tanf(skew); + transform.m21 = tanf((float)skew); } else if ([property isEqualToString:@"skewY"]) { CGFloat skew = [self convertToRadians:value]; - transform.m12 = tanf(skew); + transform.m12 = tanf((float)skew); } else { RCTLogError(@"Unsupported transform type for a CATransform3D: %@.", property);