Everyone of us have our own set of niks & tricks to better find our ways around our everyday activities.
For us developers that means tweaking our environment to quickly achieve what we want with the least amount of key strokes and (at the least for the most of us) without having to actually use the mouse/trackpad.
For those out there that are familiar with plugins; go ahead and jump over to the next section, for the rest of you welcome to heaven.
Plugins are 3rd Party pieces of code that can be «injected» into Xcode’s life cycle and can extend its functionalities or even add new ones.
There’s plenty of plugins and many different ways to load/install them but my go-to way is always
From their website:
Alcatraz is an open-source package manager for Xcode. It lets you discover and install plugins, templates and color schemes without the need for manually cloning or copying files. It installs itself as a part of Xcode and it feels like home.
Think of it as the «AppStore» for
You can easily search through a bunch of plugins and with a single click «install» them to your
Xcode instance to better improve your coding experience.
My current set
The other day talking with some people on
CocoaHeads CR I was asked if I knew about some good plugins for
Xcode… and boy… did I 💣💥 the channel with a bunch.
And while doing so I thought about writing a blog post with my current plugin set and why I do have/use them.
Without further ado here’s my list of plugins:
BBUDebuggerTuckAway - Xcode plugin for auto-hiding the debugger once you start typing in the source code editor.
Pretty self explanatory. Before I started using «behavior» on
Xcode having to show/hide the debugger between runs and debugging sessions was a PITA and this plugin came in like sent from the heaven.
Now I barely take advantage of it due to the behaviors but is sill on my top 10.
Xcode plugin to optimize images using
This plugin allows you to automatically (or manually if you are some sort of caveman… jk) optimize your image assets via
ImageOptim helping you reduce your app’s bundle size.
Code Pilot is a plugin for Xcode 5 & 6 that allows you to quickly find files, methods and symbols within your project without the need for your mouse. It uses fuzzy query matching to compute a list of results sorted by their relevancy. With just a few keystrokes you can jump to the method you’re looking for.
I don’t think there’s much to add to the story. Since I started using it, it became a MAJOR part of my everyday development.
I can quickly navigate through HUGE codebases without effort or actually thinking about the underlying «groups» structure.
Sometimes Xcode needs a friendly helping hand with cleaning out the Derived Data for a project. The Exterminator makes this quick and easy.
We’ve all been at that point in life where
Xcode simply decides to stop giving a crap about the compiling and correct construction of our bundles. Compile warnings, pieces of code we have 💥 nuked into oblivion are giving compile errors and some beheviors we have ensured are no longer present in our code are happening when running on the simulator… :/ and who is to blame? ¯\_(ツ)_/¯ none other than
Derived Data folders with stale files…
DerivedData Exterminator is a handy plugin that lets you nuke the
Derived Data folder all to hell 🔥 with the click of a button
Or via the menu option shown at the top of this section.
I can’t stress enough how handy this plugin is to my everyday compiling and debugging activities.
Coloring with significance.
Polychromatic is an Xcode plugin that makes code logic clear and apparent. It gives properties, ivars, and local variables each a unique, dynamic color, stripping away emphasis from types which don’t need it.
A great plugin for visual identification of scoped pieces of data. With a quick glance you can infer if an «artifact» you are using belongs to the local context or a more global one given its color.
Is no secret that sometimes we call local scoped vars the same name as some global scoped ones; with this plugin you can easily identify which is which (and please as soon as you realize this for the love of Google Christ change the names of the local ones to help differentiation more).
SCXcodeSwitchExpander is a small Xcode plugin that expands switch statements by inserting missing cases.
Is just so simple to miss some cases when switching over an enumerator or so time consuming to have to go to the
enum definition and check all possible
cases or worst; copying the whole
enum definition, pasting it inside the
switch and then correctly changing the syntax to match…
Well this is super easy; just write
switch, insert the var name and hit
Enter and the plugin will «automagically» generate all possible
cases for you.
Simple and clean.
On a personal note I haven’t been able to test it on
Swift but for those sad times when I’m writing
Objective-C its quite handy.
- Showing new images as they’re created
- Showing the differences between failed snapshot tests
- Open specific diffs in Kaleidoscope
- Turns red if you’ve created a view with a zero frame
If you are not doing
view testing you should definitely check that link out and start adding that to your unit tests.
If you are already doing
view testing then you are in for a treat with this plugin. Directly from
Xcode you can check which views are failing the tests and even do a live comparison of the recorded and live views to check where’s the discrepancy; and if you have
Kaleidoscope installed it will generate a «command line» command to open up the
diff on the app.
…you can find the method (or any code) you want to document to, and type in
///, the document will be generated for you and all params and return will be extracted into a Javadoc style, which is compatible with appledoc, Doxygen and HeaderDoc. You can just fill the inline placeholder tokens to finish your document.
If you know me you’ll know I’m a sucker for internal documentation (more so if they are going to be beautifully rendered in something like CocoaDocs).
This plugin will get you started by bootstrapping a header doc template over functions with placeholders for the parameters and returns as well as description. You only need to type
/// and ⚡ you are ready!
An amazing Xcode plugin to align regular code. It can align anything by using custom alignment patterns.
Aside from being a sucker for documentation I have a special place in my ❤ for unit testing and nicely organized code.
Enter XAlign and my
OCD kicks in allowing me to neatly organize all properties, assignments and whatever I feel like needs alignment.
XcodeColors allows you to use colors in the Xcode debugging console. It’s designed to aid in the debugging process. I use this along with a custom logger with CocoaLumberjack to easily know when something being logged into the console is a debugging statement, a warning or even worst an error.
Assigning colors to each level is the best way to easily check when something goes eerie on your code.
We tend to
DDLogError everywhere we «expect» an error from any
API calls and some
DDLogDebug here and there while developing (depending on your logging level the only output that will be visible on your production apps will be what you want and nothing more).
This is a plugin project that allows you, as a developer, to explore the various events and notifications that Xcode4 emits during normal operations.
Since we are talking plugins here; why not have a plugin that helps you build your own plugins? Meta much?
Well; this plugin is exactly that. It will let you listen and identify different notifications that
Xcode fires during its normal process; giving you the knowledge to easily intercept something you are interested on and gives you the power to shape it to your own needs.
I have played with this for a plugin I started last year that never got enough time to pour the love it needs to become a real world plugin. Maybe one of this days it will see the light.
XVim is a Vim plugin for Xcode. The plugin intends to offer a compelling Vim experience without the need to give up any Xcode features.
Given the fact that I’m a dork and like the «limitations» the
vim imposes upon you this plugin gives me those but inside
Xcode; letting my nerd burst without sacrificing the power of a real world
ColorSense-for-Xcode>This is where ColorSense comes in: When you put the caret on one of your colors, it automatically shows the actual color as an overlay, and you can even adjust it on-the-fly with the standard Mac OS X color picker.
I guess you can see the benefit of this one.
This is a Xcode 5+ plugin that patches the autocomplete filter to work the same way the Open Quickly works. It performs extremely well, and the fuzzy matching actually uses Xcode’s own
Who doesn’t love fuzzy autocomplete when writing code!? ¯\_(ツ)_/¯
I know the description says
Xcode 5+ which makes it sound like a dead project but you can check the source and see that is actively developed and also
Xcode 7 is mostly supported so far; even though is still ß.
Can’t remember whether that image you just added to the project was called button-separator-left or button-left-separator? Now you don’t have to, because this will autocomplete your imageNamed: calls like you’d expect. Just type in
[UIImage imageNamed:and all the images in your project will conveniently appear in the autocomplete menu. You’ll even get a handy preview of the image you’re about to select.
GREAT way to find your image assets :D
Would ❤ to see Olivier’s
SwiftGen as a plugin though :D