Skip to content

Commit

Permalink
feat: add constant.Kind
Browse files Browse the repository at this point in the history
  • Loading branch information
sashamelentyev committed Sep 6, 2022
1 parent 7af15cf commit 290af7a
Show file tree
Hide file tree
Showing 6 changed files with 88 additions and 2 deletions.
11 changes: 11 additions & 0 deletions pkg/analyzer/analyzer.go
Expand Up @@ -24,6 +24,7 @@ const (
OSDevNullFlag = "os-dev-null"
SQLIsolationLevelFlag = "sql-isolation-level"
TLSSignatureSchemeFlag = "tls-signature-scheme"
ConstantKindFlag = "constant-kind"
)

// New returns new usestdlibvars analyzer.
Expand All @@ -49,6 +50,7 @@ func flags() flag.FlagSet {
flags.Bool(OSDevNullFlag, false, "suggest the use of os.DevNull")
flags.Bool(SQLIsolationLevelFlag, false, "suggest the use of sql.LevelXX.String()")
flags.Bool(TLSSignatureSchemeFlag, false, "suggest the use of tls.SignatureScheme.String()")
flags.Bool(ConstantKindFlag, false, "suggest the use of constant.Kind.String()")
return *flags
}

Expand Down Expand Up @@ -91,6 +93,7 @@ func run(pass *analysis.Pass) (interface{}, error) {
{flag: OSDevNullFlag, checkFunc: checkOSDevNull},
{flag: SQLIsolationLevelFlag, checkFunc: checkSQLIsolationLevel},
{flag: TLSSignatureSchemeFlag, checkFunc: checkTLSSignatureScheme},
{flag: ConstantKindFlag, checkFunc: checkConstantKind},
} {
if lookupFlag(pass, c.flag) {
c.checkFunc(pass, n)
Expand Down Expand Up @@ -438,6 +441,14 @@ func checkTLSSignatureScheme(pass *analysis.Pass, basicLit *ast.BasicLit) {
}
}

func checkConstantKind(pass *analysis.Pass, basicLit *ast.BasicLit) {
currentVal := getBasicLitValue(basicLit)

if newVal, ok := mapping.ConstantKind[currentVal]; ok {
report(pass, basicLit.Pos(), currentVal, newVal)
}
}

// getBasicLitFromArgs gets the *ast.BasicLit of a function argument.
//
// Arguments:
Expand Down
2 changes: 2 additions & 0 deletions pkg/analyzer/analyzer_test.go
Expand Up @@ -17,6 +17,7 @@ func TestUseStdlibVars(t *testing.T) {
"a/os",
"a/sql",
"a/tls",
"a/constant",
}

a := analyzer.New()
Expand All @@ -29,6 +30,7 @@ func TestUseStdlibVars(t *testing.T) {
mustNil(t, a.Flags.Set(analyzer.OSDevNullFlag, "true"))
mustNil(t, a.Flags.Set(analyzer.SQLIsolationLevelFlag, "true"))
mustNil(t, a.Flags.Set(analyzer.TLSSignatureSchemeFlag, "true"))
mustNil(t, a.Flags.Set(analyzer.ConstantKindFlag, "true"))

analysistest.Run(t, analysistest.TestData(), a, pkgs...)
}
Expand Down
8 changes: 7 additions & 1 deletion pkg/analyzer/internal/gen.go
Expand Up @@ -97,10 +97,16 @@ func main() {
},
{
mapping: mapping.TLSSignatureScheme,
packageName: "sql_test",
packageName: "tls_test",
templateName: "test-template.go.tmpl",
fileName: "pkg/analyzer/testdata/src/a/tls/signaturescheme.go",
},
{
mapping: mapping.ConstantKind,
packageName: "constant_test",
templateName: "test-template.go.tmpl",
fileName: "pkg/analyzer/testdata/src/a/constant/kind.go",
},
}

for _, operation := range operations {
Expand Down
10 changes: 10 additions & 0 deletions pkg/analyzer/internal/mapping/mapping.go
Expand Up @@ -4,6 +4,7 @@ import (
"crypto"
"crypto/tls"
"database/sql"
"go/constant"
"net/http"
"net/rpc"
"os"
Expand Down Expand Up @@ -192,3 +193,12 @@ var TLSSignatureScheme = map[string]string{
tls.PKCS1WithSHA1.String(): "tls.PKCS1WithSHA1.String()",
tls.ECDSAWithSHA1.String(): "tls.ECDSAWithSHA1.String()",
}

var ConstantKind = map[string]string{
// constant.Unknown.String(): "constant.Unknown.String()",
constant.Bool.String(): "constant.Bool.String()",
constant.String.String(): "constant..String()",
constant.Int.String(): "constant..String()",
constant.Float.String(): "constant..String()",
constant.Complex.String(): "constant..String()",
}
57 changes: 57 additions & 0 deletions pkg/analyzer/testdata/src/a/constant/kind.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion pkg/analyzer/testdata/src/a/tls/signaturescheme.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit 290af7a

Please sign in to comment.