diff --git a/internal/analyzers/noliteral/linter.go b/internal/analyzers/noliteral/linter.go index 107613d..ffb1635 100644 --- a/internal/analyzers/noliteral/linter.go +++ b/internal/analyzers/noliteral/linter.go @@ -51,49 +51,56 @@ func run(pass *analysis.Pass) (interface{}, error) { } for _, file := range pass.Files { ast.Inspect(file, func(n ast.Node) bool { - expr, ok := n.(*ast.CallExpr) - if !ok { - return true - } - - isLog, _ := astutils.IsTargetMethod(expr.Fun, Config.TargetMethods) - if !isLog || len(expr.Args) == 0 || astutils.HasNoLintComment(pass, expr.Pos()) { - return true - } - - if !astutils.IsStringValue(expr.Args[0]) { - alias, _ := astutils.GetAliasByPkgName(file, Config.ConstantsPackage) - if Config.ConstantsPackage == "" || astutils.GetPackageName(expr.Args[0]) == alias || astutils.GetPackageName(expr.Args[0]) == "" { - return true + switch n.(type) { + // log.Error() + case *ast.CallExpr: + if expr, ok := n.(*ast.CallExpr); ok { + return analyzeCallExpr(pass, expr, file) } - - for _, pkgName := range Config.DisablePackages { - if pkgName == astutils.GetPackageName(expr.Args[0]) { - return true - } - } - - pass.Report(analysis.Diagnostic{ - Pos: expr.Pos(), - End: expr.End(), - Category: LinterName, - Message: "Wrong package for constants", - SuggestedFixes: nil, - }) - return true } - - pass.Report(analysis.Diagnostic{ - Pos: expr.Pos(), - End: expr.End(), - Category: LinterName, - Message: "Literals are not allowed in the body of the logger", - SuggestedFixes: nil, - }) - - return false + return true }) } return nil, nil } + +func analyzeCallExpr(pass *analysis.Pass, expr *ast.CallExpr, file *ast.File) bool { + isLog, _ := astutils.IsTargetMethod(expr.Fun, Config.TargetMethods) + + if !isLog || len(expr.Args) == 0 || astutils.HasNoLintComment(pass, expr.Pos()) { + return true + } + + if !astutils.IsStringValue(expr.Args[0]) { + alias, _ := astutils.GetAliasByPkgName(file, Config.ConstantsPackage) + if Config.ConstantsPackage == "" || astutils.GetPackageName(expr.Args[0]) == alias || astutils.GetPackageName(expr.Args[0]) == "" { + return true + } + + for _, pkgName := range Config.DisablePackages { + if pkgName == astutils.GetPackageName(expr.Args[0]) { + return true + } + } + + pass.Report(analysis.Diagnostic{ + Pos: expr.Pos(), + End: expr.End(), + Category: LinterName, + Message: "Wrong package for constants", + SuggestedFixes: nil, + }) + return true + } + + pass.Report(analysis.Diagnostic{ + Pos: expr.Pos(), + End: expr.End(), + Category: LinterName, + Message: "Literals are not allowed in the body of the logger", + SuggestedFixes: nil, + }) + + return false +} diff --git a/internal/analyzers/noliteral/test-case/const-location/positive._go b/internal/analyzers/noliteral/test-case/const-location/positive._go index 013132e..96af649 100644 --- a/internal/analyzers/noliteral/test-case/const-location/positive._go +++ b/internal/analyzers/noliteral/test-case/const-location/positive._go @@ -4,23 +4,23 @@ package logs //declaration package import ( "fmt" - tochno_ne_const_dly_log "git.frostfs.info/TrueCloudLab/frostfs-node/internal/logs"// The alias of the package with constants differs from the one used + tochno_ne_dly_const_log "git.frostfs.info/TrueCloudLab/frostfs-node/internal/logs"// The alias of the package with constants differs from the one used ) func (c *cfg) info_ok() { - c.log.Info(tochno_ne_const_dly_log.MSG) + c.log.Info(tochno_ne_dly_const_log.MSG) } func (c *cfg) debug_ok() { - c.log.Debug(tochno_ne_const_dly_log.MSG) + c.log.Debug(tochno_ne_dly_const_log.MSG) } func (c *cfg) error_ok() { - c.log.Error(tochno_ne_const_dly_log.MSG) + c.log.Error(tochno_ne_dly_const_log.MSG) } func (c *cfg) custom_ok_const() { - c.log.Abyr(tochno_ne_const_dly_log.MSG) + c.log.Abyr(tochno_ne_dly_const_log.MSG) }