Skip to content

Commit 9360dc4

Browse files
authored
Merge pull request #42 from ccoveille-forks/slog-support
Support log/slog package
2 parents d0f384b + 90c527e commit 9360dc4

File tree

3 files changed

+54
-0
lines changed

3 files changed

+54
-0
lines changed

noctx.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,16 @@ var ngFuncMessages = map[string]string{
6969
"crypto/tls.Dial": "must not be called. use (*crypto/tls.Dialer).DialContext",
7070
"crypto/tls.DialWithDialer": "must not be called. use (*crypto/tls.Dialer).DialContext with NetDialer",
7171
"(*crypto/tls.Conn).Handshake": "must not be called. use (*crypto/tls.Conn).HandshakeContext",
72+
73+
// slog
74+
"log/slog.Debug": "must not be called. use log/slog.DebugContext",
75+
"log/slog.Warn": "must not be called. use log/slog.WarnContext",
76+
"log/slog.Error": "must not be called. use log/slog.ErrorContext",
77+
"log/slog.Info": "must not be called. use log/slog.InfoContext",
78+
"(*log/slog.Logger).Debug": "must not be called. use (*log/slog.Logger).DebugContext",
79+
"(*log/slog.Logger).Warn": "must not be called. use (*log/slog.Logger).WarnContext",
80+
"(*log/slog.Logger).Error": "must not be called. use (*log/slog.Logger).ErrorContext",
81+
"(*log/slog.Logger).Info": "must not be called. use (*log/slog.Logger).InfoContext",
7282
}
7383

7484
func Run(pass *analysis.Pass) (interface{}, error) {

noctx_test.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ func TestAnalyzer(t *testing.T) {
1515
{desc: "http_client"},
1616
{desc: "http_request"},
1717
{desc: "network"},
18+
{desc: "slog"},
1819
{desc: "sql"},
1920
}
2021

testdata/src/slog/slog.go

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
package log
2+
3+
import (
4+
"context"
5+
"log/slog"
6+
)
7+
8+
func _() {
9+
ctx := context.Background()
10+
11+
// default logger
12+
slog.Debug("debug message", slog.String("key", "value")) // want `log/slog.Debug must not be called. use log/slog.DebugContext`
13+
slog.Warn("warn message", slog.String("key", "value")) // want `log/slog.Warn must not be called. use log/slog.WarnContext`
14+
slog.Error("error message", slog.String("key", "value")) // want `log/slog.Error must not be called. use log/slog.ErrorContext`
15+
slog.Info("info message", slog.String("key", "value")) // want `log/slog.Info must not be called. use log/slog.InfoContext`
16+
17+
slog.DebugContext(ctx, "debug message", slog.String("key", "value"))
18+
slog.WarnContext(ctx, "warn message", slog.String("key", "value"))
19+
slog.ErrorContext(ctx, "error message", slog.String("key", "value"))
20+
slog.InfoContext(ctx, "info message", slog.String("key", "value"))
21+
22+
slog.Default().Debug("debug message", slog.String("key", "value")) // want `\(\*log/slog.Logger\).Debug must not be called. use \(\*log/slog.Logger\).DebugContext`
23+
slog.Default().Warn("warn message", slog.String("key", "value")) // want `\(\*log/slog.Logger\).Warn must not be called. use \(\*log/slog.Logger\).WarnContext`
24+
slog.Default().Error("error message", slog.String("key", "value")) // want `\(\*log/slog.Logger\).Error must not be called. use \(\*log/slog.Logger\).ErrorContext`
25+
slog.Default().Info("info message", slog.String("key", "value")) // want `\(\*log/slog.Logger\).Info must not be called. use \(\*log/slog.Logger\).InfoContext`
26+
27+
slog.Default().DebugContext(ctx, "debug message", slog.String("key", "value"))
28+
slog.Default().WarnContext(ctx, "warn message", slog.String("key", "value"))
29+
slog.Default().ErrorContext(ctx, "error message", slog.String("key", "value"))
30+
slog.Default().InfoContext(ctx, "info message", slog.String("key", "value"))
31+
32+
// Logger struct
33+
l := slog.New(slog.NewTextHandler(nil, nil))
34+
l.Debug("debug message", slog.String("key", "value")) // want `\(\*log/slog.Logger\).Debug must not be called. use \(\*log/slog.Logger\).DebugContext`
35+
l.Warn("warn message", slog.String("key", "value")) // want `\(\*log/slog.Logger\).Warn must not be called. use \(\*log/slog.Logger\).WarnContext`
36+
l.Error("error message", slog.String("key", "value")) // want `\(\*log/slog.Logger\).Error must not be called. use \(\*log/slog.Logger\).ErrorContext`
37+
l.Info("info message", slog.String("key", "value")) // want `\(\*log/slog.Logger\).Info must not be called. use \(\*log/slog.Logger\).InfoContext`
38+
39+
l.DebugContext(ctx, "debug message", slog.String("key", "value"))
40+
l.WarnContext(ctx, "warn message", slog.String("key", "value"))
41+
l.ErrorContext(ctx, "error message", slog.String("key", "value"))
42+
l.InfoContext(ctx, "info message", slog.String("key", "value"))
43+
}

0 commit comments

Comments
 (0)