Skip to content

Instantly share code, notes, and snippets.

@swizzlr
Last active August 29, 2015 14:19
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save swizzlr/697de8c69506f881c4a5 to your computer and use it in GitHub Desktop.
Save swizzlr/697de8c69506f881c4a5 to your computer and use it in GitHub Desktop.
Pixable Warnings and Errors
// Warnings
WARNING_CFLAGS = -Weverything -Wno-error-auto-import -Wno-error-documentation-unknown-command -Wno-error-super-class-method-mismatch -Wno-error-incomplete-module -Wno-objc-missing-property-synthesis -Wno-gnu -Wno-error-undef -Wno-error-receiver-is-weak -Wno-error-missing-variable-declarations -Wno-error-objc-interface-ivars -Wno-error-documentation
GCC_WARN_PEDANTIC = YES
GCC_TREAT_WARNINGS_AS_ERRORS = YES
CLANG_WARN_DOCUMENTATION_COMMENTS = YES
CLANG_WARN_EMPTY_BODY = YES
GCC_WARN_FOUR_CHARACTER_CONSTANTS = YES
GCC_WARN_SHADOW = YES
CLANG_WARN_BOOL_CONVERSION = YES
CLANG_WARN_CONSTANT_CONVERSION = YES
GCC_WARN_64_TO_32_BIT_CONVERSION = YES
CLANG_WARN_ENUM_CONVERSION = YES
CLANG_WARN_INT_CONVERSION = YES
CLANG_WARN_IMPLICIT_SIGN_CONVERSION = YES
GCC_WARN_INITIALIZER_NOT_FULLY_BRACKETED = YES
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR
GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = YES
GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES
GCC_WARN_ABOUT_MISSING_NEWLINE = YES
CLANG_WARN_ASSIGN_ENUM = YES
GCC_WARN_SIGN_COMPARE = YES
CLANG_WARN_SUSPICIOUS_IMPLICIT_CONVERSION = YES
GCC_TREAT_INCOMPATIBLE_POINTER_TYPE_WARNINGS_AS_ERRORS = YES
GCC_TREAT_IMPLICIT_FUNCTION_DECLARATIONS_AS_ERRORS = YES
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE
GCC_WARN_UNKNOWN_PRAGMAS = YES
CLANG_WARN_UNREACHABLE_CODE = YES
GCC_WARN_UNUSED_FUNCTION = YES
GCC_WARN_UNUSED_LABEL = YES
GCC_WARN_UNUSED_PARAMETER = YES
GCC_WARN_UNUSED_VARIABLE = YES
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES
CLANG_WARN_OBJC_IMPLICIT_ATOMIC_PROPERTIES = YES
GCC_WARN_MULTIPLE_DEFINITION_TYPES_FOR_SELECTOR = YES
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES
GCC_WARN_STRICT_SELECTOR_MATCH = YES
GCC_WARN_UNDECLARED_SELECTOR = YES
CLANG_WARN_OBJC_EXPLICIT_OWNERSHIP_TYPE = YES
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES
CLANG_WARN_OBJC_REPEATED_USE_OF_WEAK = YES
CLANG_WARN_OBJC_RECEIVER_WEAK = YES
// Analysis
RUN_CLANG_STATIC_ANALYZER = YES
CLANG_STATIC_ANALYZER_MODE = deep
CLANG_ANALYZER_SECURITY_FLOATLOOPCOUNTER = YES
CLANG_ANALYZER_SECURITY_INSECUREAPI_RAND = YES
CLANG_ANALYZER_SECURITY_INSECUREAPI_STRCPY = YES
@swizzlr
Copy link
Author

swizzlr commented Apr 22, 2015

The no-error flags exist mostly for code that we can't surround with pragma clang. This includes

  • the Target_vers.cfile (if you don't export the symbol defined there, which you won't, because you won't use it, and you don't write shit you don't need).
  • importing a module somehow adds the header contents to your translation unit in a way that doesn't suppress all warnings, so documentation errors will blow up
  • auto-import (same as above, if you import a module that uses #import as opposed to @import)
  • ivars in interface (as above)
  • when you override a method with different pointer types (as above)

etc etc. I should probably file a radar about this, because it's really shitty that we have to put up with false positives like this. Xcode should not be warning me about code in a different module that's imported into mine.

@swizzlr
Copy link
Author

swizzlr commented Apr 22, 2015

The above is released into the public domain yada yada

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment