IBLinter alternatives and similar libraries
Based on the "Quality" category.
Alternatively, view IBLinter alternatives based on common mentions on social networks and blogs.
-
SwiftFormat
A command-line tool and Xcode Extension for formatting Swift code -
SwiftCop
SwiftCop is a validation library fully written in Swift and inspired by the clarity of Ruby On Rails Active Record validations. -
AnyLint
Lint anything by combining the power of scripts & regular expressions. -
swift-mod
A tool for Swift code modification intermediating between code generation and formatting.
Appwrite - The Open Source Firebase alternative introduces iOS support
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of IBLinter or a related project?
README
IBLinter
A linter tool to normalize .xib
and .storyboard
files. Inspired by realm/SwiftLint
[](assets/warning.png)
Installation
Using Homebrew
$ brew install iblinter
Using Mint
$ mint install IBDecodable/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
.
Usage
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 iblinter
Xcode
Add a Run Script Phase
to integrate IBLinter with Xcode
if which iblinter >/dev/null; then
iblinter lint
else
echo "warning: IBLinter not installed, download from https://github.com/IBDecodable/IBLinter"
fi
Alternatively, if you've installed IBLinter via CocoaPods the script should look like this:
"${PODS_ROOT}/IBLinter/bin/iblinter"
Requirements
IBLinter requires Swift5.0 runtime. Please satisfy at least one of following requirements.
- macOS 10.14.4 or later
- Install
Swift 5 Runtime Support for Command Line Tools
from More Downloads for Apple Developers
Rules
All rules are documented in [Rules.md](Rules.md)
Pull requests are encouraged.
Configuration
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. |
use_base_class_rule |
Use base class rule configs. |
view_as_device_rule |
View as device rule configs. |
CustomModuleConfig
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. |
UseBaseClassConfig
You can configure use_base_class
rule by UseBaseClassConfig
list.
key | description |
---|---|
element_class |
Element class name. |
base_classes |
Base classes of the element class. |
Note: UseBaseClassRule does not work for classes that inherit base class. You need to add all classes to base_classes
to check.
ViewAsDeviceConfig
You can configure view_as_device
rule by ViewAsDeviceConfig
. If there are no config, device_id
is set as retina4_7
.
key | description |
---|---|
device_id |
Device id for device. |
appx. Table of mapping device name to device_id
(on Xcode 10.2
)
device name | device id |
---|---|
iPhone 4s |
retina3_5 |
iPhone SE |
retina4_0 |
iPhone 8 |
retina4_7 |
iPhone 8 Plus |
retina5_5 |
iPhone XS |
retina5_9 |
iPhone XR |
retina6_1 |
iPhone XS Max |
retina6_5 |
UseTraitCollectionsConfig
You can configure use_trait_collections rule by
UseTraitCollectionsConfig`. If there is no config then use_trait_collections is set to true
key | description |
---|---|
enabled | true |
enabled_rules:
- relative_to_margin
- use_trait_collections
disabled_rules:
- custom_class_name
excluded:
- Carthage
- App
included:
- App/Views
custom_module_rule:
- module: UIComponents
included:
- UIComponents/Classes
excluded:
- UIComponents/Classes/Config/Generated
use_base_class_rule:
- element_class: UILabel
base_classes:
- PrimaryLabel
- SecondaryLabel
view_as_device_rule:
device_id: retina4_0
use_trait_collections_rule:
enabled: false