-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathgolint.sh
executable file
·58 lines (40 loc) · 1.06 KB
/
golint.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#!/bin/sh -u
# golint.sh: farther than golint
# go fmt first
[ -f go.mod ] || exit 0
E() {
code=$?
[ $code -ne 0 ] && echo " $*"
errors=$(( errors + code ))
}
if ! command -v ag >/dev/null 2>&1; then
echo Skipping: silver searcher unavailable
exit 0
fi
g() {
ag --ignore '*.pb.go' --ignore 'migrations/bindata.go' "$@"
}
errors=0
! g 'return\s+}\s+return\s+}'
E first return can be dropped
! g '^\s+fmt\.[^\n]+\s+log\.Print'
E log first
! g ', err = [^;\n]+\s+if err '
E if can be inlined
! g '^\s+err :?= [^;\n]+\s+if err '
E if can be inlined
! g '^\s+fmt\.Errorf'
E unused value
! g --ignore '*.pb.go' 'fmt\.Errorf."[^%\n]*"'
E prefer errors.New
! g '([^ ]+) != nil\s+{\s+for [^=]+ := range \1'
E unnecessary nil check around range
# ! g 'make\(\[\][^],]+, [^0]'
# E you meant capacity
! g '\.Println\((\"[^"]+ \")+'
E unnecessary trailing space
! g 'log.Printf\([^,]+\\n.\,'
E superfluous newline
! g '[^A-Za-z0-9_\]]byte\("\\?[^"]"\)|'"[^A-Za-z0-9_\\]]byte\\('\\\\?[^']'\\)"
E that\'s just single quotes with extra steps
exit $errors