1
0
mirror of https://github.com/mgechev/revive.git synced 2025-01-22 03:38:47 +02:00

Refactoring

This commit is contained in:
mgechev 2017-08-29 10:47:29 -07:00
parent 0531ac8f6a
commit 1cdf90891b
11 changed files with 45 additions and 45 deletions

View File

@ -1,12 +1,12 @@
package defaultrules
package defaultrule
import (
"go/ast"
"go/token"
"github.com/mgechev/revive/file"
"github.com/mgechev/revive/rules"
"github.com/mgechev/revive/visitors"
"github.com/mgechev/revive/rule"
"github.com/mgechev/revive/visitor"
)
const (
@ -16,19 +16,19 @@ const (
// LintElseRule lints given else constructs.
type LintElseRule struct {
rules.Rule
rule.Rule
}
// Apply applies the rule to given file.
func (r *LintElseRule) Apply(file *file.File, arguments rules.RuleArguments) []rules.Failure {
func (r *LintElseRule) Apply(file *file.File, arguments rule.RuleArguments) []rule.Failure {
res := &lintElseVisitor{}
visitors.Setup(res, rules.RuleConfig{Name: ruleName, Arguments: arguments}, file)
visitor.Setup(res, rule.RuleConfig{Name: ruleName, Arguments: arguments}, file)
res.Visit(file.GetAST())
return res.GetFailures()
}
type lintElseVisitor struct {
visitors.RuleVisitor
visitor.RuleVisitor
}
func (w *lintElseVisitor) VisitIfStmt(node *ast.IfStmt) {
@ -50,9 +50,9 @@ func (w *lintElseVisitor) VisitIfStmt(node *ast.IfStmt) {
}
lastStmt := node.Body.List[len(node.Body.List)-1]
if _, ok := lastStmt.(*ast.ReturnStmt); ok {
w.AddFailure(rules.Failure{
w.AddFailure(rule.Failure{
Failure: failure,
Type: rules.FailureTypeWarning,
Type: rule.FailureTypeWarning,
Position: w.GetPosition(node.Else.Pos(), node.Else.End()),
})
}

View File

@ -1,10 +1,10 @@
package formatters
package formatter
import (
"bytes"
"fmt"
"github.com/mgechev/revive/rules"
"github.com/mgechev/revive/rule"
"github.com/olekukonko/tablewriter"
"github.com/ttacon/chalk"
)
@ -20,25 +20,25 @@ type CLIFormatter struct {
Metadata FormatterMetadata
}
func formatFailure(failure rules.Failure) []string {
func formatFailure(failure rule.Failure) []string {
fString := chalk.Blue.Color(failure.Failure)
fTypeStr := string(failure.Type)
fType := chalk.Red.Color(fTypeStr)
lineColumn := failure.Position
pos := chalk.Dim.TextStyle(fmt.Sprintf("(%d, %d)", lineColumn.Start.Line, lineColumn.Start.Column))
if failure.Type == rules.FailureTypeWarning {
if failure.Type == rule.FailureTypeWarning {
fType = chalk.Yellow.Color(fTypeStr)
}
return []string{failure.GetFilename(), pos, fType, fString}
}
// Format formats the failures gotten from the linter.
func (f *CLIFormatter) Format(failures []rules.Failure) (string, error) {
func (f *CLIFormatter) Format(failures []rule.Failure) (string, error) {
var result [][]string
var totalErrors = 0
for _, f := range failures {
result = append(result, formatFailure(f))
if f.Type == rules.FailureTypeError {
if f.Type == rule.FailureTypeError {
totalErrors++
}
}

View File

@ -1,6 +1,6 @@
package formatters
package formatter
import "github.com/mgechev/revive/rules"
import "github.com/mgechev/revive/rule"
// FormatterMetadata configuration of a formatter
type FormatterMetadata struct {
@ -11,5 +11,5 @@ type FormatterMetadata struct {
// Formatter defines an interface for failure formatters
type Formatter interface {
Format([]rules.Failure) string
Format([]rule.Failure) string
}

View File

@ -1,9 +1,9 @@
package formatters
package formatter
import (
"encoding/json"
"github.com/mgechev/revive/rules"
"github.com/mgechev/revive/rule"
)
// JSONFormatter is an implementation of the Formatter interface
@ -13,7 +13,7 @@ type JSONFormatter struct {
}
// Format formats the failures gotten from the linter.
func (f *JSONFormatter) Format(failures []rules.Failure) (string, error) {
func (f *JSONFormatter) Format(failures []rule.Failure) (string, error) {
result, error := json.Marshal(failures)
if error != nil {
return "", error

View File

@ -4,7 +4,7 @@ import (
"go/token"
"github.com/mgechev/revive/file"
"github.com/mgechev/revive/rules"
"github.com/mgechev/revive/rule"
)
// ReadFile defines an abstraction for reading files.
@ -20,10 +20,10 @@ func New(reader ReadFile) Linter {
return Linter{reader: reader}
}
// Lint lints a set of files with the specified rules.
func (l *Linter) Lint(filenames []string, ruleSet []rules.Rule) ([]rules.Failure, error) {
// Lint lints a set of files with the specified rule.
func (l *Linter) Lint(filenames []string, ruleSet []rule.Rule) ([]rule.Failure, error) {
var fileSet token.FileSet
var failures []rules.Failure
var failures []rule.Failure
for _, filename := range filenames {
content, err := l.reader(filename)
if err != nil {

12
main.go
View File

@ -3,10 +3,10 @@ package main
import (
"fmt"
"github.com/mgechev/revive/defaultrules"
"github.com/mgechev/revive/formatters"
"github.com/mgechev/revive/defaultrule"
"github.com/mgechev/revive/formatter"
"github.com/mgechev/revive/linter"
"github.com/mgechev/revive/rules"
"github.com/mgechev/revive/rule"
)
func main() {
@ -25,15 +25,15 @@ func main() {
linter := linter.New(func(file string) ([]byte, error) {
return []byte(src), nil
})
var result []rules.Rule
result = append(result, &defaultrules.LintElseRule{})
var result []rule.Rule
result = append(result, &defaultrule.LintElseRule{})
failures, err := linter.Lint([]string{"foo.go", "bar.go", "baz.go"}, result)
if err != nil {
panic(err)
}
var formatter formatters.CLIFormatter
var formatter formatter.CLIFormatter
output, err := formatter.Format(failures)
if err != nil {
panic(err)

View File

@ -1,4 +1,4 @@
package rules
package rule
import (
"go/token"

View File

@ -1,36 +1,36 @@
package visitors
package visitor
import (
"go/token"
"github.com/mgechev/revive/file"
"github.com/mgechev/revive/rules"
"github.com/mgechev/revive/rule"
)
// RuleVisitor defines a struct for a visitor.
type RuleVisitor struct {
SyntaxVisitor
RuleName string
RuleArguments rules.RuleArguments
failures []rules.Failure
RuleArguments rule.RuleArguments
failures []rule.Failure
File *file.File
}
// AddFailure adds a failure to the ist of failures.
func (w *RuleVisitor) AddFailure(failure rules.Failure) {
func (w *RuleVisitor) AddFailure(failure rule.Failure) {
w.failures = append(w.failures, failure)
}
// GetFailures returns the list of failures.
func (w *RuleVisitor) GetFailures() []rules.Failure {
func (w *RuleVisitor) GetFailures() []rule.Failure {
return w.failures
}
// GetPosition returns position by given start and end token.Pos.
func (w *RuleVisitor) GetPosition(start token.Pos, end token.Pos) rules.FailurePosition {
func (w *RuleVisitor) GetPosition(start token.Pos, end token.Pos) rule.FailurePosition {
s := w.File.ToPosition(start)
e := w.File.ToPosition(end)
return rules.FailurePosition{
return rule.FailurePosition{
Start: s,
End: e,
}

View File

@ -1,15 +1,15 @@
package visitors
package visitor
import (
"errors"
"reflect"
"github.com/mgechev/revive/file"
"github.com/mgechev/revive/rules"
"github.com/mgechev/revive/rule"
)
// Setup sets the proper pointers of given visitor.
func Setup(v interface{}, conf rules.RuleConfig, file *file.File) error {
func Setup(v interface{}, conf rule.RuleConfig, file *file.File) error {
val := reflect.ValueOf(v).Elem()
field := val.FieldByName("RuleVisitor")
if !field.IsValid() {

View File

@ -1,4 +1,4 @@
package visitors
package visitor
import (
"fmt"

View File

@ -1,4 +1,4 @@
package visitors
package visitor
import "go/ast"