Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit d9df700

Browse files
author
Sergey Vilgelm
committedSep 8, 2020
Add stringintconv and ifaceassert to govet
Add new linters: * stringintconv, enabled by default * ifaceassert is additional linter Move govet tests to a dedicated folder
1 parent 140d51b commit d9df700

File tree

3 files changed

+30
-6
lines changed

3 files changed

+30
-6
lines changed
 

‎pkg/golinters/govet.go

+5
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import (
1717
"golang.org/x/tools/go/analysis/passes/errorsas"
1818
"golang.org/x/tools/go/analysis/passes/findcall"
1919
"golang.org/x/tools/go/analysis/passes/httpresponse"
20+
"golang.org/x/tools/go/analysis/passes/ifaceassert"
2021
_ "golang.org/x/tools/go/analysis/passes/inspect" // unused internal analyzer
2122
"golang.org/x/tools/go/analysis/passes/loopclosure"
2223
"golang.org/x/tools/go/analysis/passes/lostcancel"
@@ -28,6 +29,7 @@ import (
2829
"golang.org/x/tools/go/analysis/passes/shift"
2930
"golang.org/x/tools/go/analysis/passes/sortslice"
3031
"golang.org/x/tools/go/analysis/passes/stdmethods"
32+
"golang.org/x/tools/go/analysis/passes/stringintconv"
3133
"golang.org/x/tools/go/analysis/passes/structtag"
3234
"golang.org/x/tools/go/analysis/passes/testinggoroutine"
3335
"golang.org/x/tools/go/analysis/passes/tests"
@@ -55,6 +57,7 @@ var (
5557
errorsas.Analyzer,
5658
findcall.Analyzer,
5759
httpresponse.Analyzer,
60+
ifaceassert.Analyzer,
5861
loopclosure.Analyzer,
5962
lostcancel.Analyzer,
6063
nilfunc.Analyzer,
@@ -64,6 +67,7 @@ var (
6467
shift.Analyzer,
6568
sortslice.Analyzer,
6669
stdmethods.Analyzer,
70+
stringintconv.Analyzer,
6771
structtag.Analyzer,
6872
testinggoroutine.Analyzer,
6973
tests.Analyzer,
@@ -90,6 +94,7 @@ var (
9094
printf.Analyzer,
9195
shift.Analyzer,
9296
stdmethods.Analyzer,
97+
stringintconv.Analyzer,
9398
structtag.Analyzer,
9499
tests.Analyzer,
95100
unmarshal.Analyzer,
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,18 @@
11
//args: -Egovet
22
//config: linters-settings.govet.check-shadowing=true
3-
package testdata
3+
package govet
44

55
import (
66
"fmt"
77
"io"
88
"os"
99
)
1010

11-
func Govet() error {
11+
func Composites() error {
1212
return &os.PathError{"first", "path", os.ErrNotExist} // ERROR "composites: `os.PathError` composite literal uses unkeyed fields"
1313
}
1414

15-
func GovetShadow(f io.Reader, buf []byte) (err error) {
15+
func Shadow(f io.Reader, buf []byte) (err error) {
1616
if f != nil {
1717
_, err := f.Read(buf) // ERROR "shadow: declaration of .err. shadows declaration at line \d+"
1818
if err != nil {
@@ -24,15 +24,20 @@ func GovetShadow(f io.Reader, buf []byte) (err error) {
2424
return
2525
}
2626

27-
func GovetNolintVet() error {
27+
func NolintVet() error {
2828
return &os.PathError{"first", "path", os.ErrNotExist} //nolint:vet
2929
}
3030

31-
func GovetNolintVetShadow() error {
31+
func NolintVetShadow() error {
3232
return &os.PathError{"first", "path", os.ErrNotExist} //nolint:vetshadow
3333
}
3434

35-
func GovetPrintf() {
35+
func Printf() {
3636
x := "dummy"
3737
fmt.Printf("%d", x) // ERROR "printf: Printf format %d has arg x of wrong type string"
3838
}
39+
40+
func StringIntConv() {
41+
i := 42
42+
fmt.Println("i = " + string(i)) // ERROR "stringintconv: conversion from int to string yields a string of one rune, not a string of digits (did you mean fmt.Sprint(x)?)"
43+
}

‎test/testdata/govet/ifaceassert.go

+14
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
//args: -Egovet
2+
//config: linters-settings.govet.enable=["ifaceassert"]
3+
package govet
4+
5+
import (
6+
"io"
7+
)
8+
9+
func IfaceAssert() {
10+
var v interface {
11+
Read()
12+
}
13+
_ = v.(io.Reader) // ERROR "composites: `os.PathError` composite literal uses unkeyed fields"
14+
}

0 commit comments

Comments
 (0)
Please sign in to comment.