mirror of
https://github.com/mgechev/revive.git
synced 2025-03-17 20:57:58 +02:00
Refactor
This commit is contained in:
parent
5d652029ae
commit
af459bbef6
@ -31,7 +31,7 @@ func (r *LintElseRule) Name() string {
|
||||
}
|
||||
|
||||
type lintElse struct {
|
||||
r rule.Rule
|
||||
r *LintElseRule
|
||||
}
|
||||
|
||||
func (f lintElse) Visit(n ast.Node) ast.Visitor {
|
||||
@ -55,11 +55,10 @@ func (f lintElse) Visit(n ast.Node) ast.Visitor {
|
||||
}
|
||||
lastStmt := node.Body.List[len(node.Body.List)-1]
|
||||
if _, ok := lastStmt.(*ast.ReturnStmt); ok {
|
||||
f.r.AddFailures(rule.Failure{
|
||||
Failure: failure,
|
||||
Type: rule.FailureTypeWarning,
|
||||
Position: f.r.Position(node.Else.Pos(), node.Else.End()),
|
||||
})
|
||||
f.r.AddFailureAtNode(rule.Failure{
|
||||
Failure: failure,
|
||||
Type: rule.FailureTypeWarning,
|
||||
}, node.Else, f.r.File)
|
||||
return f
|
||||
}
|
||||
}
|
||||
|
22
rule/rule.go
22
rule/rule.go
@ -1,6 +1,7 @@
|
||||
package rule
|
||||
|
||||
import (
|
||||
"go/ast"
|
||||
"go/token"
|
||||
|
||||
"github.com/mgechev/revive/file"
|
||||
@ -58,7 +59,6 @@ type Rule interface {
|
||||
Apply(*file.File, Arguments) []Failure
|
||||
AddFailures(...Failure)
|
||||
Failures() []Failure
|
||||
Position(token.Pos, token.Pos) FailurePosition
|
||||
}
|
||||
|
||||
// AbstractRule defines an abstract rule.
|
||||
@ -67,27 +67,25 @@ type AbstractRule struct {
|
||||
File *file.File
|
||||
}
|
||||
|
||||
// Apply must be overridden by the successor struct.
|
||||
func (r *AbstractRule) Apply(file *file.File, args Arguments) {
|
||||
panic("Apply not implemented")
|
||||
}
|
||||
|
||||
// AddFailures adds rule failures.
|
||||
func (r *AbstractRule) AddFailures(failures ...Failure) {
|
||||
r.failures = append(r.failures, failures...)
|
||||
}
|
||||
|
||||
// AddFailureAtNode adds rule failure at specific node.
|
||||
func (r *AbstractRule) AddFailureAtNode(failure Failure, t ast.Node, file *file.File) {
|
||||
failure.Position = toFailurePosition(t.Pos(), t.End(), file)
|
||||
r.AddFailures(failure)
|
||||
}
|
||||
|
||||
// Failures returns the rule failures.
|
||||
func (r *AbstractRule) Failures() []Failure {
|
||||
return r.failures
|
||||
}
|
||||
|
||||
// Position returns position by given start and end token.Pos.
|
||||
func (r *AbstractRule) Position(start token.Pos, end token.Pos) FailurePosition {
|
||||
s := r.File.ToPosition(start)
|
||||
e := r.File.ToPosition(end)
|
||||
func toFailurePosition(start token.Pos, end token.Pos, file *file.File) FailurePosition {
|
||||
return FailurePosition{
|
||||
Start: s,
|
||||
End: e,
|
||||
Start: file.ToPosition(start),
|
||||
End: file.ToPosition(end),
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user