Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/IBDecodable/IBLinter
A linter tool for Interface Builder
https://github.com/IBDecodable/IBLinter
ib linter storyboard
Last synced: 3 months ago
JSON representation
A linter tool for Interface Builder
- Host: GitHub
- URL: https://github.com/IBDecodable/IBLinter
- Owner: IBDecodable
- License: mit
- Created: 2017-12-11T09:52:40.000Z (almost 7 years ago)
- Default Branch: master
- Last Pushed: 2022-10-05T01:05:38.000Z (about 2 years ago)
- Last Synced: 2024-08-14T21:11:10.245Z (3 months ago)
- Topics: ib, linter, storyboard
- Language: Swift
- Homepage:
- Size: 15.7 MB
- Stars: 950
- Watchers: 19
- Forks: 40
- Open Issues: 12
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
- awesome-ios - IBLinter - A linter tool for Interface Builder. (Code Quality / Linter)
- awesome-swift - IBLinter - A linter tool for Interface Builder. (Libs / Quality)
- awesome-swift - IBLinter - A linter tool for Interface Builder. (Libs / Quality)
- awesome-ios-star - IBLinter - A linter tool for Interface Builder. (Code Quality / Linter)
- fucking-awesome-swift - IBLinter - A linter tool for Interface Builder. (Libs / Quality)
- fucking-awesome-ios - IBLinter - A linter tool for Interface Builder. (Code Quality / Linter)
- fucking-awesome-ios - IBLinter - A linter tool for Interface Builder. (Code Quality / Linter)
- awesome-swift - IBLinter - A linter tool for Interface Builder ` 📝 a month ago ` (Quality [🔝](#readme))
README
# IBLinter
[![Build Status](https://travis-ci.org/IBDecodable/IBLinter.svg?branch=master)](https://travis-ci.org/IBDecodable/IBLinter)
[![Swift 5.0](https://img.shields.io/badge/Swift-5.0-orange.svg?style=flat)](https://developer.apple.com/swift/)A linter tool to normalize `.xib` and `.storyboard` files. Inspired by [realm/SwiftLint](https://github.com/realm/SwiftLint)
![](assets/warning.png)
## Installation
### Using [Homebrew](http://brew.sh/)
```sh
$ brew install iblinter
```### Using [Mint](https://github.com/yonaskolb/Mint)
```sh
$ mint install IBDecodable/IBLinter
```### Using [CocoaPods](https://cocoapods.org)
```sh
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
USAGE: iblinterOPTIONS:
--version Show the version.
-h, --help Show help information.SUBCOMMANDS:
lint (default) Print lint warnings and errorsSee 'iblinter help ' for detailed help.
```### Xcode
Add a `Run Script Phase` to integrate IBLinter with Xcode
```sh
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:
```sh
"${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](https://developer.apple.com/download/more/)## 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` |### HidesBottomBarConfig
You can configure `hides_bottom_bar` rule by `HidesBottomBarConfig` list.
| key | description |
|:---------------:|:---------------:|
| `excluded_view_controllers` | Controller's class name to ignore `hides_bottom_bar` rule. |```yaml
enabled_rules:
- relative_to_margin
- use_trait_collections
- hides_bottom_bar
- has_single_view_controller
- has_initial_view_controller
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
hides_bottom_bar_rule:
excluded_view_controllers:
- FirstViewController
- SecondViewController
```