GitHunt
AN

␊ Whitespace Linter - Forces you to use empty lines!

WSL - Whitespace Linter

forthebadge
forthebadge

Build Status
Coverage Status

WSL is a linter that enforces a very non scientific vision of how to make
code more readable by enforcing empty lines at the right places.

I think too much code out there is to cuddly and a bit too warm for it's own
good, making it harder for other people to read and understand. The linter will
warn about newlines in and around blocks, in the beginning of files and other
places in the code.

I know this linter is aggressive and a lot of projects I've tested it on
have failed miserably. For this linter to be useful at all I want to be open to
new ideas, configurations and discussions! Also note that some of the warnings
might be bugs or unintentional false positives so I would love an
issue to fix, discuss, change or
make something configurable!

Installation

By go get (local installation)

You can do that by using:

go get -u github.com/bombsimon/wsl/cmd/...

By golangci-lint (CI automation)

wsl is already integrated with
golangci-lint. Please refer to the
instructions there.

Usage

How to use depends on how you install wsl.

With local binary

The general command format for wsl is:

$ wsl [flags] <file1> [files...]
$ wsl [flags] </path/to/package/...>

# Examples

$ wsl ./main.go
$ wsl --no-test ./main.go
$ wsl --allow-cuddle-declarations ./main.go
$ wsl --no-test --allow-cuddle-declaration ./main.go
$ wsl --no-test --allow-trailing-comment ./myProject/...

The "..." wildcard is not used like other go commands but instead can only
be to a relative or absolute path.

By default, the linter will run on ./... which means all go files in the
current path and all subsequent paths, including test files. To disable linting
test files, use -n or --no-test.

By golangci-lint (CI automation)

The recommended command is:

golangci-lint --disable-all --enable wsl

For more information, please refer to
golangci-lint's documentation.

Issues and configuration

The linter suppers a few ways to configure it to satisfy more than one kind of
code style. These settings could be set either with flags or with YAML
configuration if used via golangci-lint.

The supported configuration can be found in the documentation.

Below are the available checklist for any hit from wsl. If you do not see any,
feel free to raise an issue.

Note: this linter doesn't take in consideration the issues that will be
fixed with go fmt -s so ensure that the code is properly formatted before
use.