Find common xib and storyboard-related problems without running your app or writing unit tests.
Find common xib and storyboard-related problems without running your app or writing unit tests.
Pass a path to your project to ibanalyzer
command line tool. Here’s an example output you can expect:
$ ./ibanalyzer ~/code/Sample/
TwitterViewController doesn't implement a required @IBAction named: loginButtonPressed:
TwitterViewController doesn't implement a required @IBOutlet named: twitterImageView
LoginViewController contains unused @IBAction named: onePasswordButtonTapped:
MessageCell contains unused @IBOutlet named: unreadIndicatorView
MessagesViewController contains unused @IBAction named: infoButtonPressed
With IBAnalyzer, you’re able to:
Find unimplemented outlets & actions in classes. Avoid crashes caused by exceptions, like the dreadful:
*** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '
[<Sample.TwitterViewController 0x7fa84630a370> setValue:forUndefinedKey:]: this
class is not key value coding-compliant for the key twitterImageView.'
Find @IBOutlet
s and @IBAction
s defined in code but not connected to from nibs. No more:
and
This is a new tool, used only on a handful of projects till now. If you encounter any bugs, please create new issues.
Doesn’t work with Objective-C. Tested on Swift 3.0.
IBAnalyzer starts by parsing all .xib,
.storyboard
and .swift
files in the provided folder. It then uses this data (wrapped in AnalyzerConfiguration
) to generate warnings. You can see the source of an analyzer checking connections between source code and nibs here.
New warnings can be implemented by adding a new type conforming to the Analyzer
protocol and initializing it in main.swift
. Check issues to learn about some ideas for new warnings.
Note: This can significantly slow-down your build times.
Add pod 'IBAnalyzer'
to your Podfile
.
Run pod repo update
and then pod install
.
Go to target settings -> Build Phases and add a New Run Script Phase
. Change its name to something like IBAnalyzer
.
Use this script to run analysis on all files in your repository (possibly including 3rd party dependencies, like Pods/
):
"${PODS_ROOT}/IBAnalyzer/bin/ibanalyzer" ./
or this one to run analysis only on a single folder:
"${PODS_ROOT}/IBAnalyzer/bin/ibanalyzer" FolderName/
Download the newest prebuilt binary from the Releases tab. Unpack and run using:
$ bin/ibanalyzer /path/to/your/project
IBAnalyzer.xcworkspace
in Xcode 8.2 and build the project (⌘-B).$ cd Build/MacOS
$ ./ibanalyzer /path/to/your/project
NibParser
Rakefile
Project initially started by Arek Holko (@arekholko on Twitter).