Latest | 0.4.6 |
---|---|
Homepage | https://github.com/banggaoo/CocoaAnalyzer |
License | MIT |
Platforms | osx , ios , tvos , watchos |
Authors |
IBAnalyzer
Find common xib and storyboard-related problems without running your app or writing unit tests.
Usage
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: ' 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
Drawbacks
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.
How It Works
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.
Installation
CocoaPods (Build Phase integration)
Note: This can significantly slow-down your build times.
Note: You have to upload your binary to ‘bin’ folder. Also frameworks.
- Add
pod 'IBAnalyzer'
to yourPodfile
. - Run
pod repo update
and thenpod install
. - Go to target settings -> Build Phases and add a
New Run Script Phase
. Change its name to something likeIBAnalyzer
. -
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/
Binary
Download the newest prebuilt binary from the Releases tab. Unpack and run using:
$ bin/ibanalyzer /path/to/your/project
From Source
- Clone or download the repo.
- Open
IBAnalyzer.xcworkspace
in Xcode 8.2 and build the project (⌘-B). $ cd Build/MacOS
$ ./ibanalyzer /path/to/your/project
Attributions
- SourceKitten – IBAnalyzer wouldn’t be possible without it
- SwiftGen – inspiration for
NibParser
- Sourcery – IBAnalyzer uses pretty much the same
Rakefile
Author
Project initially started by Arek Holko (@arekholko on Twitter).
Latest podspec
{ "name": "CocoaAnalyzer", "version": "0.4.6", "summary": "Tool for finding xib and storyboard-related issues at the build time.", "homepage": "https://github.com/banggaoo/CocoaAnalyzer", "license": "MIT", "authors": { "James Lee": "[email protected]" }, "source": { "git": "https://github.com/banggaoo/CocoaAnalyzer.git", "tag": "0.4.6" }, "preserve_paths": "*", "platforms": { "osx": null, "ios": null, "tvos": null, "watchos": null } }
Tue, 14 May 2019 10:14:04 +0000