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.

Xcode Plugins

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 Alcatraz.

Alcatraz

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 Xcode Plugins.

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:

Plugin Name
github
github
BBUDebuggerTuckAway Source
RSImageOptimPlugin Source
CodePilot Source
DerivedData Exterminator       Source
Polychromatic Source
SCXcodeSwitchExpander Source
Snapshots Source
VVDocumenter-Xcode Source
XAlign Source
XcodeColors Source
XcodeExplorer Source
XVim Source
ColorSense-for-Xcode Source
Fuzzy Autocomplete Source
KSImageNamed-Xcode Source

BBUDebuggerTuckAway

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.


RSImageOptimPlugin

Xcode plugin to optimize images using ImageOptim.

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.


CodePilot

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.


DerivedData Exterminator

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.


Polychromatic

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

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.


Snapshots

Features

  • 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.


VVDocumenter-Xcode

…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!


XAlign

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

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).


XcodeExplorer

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

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 IDE.


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.


Fuzzy Autocomplete

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 IDEOpenQuicklyPattern.

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 ß.


KSImageNamed-Xcode

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 [NSImage imageNamed: or [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