[
  {
    "path": "README.md",
    "content": "# Warnings\n\nThis is an xcconfig file to make it easy for you to turn on [a large suite of useful warnings](https://github.com/boredzo/Warnings-xcconfig/wiki/Warnings-Explained) in your Xcode project. These warnings catch bugs, so turning them on may identify bugs you can fix now and having them on will prevent bugs later.\n\nIf you have an existing project you've developed without these warnings turned on, you probably will have a number of warnings after turning them on. These are bugs in your code, newly revealed—fixing the warnings is fixing bugs.\n\nThe file also turns on Treat Warnings as Errors—so you can't just ignore warnings; you must fix them in order to be able to build—and the setting to run the Clang Static Analyzer in every build, which will find even more bugs (mostly leaks and crashers).\n\nIf you are new to Objective-C, you may find that you encounter build errors more frequently when using these settings. That is correct, expected, and good—the errors are bugs that would otherwise have gone undetected! Use these settings to identify your bad habits and things you don't fully understand, and take the opportunities to learn. You will learn better and faster with these warnings enabled.\n\n## The xcconfig file\n\n### Usage\n\n1. Copy it to your own project's root directory (the directory containing the .xcodeproj package).\n2. Add it to the project. In a modern project, it should be at the top level, either at the top of the list or below all of the per-target groups.\n3. Edit the project object (the very topmost item in the Project Navigator).\n4. Select the project, not any target.\n5. Select the Info tab.\n6. Under Configurations, expand both/all of the configurations.\n7. For each configuration, set the pop-up menu for the project to “Warnings” (which is the xcconfig file you just added).\n\n### What if you're already using an xcconfig file?\n\nXcode supports preprocessor directives in xcconfig files, so you can `#include` the Warnings file from your existing xcconfig file.\n\n## The test project\n\nWarningsTest is an Xcode project containing a unit test bundle target. The project uses the xcconfig file, and the tests demonstrate the kinds of bugs that the file tells the compiler to warn about.\n\n### Usage\n\nOpen it in Xcode, hold down on the verb button (the one that says Run by default) and choose Test. This will attempt to build the unit test bundle and run the tests.\n\nIt will fail, because the tests are all written to demonstrate the warnings, not to test other code. (There is no code under test.) Because of all the warnings and the Treat Warnings as Errors setting, the build will never succeed.\n\n## Credits\n\n- Peter Hosey made [a list of important warnings](http://boredzo.org/blog/archives/2009-11-07/warnings).\n- Steven Fisher [made the original xcconfig file of warning settings](http://tewha.net/2010/11/xcode-warnings/).\n"
  },
  {
    "path": "Warnings.xcconfig",
    "content": "//\n//  MoreWarnings.xcconfig\n//\n//  Created by Steven Fisher:\n//      http://tewha.net/2010/11/xcode-warnings/\n//  See also:\n//      http://boredzo.org/blog/archives/2009-11-07/warnings\n//\n\nGCC_WARN_CHECK_SWITCH_STATEMENTS = YES\nGCC_WARN_SHADOW = YES\nGCC_WARN_64_TO_32_BIT_CONVERSION = YES\nCLANG_WARN_ENUM_CONVERSION = YES\nCLANG_WARN_INT_CONVERSION = YES\nCLANG_WARN_CONSTANT_CONVERSION = YES\nCLANG_WARN_BOOL_CONVERSION = YES;\nCLANG_WARN_UNREACHABLE_CODE = YES_AGGRESSIVE;\nGCC_WARN_INITIALIZER_NOT_FULLY_BRACKETED = YES\nGCC_WARN_ABOUT_RETURN_TYPE = YES\nGCC_WARN_MISSING_PARENTHESES = YES\nGCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = YES\nGCC_WARN_ABOUT_MISSING_NEWLINE = YES\nGCC_WARN_SIGN_COMPARE = YES\nGCC_WARN_UNDECLARED_SELECTOR = YES\nGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\nGCC_WARN_UNUSED_FUNCTION = YES\nGCC_WARN_UNUSED_LABEL = YES\nGCC_WARN_UNUSED_VALUE = YES\nGCC_WARN_UNUSED_VARIABLE = YES\nGCC_WARN_ABOUT_MISSING_PROTOTYPES = YES\nGCC_WARN_TYPECHECK_CALLS_TO_PRINTF = YES\nGCC_WARN_ABOUT_DEPRECATED_FUNCTIONS = YES\nGCC_WARN_HIDDEN_VIRTUAL_FUNCTIONS = YES\nGCC_WARN_ABOUT_INVALID_OFFSETOF_MACRO = YES\nGCC_WARN_NON_VIRTUAL_DESTRUCTOR = YES\nCLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES\nCLANG_WARN_IMPLICIT_SIGN_CONVERSION = YES\nCLANG_WARN_SUSPICIOUS_IMPLICIT_CONVERSION = YES\nCLANG_WARN_ASSIGN_ENUM = YES\nCLANG_WARN_EMPTY_BODY = YES\nCLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES\nCLANG_WARN_OBJC_REPEATED_USE_OF_WEAK = YES\nCLANG_ANALYZER_SECURITY_FLOATLOOPCOUNTER = YES\nCLANG_ANALYZER_SECURITY_INSECUREAPI_RAND = YES\nCLANG_ANALYZER_SECURITY_INSECUREAPI_STRCPY = YES\nOTHER_CFLAGS = -Wextra -Wno-unused-parameter -Wformat=2 -Wunreachable-code\nGCC_TREAT_WARNINGS_AS_ERRORS = YES\nRUN_CLANG_STATIC_ANALYZER = YES\n"
  },
  {
    "path": "WarningsTest/WarningsTest.xcodeproj/project.pbxproj",
    "content": "// !$*UTF8*$!\n{\n\tarchiveVersion = 1;\n\tclasses = {\n\t};\n\tobjectVersion = 46;\n\tobjects = {\n\n/* Begin PBXBuildFile section */\n\t\t31043D7014A2ED710049DF02 /* SenTestingKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 31043D6F14A2ED710049DF02 /* SenTestingKit.framework */; };\n\t\t31043D7114A2ED720049DF02 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 31043D5114A2ED710049DF02 /* Cocoa.framework */; };\n\t\t31043D7914A2ED720049DF02 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 31043D7714A2ED720049DF02 /* InfoPlist.strings */; };\n\t\t31043D7C14A2ED720049DF02 /* AssortedWarningTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 31043D7B14A2ED720049DF02 /* AssortedWarningTests.m */; };\n\t\t31043D8914A30BD70049DF02 /* FunctionWarningTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 31043D8814A30BD70049DF02 /* FunctionWarningTests.m */; };\n\t\t31043D8C14A30D400049DF02 /* InitializerWarningTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 31043D8B14A30D400049DF02 /* InitializerWarningTests.m */; };\n\t\t31043D8F14A30DA20049DF02 /* UnusedTokenWarningTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 31043D8E14A30DA20049DF02 /* UnusedTokenWarningTests.m */; };\n\t\t31043D9214A30DD20049DF02 /* ShadowingWarningTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 31043D9114A30DD20049DF02 /* ShadowingWarningTests.m */; };\n\t\t31043D9514A325900049DF02 /* DeprecationWarningTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 31043D9414A325900049DF02 /* DeprecationWarningTests.m */; };\n/* End PBXBuildFile section */\n\n/* Begin PBXFileReference section */\n\t\t31043D5114A2ED710049DF02 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = System/Library/Frameworks/Cocoa.framework; sourceTree = SDKROOT; };\n\t\t31043D5414A2ED710049DF02 /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = System/Library/Frameworks/AppKit.framework; sourceTree = SDKROOT; };\n\t\t31043D5514A2ED710049DF02 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = System/Library/Frameworks/CoreData.framework; sourceTree = SDKROOT; };\n\t\t31043D5614A2ED710049DF02 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };\n\t\t31043D6E14A2ED710049DF02 /* WarningsTestTests.octest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = WarningsTestTests.octest; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\t31043D6F14A2ED710049DF02 /* SenTestingKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SenTestingKit.framework; path = Library/Frameworks/SenTestingKit.framework; sourceTree = DEVELOPER_DIR; };\n\t\t31043D7614A2ED720049DF02 /* WarningsTestTests-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = \"WarningsTestTests-Info.plist\"; sourceTree = \"<group>\"; };\n\t\t31043D7814A2ED720049DF02 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = \"<group>\"; };\n\t\t31043D7A14A2ED720049DF02 /* AssortedWarningTests.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AssortedWarningTests.h; sourceTree = \"<group>\"; };\n\t\t31043D7B14A2ED720049DF02 /* AssortedWarningTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AssortedWarningTests.m; sourceTree = \"<group>\"; };\n\t\t31043D8514A2ED930049DF02 /* Warnings.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Warnings.xcconfig; path = ../Warnings.xcconfig; sourceTree = \"<group>\"; };\n\t\t31043D8614A2F7B20049DF02 /* WarningsTest-Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = \"WarningsTest-Prefix.pch\"; sourceTree = \"<group>\"; };\n\t\t31043D8714A30BD70049DF02 /* FunctionWarningTests.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FunctionWarningTests.h; sourceTree = \"<group>\"; };\n\t\t31043D8814A30BD70049DF02 /* FunctionWarningTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FunctionWarningTests.m; sourceTree = \"<group>\"; };\n\t\t31043D8A14A30D400049DF02 /* InitializerWarningTests.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InitializerWarningTests.h; sourceTree = \"<group>\"; };\n\t\t31043D8B14A30D400049DF02 /* InitializerWarningTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = InitializerWarningTests.m; sourceTree = \"<group>\"; };\n\t\t31043D8D14A30DA20049DF02 /* UnusedTokenWarningTests.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UnusedTokenWarningTests.h; sourceTree = \"<group>\"; };\n\t\t31043D8E14A30DA20049DF02 /* UnusedTokenWarningTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UnusedTokenWarningTests.m; sourceTree = \"<group>\"; };\n\t\t31043D9014A30DD20049DF02 /* ShadowingWarningTests.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ShadowingWarningTests.h; sourceTree = \"<group>\"; };\n\t\t31043D9114A30DD20049DF02 /* ShadowingWarningTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ShadowingWarningTests.m; sourceTree = \"<group>\"; };\n\t\t31043D9314A325900049DF02 /* DeprecationWarningTests.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DeprecationWarningTests.h; sourceTree = \"<group>\"; };\n\t\t31043D9414A325900049DF02 /* DeprecationWarningTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DeprecationWarningTests.m; sourceTree = \"<group>\"; };\n/* End PBXFileReference section */\n\n/* Begin PBXFrameworksBuildPhase section */\n\t\t31043D6A14A2ED710049DF02 /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t31043D7014A2ED710049DF02 /* SenTestingKit.framework in Frameworks */,\n\t\t\t\t31043D7114A2ED720049DF02 /* Cocoa.framework in Frameworks */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXFrameworksBuildPhase section */\n\n/* Begin PBXGroup section */\n\t\t31043D4214A2ED710049DF02 = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t31043D8514A2ED930049DF02 /* Warnings.xcconfig */,\n\t\t\t\t31043D7414A2ED720049DF02 /* WarningsTestTests */,\n\t\t\t\t31043D5014A2ED710049DF02 /* Frameworks */,\n\t\t\t\t31043D4E14A2ED710049DF02 /* Products */,\n\t\t\t);\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t31043D4E14A2ED710049DF02 /* Products */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t31043D6E14A2ED710049DF02 /* WarningsTestTests.octest */,\n\t\t\t);\n\t\t\tname = Products;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t31043D5014A2ED710049DF02 /* Frameworks */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t31043D5114A2ED710049DF02 /* Cocoa.framework */,\n\t\t\t\t31043D6F14A2ED710049DF02 /* SenTestingKit.framework */,\n\t\t\t\t31043D5314A2ED710049DF02 /* Other Frameworks */,\n\t\t\t);\n\t\t\tname = Frameworks;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t31043D5314A2ED710049DF02 /* Other Frameworks */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t31043D5414A2ED710049DF02 /* AppKit.framework */,\n\t\t\t\t31043D5514A2ED710049DF02 /* CoreData.framework */,\n\t\t\t\t31043D5614A2ED710049DF02 /* Foundation.framework */,\n\t\t\t);\n\t\t\tname = \"Other Frameworks\";\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t31043D7414A2ED720049DF02 /* WarningsTestTests */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t31043D7A14A2ED720049DF02 /* AssortedWarningTests.h */,\n\t\t\t\t31043D7B14A2ED720049DF02 /* AssortedWarningTests.m */,\n\t\t\t\t31043D8714A30BD70049DF02 /* FunctionWarningTests.h */,\n\t\t\t\t31043D8814A30BD70049DF02 /* FunctionWarningTests.m */,\n\t\t\t\t31043D8A14A30D400049DF02 /* InitializerWarningTests.h */,\n\t\t\t\t31043D8B14A30D400049DF02 /* InitializerWarningTests.m */,\n\t\t\t\t31043D8D14A30DA20049DF02 /* UnusedTokenWarningTests.h */,\n\t\t\t\t31043D8E14A30DA20049DF02 /* UnusedTokenWarningTests.m */,\n\t\t\t\t31043D9014A30DD20049DF02 /* ShadowingWarningTests.h */,\n\t\t\t\t31043D9114A30DD20049DF02 /* ShadowingWarningTests.m */,\n\t\t\t\t31043D9314A325900049DF02 /* DeprecationWarningTests.h */,\n\t\t\t\t31043D9414A325900049DF02 /* DeprecationWarningTests.m */,\n\t\t\t\t31043D7514A2ED720049DF02 /* Supporting Files */,\n\t\t\t);\n\t\t\tpath = WarningsTestTests;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t31043D7514A2ED720049DF02 /* Supporting Files */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t31043D7614A2ED720049DF02 /* WarningsTestTests-Info.plist */,\n\t\t\t\t31043D7714A2ED720049DF02 /* InfoPlist.strings */,\n\t\t\t\t31043D8614A2F7B20049DF02 /* WarningsTest-Prefix.pch */,\n\t\t\t);\n\t\t\tname = \"Supporting Files\";\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n/* End PBXGroup section */\n\n/* Begin PBXNativeTarget section */\n\t\t31043D6D14A2ED710049DF02 /* WarningsTestTests */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = 31043D8214A2ED720049DF02 /* Build configuration list for PBXNativeTarget \"WarningsTestTests\" */;\n\t\t\tbuildPhases = (\n\t\t\t\t31043D6914A2ED710049DF02 /* Sources */,\n\t\t\t\t31043D6A14A2ED710049DF02 /* Frameworks */,\n\t\t\t\t31043D6B14A2ED710049DF02 /* Resources */,\n\t\t\t\t31043D6C14A2ED710049DF02 /* ShellScript */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t);\n\t\t\tname = WarningsTestTests;\n\t\t\tproductName = WarningsTestTests;\n\t\t\tproductReference = 31043D6E14A2ED710049DF02 /* WarningsTestTests.octest */;\n\t\t\tproductType = \"com.apple.product-type.bundle\";\n\t\t};\n/* End PBXNativeTarget section */\n\n/* Begin PBXProject section */\n\t\t31043D4414A2ED710049DF02 /* Project object */ = {\n\t\t\tisa = PBXProject;\n\t\t\tattributes = {\n\t\t\t\tLastUpgradeCheck = 0420;\n\t\t\t\tORGANIZATIONNAME = \"\";\n\t\t\t};\n\t\t\tbuildConfigurationList = 31043D4714A2ED710049DF02 /* Build configuration list for PBXProject \"WarningsTest\" */;\n\t\t\tcompatibilityVersion = \"Xcode 3.2\";\n\t\t\tdevelopmentRegion = English;\n\t\t\thasScannedForEncodings = 0;\n\t\t\tknownRegions = (\n\t\t\t\ten,\n\t\t\t);\n\t\t\tmainGroup = 31043D4214A2ED710049DF02;\n\t\t\tproductRefGroup = 31043D4E14A2ED710049DF02 /* Products */;\n\t\t\tprojectDirPath = \"\";\n\t\t\tprojectRoot = \"\";\n\t\t\ttargets = (\n\t\t\t\t31043D6D14A2ED710049DF02 /* WarningsTestTests */,\n\t\t\t);\n\t\t};\n/* End PBXProject section */\n\n/* Begin PBXResourcesBuildPhase section */\n\t\t31043D6B14A2ED710049DF02 /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t31043D7914A2ED720049DF02 /* InfoPlist.strings in Resources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXResourcesBuildPhase section */\n\n/* Begin PBXShellScriptBuildPhase section */\n\t\t31043D6C14A2ED710049DF02 /* ShellScript */ = {\n\t\t\tisa = PBXShellScriptBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\tinputPaths = (\n\t\t\t);\n\t\t\toutputPaths = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t\tshellPath = /bin/sh;\n\t\t\tshellScript = \"# Run the unit tests in this test bundle.\\n\\\"${SYSTEM_DEVELOPER_DIR}/Tools/RunUnitTests\\\"\\n\";\n\t\t};\n/* End PBXShellScriptBuildPhase section */\n\n/* Begin PBXSourcesBuildPhase section */\n\t\t31043D6914A2ED710049DF02 /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t31043D7C14A2ED720049DF02 /* AssortedWarningTests.m in Sources */,\n\t\t\t\t31043D8914A30BD70049DF02 /* FunctionWarningTests.m in Sources */,\n\t\t\t\t31043D8C14A30D400049DF02 /* InitializerWarningTests.m in Sources */,\n\t\t\t\t31043D8F14A30DA20049DF02 /* UnusedTokenWarningTests.m in Sources */,\n\t\t\t\t31043D9214A30DD20049DF02 /* ShadowingWarningTests.m in Sources */,\n\t\t\t\t31043D9514A325900049DF02 /* DeprecationWarningTests.m in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXSourcesBuildPhase section */\n\n/* Begin PBXVariantGroup section */\n\t\t31043D7714A2ED720049DF02 /* InfoPlist.strings */ = {\n\t\t\tisa = PBXVariantGroup;\n\t\t\tchildren = (\n\t\t\t\t31043D7814A2ED720049DF02 /* en */,\n\t\t\t);\n\t\t\tname = InfoPlist.strings;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n/* End PBXVariantGroup section */\n\n/* Begin XCBuildConfiguration section */\n\t\t31043D7D14A2ED720049DF02 /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbaseConfigurationReference = 31043D8514A2ED930049DF02 /* Warnings.xcconfig */;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tARCHS = \"$(ARCHS_STANDARD_64_BIT)\";\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu99;\n\t\t\t\tGCC_DYNAMIC_NO_PIC = NO;\n\t\t\t\tGCC_ENABLE_OBJC_EXCEPTIONS = YES;\n\t\t\t\tGCC_OPTIMIZATION_LEVEL = 0;\n\t\t\t\tGCC_PREPROCESSOR_DEFINITIONS = (\n\t\t\t\t\t\"DEBUG=1\",\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t);\n\t\t\t\tGCC_SYMBOLS_PRIVATE_EXTERN = NO;\n\t\t\t\tGCC_VERSION = com.apple.compilers.llvm.clang.1_0;\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_MISSING_PROTOTYPES = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tMACOSX_DEPLOYMENT_TARGET = 10.7;\n\t\t\t\tONLY_ACTIVE_ARCH = YES;\n\t\t\t\tSDKROOT = macosx;\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t31043D7E14A2ED720049DF02 /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbaseConfigurationReference = 31043D8514A2ED930049DF02 /* Warnings.xcconfig */;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tARCHS = \"$(ARCHS_STANDARD_64_BIT)\";\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCOPY_PHASE_STRIP = YES;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = \"dwarf-with-dsym\";\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu99;\n\t\t\t\tGCC_ENABLE_OBJC_EXCEPTIONS = YES;\n\t\t\t\tGCC_VERSION = com.apple.compilers.llvm.clang.1_0;\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_MISSING_PROTOTYPES = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tMACOSX_DEPLOYMENT_TARGET = 10.7;\n\t\t\t\tSDKROOT = macosx;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\t31043D8314A2ED720049DF02 /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tBUNDLE_LOADER = \"$(BUILT_PRODUCTS_DIR)/WarningsTest.app/Contents/MacOS/WarningsTest\";\n\t\t\t\tFRAMEWORK_SEARCH_PATHS = \"$(DEVELOPER_LIBRARY_DIR)/Frameworks\";\n\t\t\t\tGCC_PRECOMPILE_PREFIX_HEADER = YES;\n\t\t\t\tGCC_PREFIX_HEADER = \"WarningsTestTests/WarningsTest-Prefix.pch\";\n\t\t\t\tINFOPLIST_FILE = \"WarningsTestTests/WarningsTestTests-Info.plist\";\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tTEST_HOST = \"$(BUNDLE_LOADER)\";\n\t\t\t\tWRAPPER_EXTENSION = octest;\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t31043D8414A2ED720049DF02 /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tBUNDLE_LOADER = \"$(BUILT_PRODUCTS_DIR)/WarningsTest.app/Contents/MacOS/WarningsTest\";\n\t\t\t\tFRAMEWORK_SEARCH_PATHS = \"$(DEVELOPER_LIBRARY_DIR)/Frameworks\";\n\t\t\t\tGCC_PRECOMPILE_PREFIX_HEADER = YES;\n\t\t\t\tGCC_PREFIX_HEADER = \"WarningsTestTests/WarningsTest-Prefix.pch\";\n\t\t\t\tINFOPLIST_FILE = \"WarningsTestTests/WarningsTestTests-Info.plist\";\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tTEST_HOST = \"$(BUNDLE_LOADER)\";\n\t\t\t\tWRAPPER_EXTENSION = octest;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n/* End XCBuildConfiguration section */\n\n/* Begin XCConfigurationList section */\n\t\t31043D4714A2ED710049DF02 /* Build configuration list for PBXProject \"WarningsTest\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t31043D7D14A2ED720049DF02 /* Debug */,\n\t\t\t\t31043D7E14A2ED720049DF02 /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\t31043D8214A2ED720049DF02 /* Build configuration list for PBXNativeTarget \"WarningsTestTests\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t31043D8314A2ED720049DF02 /* Debug */,\n\t\t\t\t31043D8414A2ED720049DF02 /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t};\n/* End XCConfigurationList section */\n\t};\n\trootObject = 31043D4414A2ED710049DF02 /* Project object */;\n}\n"
  },
  {
    "path": "WarningsTest/WarningsTest.xcodeproj/project.xcworkspace/contents.xcworkspacedata",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Workspace\n   version = \"1.0\">\n   <FileRef\n      location = \"self:WarningsTest.xcodeproj\">\n   </FileRef>\n</Workspace>\n"
  },
  {
    "path": "WarningsTest/WarningsTestTests/AssortedWarningTests.h",
    "content": "//\n//  AssortedWarningTests.h\n//  WarningsTestTests\n//\n//  Created by Peter Hosey on 2011-12-21.\n//\n\n#import <SenTestingKit/SenTestingKit.h>\n\n@interface AssortedWarningTests : SenTestCase\n\n@end\n"
  },
  {
    "path": "WarningsTest/WarningsTestTests/AssortedWarningTests.m",
    "content": "//\n//  AssortedWarningTests.m\n//  WarningsTestTests\n//\n//  Created by Peter Hosey on 2011-12-21.\n//\n\n#import \"AssortedWarningTests.h\"\n\n#include <mach/mach_time.h>\n\n@implementation AssortedWarningTests\n\n- (void) setUp {\n\tsrandom((unsigned)time(NULL));\n}\n\n- (void) testCheckSwitchStatements {\n\tenum {\n\t\tkFoo,\n\t\tkBar,\n\t\tkBaz,\n\t\tkQux,\n\t} value = ((int)random()) % 4;\n\n\tswitch (value) {\n\t\tcase kFoo:\n\t\t\tNSLog(@\"Foo\");\n\t\t\tbreak;\n\t\tcase kBar:\n\t\t\tNSLog(@\"Bar\");\n\t\t\tbreak;\n\t\tcase kBaz:\n\t\t\tNSLog(@\"Baz\");\n\t\t\tbreak;\n\t\t//kQux intentionally omitted (to trigger the warning)\n\t}\n}\n\n- (void) test64To32 {\n\tuint64_t absoluteTime = mach_absolute_time();\n\tuint64_t nanoseconds = UnsignedWideToUInt64(AbsoluteToNanoseconds(UInt64ToUnsignedWide(absoluteTime)));\n\tuint32_t fractionOfASecond = (nanoseconds % 1000000000ULL);\n\tSTAssertTrue(fractionOfASecond >= 0, @\"Strange number of nanoseconds after the whole second in %llu\", nanoseconds);\n}\n\n- (void) testMissingParentheses {\n\tif (true)\n\t\tif (true)\n\t\t\tSTAssertTrue(true, @\"True!\", true);\n\t\tif (false)\n\t\t\tSTAssertFalse(false, @\"False is true!\", true);\n}\n\n- (void) testSignComparison {\n\tsigned int temperature = -32;\n\tunsigned int freezingPoint = 0U;\n\tSTAssertTrue(temperature > freezingPoint, @\"Temperature is below freezing!\");\n}\n\n- (void) testComparisonOfPointerRelationallyToZero {\n\tSTAssertTrue(@\"Foo\" > 0, @\"A string is not greater than zero!\");\n\tSTAssertTrue(@\"Foo\" < 0, @\"A string is not greater than zero!\");\n}\n\n- (void) testUndeclaredSelector {\n\tSTAssertFalse([self respondsToSelector:@selector(onMyMark:getSet:go:)], @\"Test case object responds to a made-up message!\");\n}\n\n- (void) testFormat {\n\tNSUInteger answer = 42;\n\t//Don't actually run these at test time; just make sure they get compiled.\n\tif (time(NULL) == 0) {\n\t\tNSLog(@\"Signed where we mean unsigned: %ld\", answer);\n\t\tNSLog(@\"Int where we mean long: %u\", answer);\n\t\tNSLog(@\"C string where we mean NSString: %s\", self->fred);\n\t\tNSLog(@\"NSObject where we mean C string: %@\", __func__);\n\t\tNSLog(@\"NSObject where we mean int: %@\", answer);\n\t}\n}\n\n- (void) testUnreachableCode {\n\tbool assertedNonZero = false;\n\tlong num = random();\n\tnum |= 0b100;\n\tif (num > 0b011)\n\t\tgoto fail;\n\t\tgoto fail;\n\n\tSTAssertEquals(num, 0L, @\"num is not equal to 0\");\n\tassertedNonZero = true;\nfail:\n\tSTAssertTrue(assertedNonZero, @\"Did not assert non-zero\");\n\tNSLog(@\"Completed\");\n}\n\n- (void) testOverloadedVirtualFunctions {\n\t//We can't actually test this in pure Objective-C code. Someone will need to write an Objective-C++ test case class to do it.\n}\n\n- (void) testUndefinedUseOfOffsetof {\n\t//We can't actually test this in pure Objective-C code. Someone will need to write an Objective-C++ test case class to do it.\n}\n\n- (void) testNonVirtualDestructor {\n\t//We can't actually test this in pure Objective-C code. Someone will need to write an Objective-C++ test case class to do it.\n}\n\n@end"
  },
  {
    "path": "WarningsTest/WarningsTestTests/DeprecationWarningTests.h",
    "content": "//\n//  DeprecationWarningTests.h\n//  WarningsTest\n//\n//  Created by Peter Hosey on 2011-12-22.\n//\n\n#import <SenTestingKit/SenTestingKit.h>\n\n@interface DeprecationWarningTests : SenTestCase\n\n@end\n"
  },
  {
    "path": "WarningsTest/WarningsTestTests/DeprecationWarningTests.m",
    "content": "//\n//  DeprecationWarningTests.m\n//  WarningsTest\n//\n//  Created by Peter Hosey on 2011-12-22.\n//\n\n#import \"DeprecationWarningTests.h\"\n\n@interface Foo : NSObject\n- (void) doThing DEPRECATED_ATTRIBUTE;\n@end\n\n@interface Bar : Foo\n@end\n\n@implementation DeprecationWarningTests\n\n- (void) testDeprecatedFunctions {\n\tNSMutableArray *arrayOfOneThing = [NSMutableArray arrayWithObject:@\"Frank\"];\n\tenum { numIndices = 1U };\n\tNSUInteger indices[numIndices] = { 0UL };\n\tSTAssertNoThrow([arrayOfOneThing removeObjectsFromIndices:indices numIndices:numIndices], @\"Removing an object threw an exception!\");\n\n\tNSWindow *window = nil;\n\tif (window || (time(NULL) == 0)) {\n\t\tNSRunAlertPanelRelativeToWindow(NSLocalizedString(@\"OH NO!\", /*comment*/ NULL), NSLocalizedString(@\"The sky is falling!\", /*comment*/ NULL), /*defaultButton*/ NSLocalizedString(@\"Run!\", /*comment*/ NULL), /*alternateButton*/ nil, /*otherButton*/ nil, window);\n\t}\n}\n\n@end\n\n@implementation Foo\n\n- (void) doThing {\n\tNSLog(@\"%@\", __func__);\n}\n\n@end\n\n@implementation Bar : Foo\n\n- (void) doThing {\n\tNSLog(@\"This is the override of a deprecated method\");\n\t[super doThing];\n}\n\n@end\n"
  },
  {
    "path": "WarningsTest/WarningsTestTests/FunctionWarningTests.h",
    "content": "//\n//  FunctionWarningTests.h\n//  WarningsTest\n//\n//  Created by Peter Hosey on 2011-12-21.\n//\n\n#import <SenTestingKit/SenTestingKit.h>\n\n@interface FunctionWarningTests : SenTestCase\n\n@end\n"
  },
  {
    "path": "WarningsTest/WarningsTestTests/FunctionWarningTests.m",
    "content": "//\n//  FunctionWarningTests.m\n//  WarningsTest\n//\n//  Created by Peter Hosey on 2011-12-21.\n//\n\n#import \"FunctionWarningTests.h\"\n\nstatic functionWithoutReturnType(void);\nstatic int functionWithReturnType(void);\n\nstatic void unusedFunction(void);\n\n@implementation FunctionWarningTests\n\n- (void) testMismatchedReturnType {\n\tSTAssertNoThrow(functionWithoutReturnType(), @\"functionWithoutReturnType threw an exception!\");\n\tSTAssertEquals(functionWithReturnType(), 42, @\"functionWithReturnType returned something other than 42!\");\n}\n\n- (void) testMissingPrototypes {\n\tSTAssertEquals(functionWithNoPrototype(), M_PI, @\"functionWithNoPrototype returned something not equal to pi!\");\n}\n\n@end\n\nstatic functionWithoutReturnType(void) {\n\treturn 42;\n}\nstatic int functionWithReturnType(void) {\n\treturn;\n}\n\nstatic void unusedFunction(void) {\n\tenum { HORIZONTAL_ELLIPSIS = 0x2026 };\n\tNSLog(@\"I'm so lonely%C\", HORIZONTAL_ELLIPSIS);\n}\n\nstatic double functionWithNoPrototype(void) {\n\treturn M_PI;\n}\n"
  },
  {
    "path": "WarningsTest/WarningsTestTests/InitializerWarningTests.h",
    "content": "//\n//  InitializerWarningTests.h\n//  WarningsTest\n//\n//  Created by Peter Hosey on 2011-12-21.\n//\n\n#import <SenTestingKit/SenTestingKit.h>\n\n@interface InitializerWarningTests : SenTestCase\n\n@end\n"
  },
  {
    "path": "WarningsTest/WarningsTestTests/InitializerWarningTests.m",
    "content": "//\n//  InitializerWarningTests.m\n//  WarningsTest\n//\n//  Created by Peter Hosey on 2011-12-21.\n//\n\n#import \"InitializerWarningTests.h\"\n\n@implementation InitializerWarningTests\n\n- (void) testInitializerNotFullyBracketed {\n\tNSRect rect = { 0, 0, 640, 480 };\n\tSTAssertEquals(rect.size.width, (CGFloat)640.0, @\"Width not equal to 640!\");\n\tSTAssertEquals(rect.size.height, (CGFloat)480.0, @\"Width not equal to 480!\");\n}\n\n- (void) testMissingFieldInitializers {\n\tNSRect bounds = { { 640, 480 } }; //Note: Missing origin\n\tSTAssertEquals(bounds.size.width, (CGFloat)640.0, @\"Width not equal to 640!\");\n\tSTAssertEquals(bounds.size.height, (CGFloat)480.0, @\"Width not equal to 480!\");\n}\n\n@end\n"
  },
  {
    "path": "WarningsTest/WarningsTestTests/ShadowingWarningTests.h",
    "content": "//\n//  ShadowingWarningTests.h\n//  WarningsTest\n//\n//  Created by Peter Hosey on 2011-12-21.\n//\n\n#import <SenTestingKit/SenTestingKit.h>\n\n@interface ShadowingWarningTests : SenTestCase\n\n@end\n"
  },
  {
    "path": "WarningsTest/WarningsTestTests/ShadowingWarningTests.m",
    "content": "//\n//  ShadowingWarningTests.m\n//  WarningsTest\n//\n//  Created by Peter Hosey on 2011-12-21.\n//  Copyright (c) 2011 Captured Magic, LLC. All rights reserved.\n//\n\n#import \"ShadowingWarningTests.h\"\n\nNSString *fred = @\"Fred\";\n\n@implementation ShadowingWarningTests\n{\n\tNSString *fred, *wilma;\n}\n\n- (void) setUp {\n\tself->fred = @\"Fred\";\n\tself->wilma = @\"Wilma\";\n}\n\n- (void) testLocalShadowsInstanceVariable {\n\tNSString *wilma = @\"Wilma\";\n\tSTAssertEqualObjects(wilma, @\"Wilma\", @\"Local variable wilma was not equal to @\\\"Wilma\\\"\");\n}\n- (void) testLocalShadowsGlobal {\n\tNSString *fred = @\"Fred\";\n\tSTAssertEqualObjects(fred, @\"Fred\", @\"Local variable wilma was not equal to @\\\"Fred\\\"\");\n}\n- (void) testInstanceVariableShadowsGlobal {\n\tSTAssertEqualObjects(fred, @\"Fred\", @\"Instance variable wilma was not equal to @\\\"Fred\\\"\");\n}\n\n@end\n"
  },
  {
    "path": "WarningsTest/WarningsTestTests/UnusedTokenWarningTests.h",
    "content": "//\n//  UnusedTokenWarningTests.h\n//  WarningsTest\n//\n//  Created by Peter Hosey on 2011-12-21.\n//\n\n#import <SenTestingKit/SenTestingKit.h>\n\n@interface UnusedTokenWarningTests : SenTestCase\n\n@end\n"
  },
  {
    "path": "WarningsTest/WarningsTestTests/UnusedTokenWarningTests.m",
    "content": "//\n//  UnusedTokenWarningTests.m\n//  WarningsTest\n//\n//  Created by Peter Hosey on 2011-12-21.\n//\n\n#import \"UnusedTokenWarningTests.h\"\n\n@implementation UnusedTokenWarningTests\n\n- (void) testUnusedLabel {\n\tSTAssertTrue(true, @\"True is not true!\");\ntestFalse:\n\tSTAssertFalse(false, @\"False is not false!\");\n}\n\n- (void) testUnusedValue {\n\t4 + 4;\n\tSTAssertTrue(4 + 4, @\"4 + 4 is false!\");\n}\n\n- (void) testUnusedVariable {\n\tNSUInteger answer = 42;\n\tSTAssertTrue(true, @\"True is not true!\");\n}\n\n//This *shouldn't* warn (since parameters often do go legitimately unused, especially in delegate methods). It is enabled by -Wextra and disabled explicitly immediately afterward.\n- (bool) thing:(NSString *)str totallyIrrelevantParameter:(double)d {\n\treturn (str != nil);\n}\n- (void) testUnusedParameter {\n\tSTAssertTrue([self thing:@\"foo\" totallyIrrelevantParameter:42.0], @\"thing:totallyIrrelevantParameter: returned false for a non-nil string!\");\n\tSTAssertFalse([self thing:nil totallyIrrelevantParameter:42.0], @\"thing:totallyIrrelevantParameter: returned true for a nil string!\");\n}\n\n@end\n"
  },
  {
    "path": "WarningsTest/WarningsTestTests/WarningsTest-Prefix.pch",
    "content": "//\n//  WarningsTest-Prefix.pch\n//  WarningsTest\n//\n//  Created by Peter Hosey on 2011-12-21.\n//\n\n#include <stdbool.h>\n#if __OBJC__\n#\timport <Cocoa/Cocoa.h>\n#\timport <SenTestingKit/SenTestingKit.h>\n#endif\n"
  },
  {
    "path": "WarningsTest/WarningsTestTests/WarningsTestTests-Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>CFBundleDevelopmentRegion</key>\n\t<string>en</string>\n\t<key>CFBundleExecutable</key>\n\t<string>${EXECUTABLE_NAME}</string>\n\t<key>CFBundleIdentifier</key>\n\t<string>com.example.${PRODUCT_NAME:rfc1034identifier}</string>\n\t<key>CFBundleInfoDictionaryVersion</key>\n\t<string>6.0</string>\n\t<key>CFBundlePackageType</key>\n\t<string>BNDL</string>\n\t<key>CFBundleShortVersionString</key>\n\t<string>1.0</string>\n\t<key>CFBundleSignature</key>\n\t<string>????</string>\n\t<key>CFBundleVersion</key>\n\t<string>1</string>\n</dict>\n</plist>\n"
  },
  {
    "path": "WarningsTest/WarningsTestTests/en.lproj/InfoPlist.strings",
    "content": "/* Localized versions of Info.plist keys */\n\n"
  }
]