A linter tool for Interface Builder
Clone or download
kateinoigakukun Merge pull request #80 from stephanecopin/package-update
Update Commandant to use version instead of branch for compatibility with other packages using Commandant
Latest commit 7294f00 Jan 16, 2019



Build Status Swift 4.0

A linter tool to normalize .xib and .storyboard files. Inspired by realm/SwiftLint


Using Homebrew

$ brew install IBDecodable/homebrew-tap/iblinter

Using CocoaPods

pod 'IBLinter'

This will download the IBLinter binaries and dependencies in Pods/ during your next pod install execution and will allow you to invoke it via ${PODS_ROOT}/IBLinter/bin/iblinter in your Script Build Phases.

Compiling from source

You can build from source by cloning this repository and running

$ make install

iblinter will be installed in /usr/local/bin.


You can see all description by iblinter help

$ iblinter help
Available commands:

   help      Display general or command-specific help
   lint      Print lint warnings and errors (default command)
   version   Display the current version of SwiftLint


Add a Run Script Phase to integrate IBLinter with Xcode

if which iblinter >/dev/null; then
  iblinter lint
  echo "warning: IBLinter not installed, download from https://github.com/IBDecodable/IBLinter"

Alternatively, if you've installed IBLinter via CocoaPods the script should look like this:



Rule id description
custom_class_name Custom class name of ViewController in storyboard should be same as file name.
relative_to_margin Forbid to use relative to margin option.
misplaced Display error when views are misplaced.
ambiguous Display error when views are ambiguous.
enable_autolayout Force to use useAutolayout option
duplicate_constraint Display warning when view has duplicated constraint.
storyboard_viewcontroller_id Check that Storyboard ID same as ViewController class name.
image_resources Check if image resources are valid.
custom_module Check if custom class match custom module by custom_module_rule config.

Pull requests are encouraged.


You can configure IBLinter by adding a .iblinter.yml file from project root directory.

key description
enabled_rules Enabled rules id.
disabled_rules Disabled rules id.
excluded Path to ignore for lint.
included Path to include for lint.
custom_module_rule Custom module rule configs.


You can configure custom_module rule by CustomModuleConfig list.

key description
module Module name.
included Path to *.swift classes of the module for custom_module lint.
excluded Path to ignore for *.swift classes of the module for custom_module lint.
  - relative_to_margin
  - custom_class_name
  - Carthage
  - App
  - App/Views
  - module: UIComponents
      - UIComponents/Classes
      - UIComponents/Classes/Config/Generated