Update whitespace to v0.0.4 (#786)
This commit is contained in:
parent
00069129a6
commit
fbbd24575f
@ -209,7 +209,8 @@ linters-settings:
|
|||||||
max-blank-identifiers: 2
|
max-blank-identifiers: 2
|
||||||
|
|
||||||
whitespace:
|
whitespace:
|
||||||
multi-if: false
|
multi-if: false # Enforces newlines (or comments) after every multi-line if statement
|
||||||
|
multi-func: false # Enforces newlines (or comments) after every multi-line function signature
|
||||||
|
|
||||||
linters:
|
linters:
|
||||||
enable:
|
enable:
|
||||||
|
@ -799,7 +799,8 @@ linters-settings:
|
|||||||
max-blank-identifiers: 2
|
max-blank-identifiers: 2
|
||||||
|
|
||||||
whitespace:
|
whitespace:
|
||||||
multi-if: false
|
multi-if: false # Enforces newlines (or comments) after every multi-line if statement
|
||||||
|
multi-func: false # Enforces newlines (or comments) after every multi-line function signature
|
||||||
|
|
||||||
linters:
|
linters:
|
||||||
enable:
|
enable:
|
||||||
|
2
go.mod
2
go.mod
@ -36,7 +36,7 @@ require (
|
|||||||
github.com/stretchr/testify v1.4.0
|
github.com/stretchr/testify v1.4.0
|
||||||
github.com/timakin/bodyclose v0.0.0-20190930140734-f7f2e9bca95e
|
github.com/timakin/bodyclose v0.0.0-20190930140734-f7f2e9bca95e
|
||||||
github.com/ultraware/funlen v0.0.2
|
github.com/ultraware/funlen v0.0.2
|
||||||
github.com/ultraware/whitespace v0.0.3
|
github.com/ultraware/whitespace v0.0.4
|
||||||
github.com/uudashr/gocognit v0.0.0-20190926065955-1655d0de0517
|
github.com/uudashr/gocognit v0.0.0-20190926065955-1655d0de0517
|
||||||
github.com/valyala/quicktemplate v1.2.0
|
github.com/valyala/quicktemplate v1.2.0
|
||||||
golang.org/x/tools v0.0.0-20190912215617-3720d1ec3678
|
golang.org/x/tools v0.0.0-20190912215617-3720d1ec3678
|
||||||
|
4
go.sum
4
go.sum
@ -232,8 +232,8 @@ github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGr
|
|||||||
github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0=
|
github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0=
|
||||||
github.com/ultraware/funlen v0.0.2 h1:Av96YVBwwNSe4MLR7iI/BIa3VyI7/djnto/pK3Uxbdo=
|
github.com/ultraware/funlen v0.0.2 h1:Av96YVBwwNSe4MLR7iI/BIa3VyI7/djnto/pK3Uxbdo=
|
||||||
github.com/ultraware/funlen v0.0.2/go.mod h1:Dp4UiAus7Wdb9KUZsYWZEWiRzGuM2kXM1lPbfaF6xhA=
|
github.com/ultraware/funlen v0.0.2/go.mod h1:Dp4UiAus7Wdb9KUZsYWZEWiRzGuM2kXM1lPbfaF6xhA=
|
||||||
github.com/ultraware/whitespace v0.0.3 h1:S5BCRRB5sttNy0bSOhbpw+0mb+cHiCmWfrvxpEzuUk0=
|
github.com/ultraware/whitespace v0.0.4 h1:If7Va4cM03mpgrNH9k49/VOicWpGoG70XPBFFODYDsg=
|
||||||
github.com/ultraware/whitespace v0.0.3/go.mod h1:aVMh/gQve5Maj9hQ/hg+F75lr/X5A89uZnzAmWSineA=
|
github.com/ultraware/whitespace v0.0.4/go.mod h1:aVMh/gQve5Maj9hQ/hg+F75lr/X5A89uZnzAmWSineA=
|
||||||
github.com/uudashr/gocognit v0.0.0-20190926065955-1655d0de0517 h1:ChMKTho2hWKpks/nD/FL2KqM1wuVt62oJeiE8+eFpGs=
|
github.com/uudashr/gocognit v0.0.0-20190926065955-1655d0de0517 h1:ChMKTho2hWKpks/nD/FL2KqM1wuVt62oJeiE8+eFpGs=
|
||||||
github.com/uudashr/gocognit v0.0.0-20190926065955-1655d0de0517/go.mod h1:j44Ayx2KW4+oB6SWMv8KsmHzZrOInQav7D3cQMJ5JUM=
|
github.com/uudashr/gocognit v0.0.0-20190926065955-1655d0de0517/go.mod h1:j44Ayx2KW4+oB6SWMv8KsmHzZrOInQav7D3cQMJ5JUM=
|
||||||
github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw=
|
github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw=
|
||||||
|
@ -175,7 +175,8 @@ type LintersSettings struct {
|
|||||||
Statements int
|
Statements int
|
||||||
}
|
}
|
||||||
Whitespace struct {
|
Whitespace struct {
|
||||||
MultiIf bool `mapstructure:"multi-if"`
|
MultiIf bool `mapstructure:"multi-if"`
|
||||||
|
MultiFunc bool `mapstructure:"multi-func"`
|
||||||
}
|
}
|
||||||
|
|
||||||
Lll LllSettings
|
Lll LllSettings
|
||||||
|
@ -28,7 +28,8 @@ func NewWhitespace() *goanalysis.Linter {
|
|||||||
[]*analysis.Analyzer{analyzer},
|
[]*analysis.Analyzer{analyzer},
|
||||||
nil,
|
nil,
|
||||||
).WithContextSetter(func(lintCtx *linter.Context) {
|
).WithContextSetter(func(lintCtx *linter.Context) {
|
||||||
settings := whitespace.Settings{MultiIf: lintCtx.Cfg.LintersSettings.Whitespace.MultiIf}
|
cfg := lintCtx.Cfg.LintersSettings.Whitespace
|
||||||
|
settings := whitespace.Settings{MultiIf: cfg.MultiIf, MultiFunc: cfg.MultiFunc}
|
||||||
|
|
||||||
analyzer.Run = func(pass *analysis.Pass) (interface{}, error) {
|
analyzer.Run = func(pass *analysis.Pass) (interface{}, error) {
|
||||||
var issues []whitespace.Message
|
var issues []whitespace.Message
|
||||||
|
8
test/testdata/fix/in/whitespace.go
vendored
8
test/testdata/fix/in/whitespace.go
vendored
@ -1,5 +1,6 @@
|
|||||||
//args: -Ewhitespace
|
//args: -Ewhitespace
|
||||||
//config: linters-settings.whitespace.multi-if=true
|
//config: linters-settings.whitespace.multi-if=true
|
||||||
|
//config: linters-settings.whitespace.multi-func=true
|
||||||
package p
|
package p
|
||||||
|
|
||||||
import "fmt"
|
import "fmt"
|
||||||
@ -47,9 +48,14 @@ func twoLeadingNewlines() {
|
|||||||
fmt.Println("Hello world")
|
fmt.Println("Hello world")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func multiFuncFunc(a int,
|
||||||
|
b int) {
|
||||||
|
fmt.Println("Hello world")
|
||||||
|
}
|
||||||
|
|
||||||
func multiIfFunc() {
|
func multiIfFunc() {
|
||||||
if 1 == 1 &&
|
if 1 == 1 &&
|
||||||
2 == 2 {
|
2 == 2 {
|
||||||
fmt.Println(`Hello multi-line world`)
|
fmt.Println("Hello multi-line world")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
9
test/testdata/fix/out/whitespace.go
vendored
9
test/testdata/fix/out/whitespace.go
vendored
@ -1,5 +1,6 @@
|
|||||||
//args: -Ewhitespace
|
//args: -Ewhitespace
|
||||||
//config: linters-settings.whitespace.multi-if=true
|
//config: linters-settings.whitespace.multi-if=true
|
||||||
|
//config: linters-settings.whitespace.multi-func=true
|
||||||
package p
|
package p
|
||||||
|
|
||||||
import "fmt"
|
import "fmt"
|
||||||
@ -43,10 +44,16 @@ func twoLeadingNewlines() {
|
|||||||
fmt.Println("Hello world")
|
fmt.Println("Hello world")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func multiFuncFunc(a int,
|
||||||
|
b int) {
|
||||||
|
|
||||||
|
fmt.Println("Hello world")
|
||||||
|
}
|
||||||
|
|
||||||
func multiIfFunc() {
|
func multiIfFunc() {
|
||||||
if 1 == 1 &&
|
if 1 == 1 &&
|
||||||
2 == 2 {
|
2 == 2 {
|
||||||
|
|
||||||
fmt.Println(`Hello multi-line world`)
|
fmt.Println("Hello multi-line world")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
48
vendor/github.com/ultraware/whitespace/README.md
generated
vendored
48
vendor/github.com/ultraware/whitespace/README.md
generated
vendored
@ -2,52 +2,6 @@
|
|||||||
|
|
||||||
Whitespace is a linter that checks for unnecessary newlines at the start and end of functions, if, for, etc.
|
Whitespace is a linter that checks for unnecessary newlines at the start and end of functions, if, for, etc.
|
||||||
|
|
||||||
Example code:
|
|
||||||
|
|
||||||
```go
|
|
||||||
package main
|
|
||||||
|
|
||||||
import "fmt"
|
|
||||||
|
|
||||||
func main() {
|
|
||||||
|
|
||||||
fmt.Println("Hello world")
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
Reults in:
|
|
||||||
|
|
||||||
```
|
|
||||||
$ whitespace .
|
|
||||||
main.go:6:unnecessary newline
|
|
||||||
```
|
|
||||||
|
|
||||||
## Installation guide
|
## Installation guide
|
||||||
|
|
||||||
```bash
|
Whitespace is included in [https://github.com/golangci/golangci-lint/](golangci-lint). Install it and enable whitespace.
|
||||||
go get git.ultraware.nl/NiseVoid/whitespace
|
|
||||||
```
|
|
||||||
|
|
||||||
### Gometalinter
|
|
||||||
|
|
||||||
You can add whitespace to gometalinter and enable it.
|
|
||||||
|
|
||||||
`.gometalinter.json`:
|
|
||||||
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"Linters": {
|
|
||||||
"whitespace": "whitespace:PATH:LINE:MESSAGE"
|
|
||||||
},
|
|
||||||
|
|
||||||
"Enable": [
|
|
||||||
"whitespace"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
commandline:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
gometalinter --linter "whitespace:whitespace:PATH:LINE:MESSAGE" --enable "whitespace"
|
|
||||||
```
|
|
||||||
|
45
vendor/github.com/ultraware/whitespace/main.go
generated
vendored
45
vendor/github.com/ultraware/whitespace/main.go
generated
vendored
@ -24,7 +24,8 @@ const (
|
|||||||
|
|
||||||
// Settings contains settings for edge-cases
|
// Settings contains settings for edge-cases
|
||||||
type Settings struct {
|
type Settings struct {
|
||||||
MultiIf bool
|
MultiIf bool
|
||||||
|
MultiFunc bool
|
||||||
}
|
}
|
||||||
|
|
||||||
// Run runs this linter on the provided code
|
// Run runs this linter on the provided code
|
||||||
@ -47,11 +48,11 @@ func Run(file *ast.File, fset *token.FileSet, settings Settings) []Message {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type visitor struct {
|
type visitor struct {
|
||||||
comments []*ast.CommentGroup
|
comments []*ast.CommentGroup
|
||||||
fset *token.FileSet
|
fset *token.FileSet
|
||||||
messages []Message
|
messages []Message
|
||||||
multiIf map[*ast.BlockStmt]bool
|
wantNewline map[*ast.BlockStmt]bool
|
||||||
settings Settings
|
settings Settings
|
||||||
}
|
}
|
||||||
|
|
||||||
func (v *visitor) Visit(node ast.Node) ast.Visitor {
|
func (v *visitor) Visit(node ast.Node) ast.Visitor {
|
||||||
@ -59,30 +60,28 @@ func (v *visitor) Visit(node ast.Node) ast.Visitor {
|
|||||||
return v
|
return v
|
||||||
}
|
}
|
||||||
|
|
||||||
if v.settings.MultiIf {
|
if stmt, ok := node.(*ast.IfStmt); ok && v.settings.MultiIf {
|
||||||
if stmt, ok := node.(*ast.IfStmt); ok {
|
checkMultiLine(v, stmt.Body, stmt.Cond)
|
||||||
start, end := posLine(v.fset, stmt.Cond.Pos()), posLine(v.fset, stmt.Cond.End())
|
}
|
||||||
|
|
||||||
if end > start { // Check only multi line conditions
|
if stmt, ok := node.(*ast.FuncDecl); ok && v.settings.MultiFunc {
|
||||||
v.multiIf[stmt.Body] = true
|
checkMultiLine(v, stmt.Body, stmt.Type)
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if stmt, ok := node.(*ast.BlockStmt); ok {
|
if stmt, ok := node.(*ast.BlockStmt); ok {
|
||||||
multiIf := v.multiIf[stmt]
|
wantNewline := v.wantNewline[stmt]
|
||||||
|
|
||||||
comments := v.comments
|
comments := v.comments
|
||||||
if multiIf {
|
if wantNewline {
|
||||||
comments = nil
|
comments = nil // Comments also count as a newline if we want a newline
|
||||||
}
|
}
|
||||||
first, last := firstAndLast(comments, v.fset, stmt.Pos(), stmt.End(), stmt.List)
|
first, last := firstAndLast(comments, v.fset, stmt.Pos(), stmt.End(), stmt.List)
|
||||||
|
|
||||||
startMsg := checkStart(v.fset, stmt.Lbrace, first)
|
startMsg := checkStart(v.fset, stmt.Lbrace, first)
|
||||||
|
|
||||||
if multiIf && startMsg == nil {
|
if wantNewline && startMsg == nil {
|
||||||
v.messages = append(v.messages, Message{v.fset.Position(stmt.Pos()), MessageTypeAddAfter, `multi-line if should be followed by a newline`})
|
v.messages = append(v.messages, Message{v.fset.Position(stmt.Pos()), MessageTypeAddAfter, `multi-line statement should be followed by a newline`})
|
||||||
} else if !multiIf && startMsg != nil {
|
} else if !wantNewline && startMsg != nil {
|
||||||
v.messages = append(v.messages, *startMsg)
|
v.messages = append(v.messages, *startMsg)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -94,6 +93,14 @@ func (v *visitor) Visit(node ast.Node) ast.Visitor {
|
|||||||
return v
|
return v
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func checkMultiLine(v *visitor, body *ast.BlockStmt, stmtStart ast.Node) {
|
||||||
|
start, end := posLine(v.fset, stmtStart.Pos()), posLine(v.fset, stmtStart.End())
|
||||||
|
|
||||||
|
if end > start { // Check only multi line conditions
|
||||||
|
v.wantNewline[body] = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func posLine(fset *token.FileSet, pos token.Pos) int {
|
func posLine(fset *token.FileSet, pos token.Pos) int {
|
||||||
return fset.Position(pos).Line
|
return fset.Position(pos).Line
|
||||||
}
|
}
|
||||||
|
2
vendor/modules.txt
vendored
2
vendor/modules.txt
vendored
@ -168,7 +168,7 @@ github.com/stretchr/testify/require
|
|||||||
github.com/timakin/bodyclose/passes/bodyclose
|
github.com/timakin/bodyclose/passes/bodyclose
|
||||||
# github.com/ultraware/funlen v0.0.2
|
# github.com/ultraware/funlen v0.0.2
|
||||||
github.com/ultraware/funlen
|
github.com/ultraware/funlen
|
||||||
# github.com/ultraware/whitespace v0.0.3
|
# github.com/ultraware/whitespace v0.0.4
|
||||||
github.com/ultraware/whitespace
|
github.com/ultraware/whitespace
|
||||||
# github.com/uudashr/gocognit v0.0.0-20190926065955-1655d0de0517
|
# github.com/uudashr/gocognit v0.0.0-20190926065955-1655d0de0517
|
||||||
github.com/uudashr/gocognit
|
github.com/uudashr/gocognit
|
||||||
|
Loading…
x
Reference in New Issue
Block a user