Xcode Static Analyzer
Total Page:16
File Type:pdf, Size:1020Kb
1 Developer Tools Kickoff Session 300 Andreas Wendker These are confidential sessions—please refrain from streaming, blogging, or taking pictures 2 3 14 Billion Apps Downloaded 4 Xcode 4 Released March 2011 5 6 7 1 Single Window IB Inside Assistant Version Editor 8 1 Single Window LLVM Compiler 2 IB Inside Fix-It ImprovedBranchingLiveProjectAutomaticUnitSchemesAppArchivesCode QuickIssuesBehaviors Testing JumpValidation& Tabs Code & SnippetsTarget HelpMerging Provisioning Bar Completion Editor One-ClickC++WorkspacesLLDBSubversionGit inBlame LLVM Filtering Assistant Debugger Version Editor Instruments 9 LLVM Compiler 2 Schemes Improved Code Completion Automatic Provisioning Archives Debugger Single Window Subversion Branching & Merging Git Jump Bar IB Inside Version Editor Live Issues Behaviors LLDB Unit Testing Project & Target Editor Instruments Fix-It One-Click Filtering C++ in LLVM Blame Assistant Tabs Workspaces Quick Help App Validation Code Snippets 10 Smaller Free on Packages Lion Xcode in Mac App Store 11 Xcode 4.1 Xcode 4.2 12 Xcode 4.1 13 Built for Lion 14 15 Modernize Your Project 16 Assembly & Preprocessing 17 View-based tables New Cocoa controls Mac push notifications Entitlements Editor Custom behaviors 18 Auto Layout 19 Auto Layout Max Drukman 20 21 22 Demo 23 Xcode 4.2 24 Data Sync 25 Unit Tests 26 System Trace for iOS 27 Networking Activity 28 Simulate Locations 29 30 31 32 33 34 35 36 37 Storyboarding 38 Storyboarding Jon Hess 39 40 Scenes 41 SeguesScenes 42 43 Demo 44 45 OpenGL ES Performance Detective 46 OpenGL ES Analyzer Instrument 47 OpenGL ES Debugger 48 OpenGL ES Debugger Matthew Firlik 49 50 Fully-rendered frame OpenGL ES call history Access to all resources Full stack backtraces 51 “MoonTexture Surface” #12 glBindTexture() glUniformMatrix4fv() glDrawElements() “Planet” 52 Demo 53 Mac OS X and iOS 54 Apple LLVMLLVM Compiler 3 55 Fast compile times Better code generation Xcode integration New language features 56 57 Compiler Transition Complete 58 * LLVM-GCCCompiler for Transition Source Compatibility Complete 59 OpenGL JIT Code Completion Link Time Optimization Open Source Fix-its LLVM-GCC Clang C++ Indexer Objective-C Static Analyzer OpenCL JIT Syntax Coloring * LLVM-GCC for Source Compatibility 60 61 Garbage Collection Reduces crashes No object cleanup code Development ease 62 Garbage Collection Garbage builds up Performance stutters Nondeterministic Reduces crashes No object cleanup code Development ease 63 Manual Memory Instantly freed objects Smooth performance Predictable behavior Mistakes cause crashes Write a lot of code Development pain 64 Manual Memory Garbage Collection Instantly freed objects Garbage builds up Smooth performance Performance stutters Predictable behavior Nondeterministic Mistakes cause crashes Reduces crashes Write a lot of code No object cleanup code Development pain Development ease 65 Instantly freed objects Smooth performance Predictable behavior Reduces crashes No object cleanup code Development ease 66 Automatic Reference Counting 67 Automatic Reference Counting Chris Lattner 68 -(void)logSomething { ! NSString *string = !!! [[NSString alloc] init]; ! NSLog(@"%@\n", string); ! [string release]; } 69 Xcode Static Analyzer 70 -(void)logSomething { ! NSString *string = 1 !!!1 [[NSString alloc] init]; ! NSLog(@"%@\n", string); ! } 1 Leak 71 retain release autorelease 72 @autoreleasepoolNSAutoreleasePool { } 73 MyApp MyWindow 21 Leak MyView 1 74 MyApp MyWindow 10 weak MyView 10 75 Leaks Crashes 76 ARC Migration Tool 77 Step #1 Check for issues Step #2 Convert your code Step #3 Present diffs 78 Demo 79 retain/release @autoreleasepool autoreleased getters 80 iOS 5 Mac OS X 10.7 81 iOS 5 and 4 Mac OS X 10.7 82 iOS 5 and 4 Mac OS X 10.7 and 10.6 83 ARC 84 85 Xcode 4.1 86 Xcode 4.2 87 88.