diff options
| author | Taras Madan <tarasmadan@google.com> | 2025-01-22 16:07:17 +0100 |
|---|---|---|
| committer | Taras Madan <tarasmadan@google.com> | 2025-01-23 10:42:36 +0000 |
| commit | 7b4377ad9d8a7205416df8d6217ef2b010f89481 (patch) | |
| tree | e6fec4fd12ff807a16d847923f501075bf71d16c /vendor/github.com/golangci/dupl/printer | |
| parent | 475a4c203afb8b7d3af51c4fd32bb170ff32a45e (diff) | |
vendor: delete
Diffstat (limited to 'vendor/github.com/golangci/dupl/printer')
| -rw-r--r-- | vendor/github.com/golangci/dupl/printer/html.go | 120 | ||||
| -rw-r--r-- | vendor/github.com/golangci/dupl/printer/plumbing.go | 50 | ||||
| -rw-r--r-- | vendor/github.com/golangci/dupl/printer/printer.go | 11 | ||||
| -rw-r--r-- | vendor/github.com/golangci/dupl/printer/text.go | 100 |
4 files changed, 0 insertions, 281 deletions
diff --git a/vendor/github.com/golangci/dupl/printer/html.go b/vendor/github.com/golangci/dupl/printer/html.go deleted file mode 100644 index 5ad9e25c7..000000000 --- a/vendor/github.com/golangci/dupl/printer/html.go +++ /dev/null @@ -1,120 +0,0 @@ -package printer - -import ( - "bytes" - "fmt" - "io" - "regexp" - "sort" - - "github.com/golangci/dupl/syntax" -) - -type html struct { - iota int - w io.Writer - ReadFile -} - -func NewHTML(w io.Writer, fread ReadFile) Printer { - return &html{w: w, ReadFile: fread} -} - -func (p *html) PrintHeader() error { - _, err := fmt.Fprint(p.w, `<!DOCTYPE html> -<meta charset="utf-8"/> -<title>Duplicates</title> -<style> - pre { - background-color: #FFD; - border: 1px solid #E2E2E2; - padding: 1ex; - } -</style> -`) - return err -} - -func (p *html) PrintClones(dups [][]*syntax.Node) error { - p.iota++ - fmt.Fprintf(p.w, "<h1>#%d found %d clones</h1>\n", p.iota, len(dups)) - - clones := make([]clone, len(dups)) - for i, dup := range dups { - cnt := len(dup) - if cnt == 0 { - panic("zero length dup") - } - nstart := dup[0] - nend := dup[cnt-1] - - file, err := p.ReadFile(nstart.Filename) - if err != nil { - return err - } - - lineStart, _ := blockLines(file, nstart.Pos, nend.End) - cl := clone{filename: nstart.Filename, lineStart: lineStart} - start := findLineBeg(file, nstart.Pos) - content := append(toWhitespace(file[start:nstart.Pos]), file[nstart.Pos:nend.End]...) - cl.fragment = deindent(content) - clones[i] = cl - } - - sort.Sort(byNameAndLine(clones)) - for _, cl := range clones { - fmt.Fprintf(p.w, "<h2>%s:%d</h2>\n<pre>%s</pre>\n", cl.filename, cl.lineStart, cl.fragment) - } - return nil -} - -func (*html) PrintFooter() error { return nil } - -func findLineBeg(file []byte, index int) int { - for i := index; i >= 0; i-- { - if file[i] == '\n' { - return i + 1 - } - } - return 0 -} - -func toWhitespace(str []byte) []byte { - var out []byte - for _, c := range bytes.Runes(str) { - if c == '\t' { - out = append(out, '\t') - } else { - out = append(out, ' ') - } - } - return out -} - -func deindent(block []byte) []byte { - const maxVal = 99 - min := maxVal - re := regexp.MustCompile(`(^|\n)(\t*)\S`) - for _, line := range re.FindAllSubmatch(block, -1) { - indent := line[2] - if len(indent) < min { - min = len(indent) - } - } - if min == 0 || min == maxVal { - return block - } - block = block[min:] -Loop: - for i := 0; i < len(block); i++ { - if block[i] == '\n' && i != len(block)-1 { - for j := 0; j < min; j++ { - if block[i+j+1] != '\t' { - continue Loop - } - } - block = append(block[:i+1], block[i+1+min:]...) - } - } - return block -} diff --git a/vendor/github.com/golangci/dupl/printer/plumbing.go b/vendor/github.com/golangci/dupl/printer/plumbing.go deleted file mode 100644 index cf39d01b7..000000000 --- a/vendor/github.com/golangci/dupl/printer/plumbing.go +++ /dev/null @@ -1,50 +0,0 @@ -package printer - -import ( - "sort" - - "github.com/golangci/dupl/syntax" -) - -type Clone clone - -func (c Clone) Filename() string { - return c.filename -} - -func (c Clone) LineStart() int { - return c.lineStart -} - -func (c Clone) LineEnd() int { - return c.lineEnd -} - -type Issue struct { - From, To Clone -} - -type Plumbing struct { - ReadFile -} - -func NewPlumbing(fread ReadFile) *Plumbing { - return &Plumbing{fread} -} - -func (p *Plumbing) MakeIssues(dups [][]*syntax.Node) ([]Issue, error) { - clones, err := prepareClonesInfo(p.ReadFile, dups) - if err != nil { - return nil, err - } - sort.Sort(byNameAndLine(clones)) - var issues []Issue - for i, cl := range clones { - nextCl := clones[(i+1)%len(clones)] - issues = append(issues, Issue{ - From: Clone(cl), - To: Clone(nextCl), - }) - } - return issues, nil -} diff --git a/vendor/github.com/golangci/dupl/printer/printer.go b/vendor/github.com/golangci/dupl/printer/printer.go deleted file mode 100644 index 385217bfc..000000000 --- a/vendor/github.com/golangci/dupl/printer/printer.go +++ /dev/null @@ -1,11 +0,0 @@ -package printer - -import "github.com/golangci/dupl/syntax" - -type ReadFile func(filename string) ([]byte, error) - -type Printer interface { - PrintHeader() error - PrintClones(dups [][]*syntax.Node) error - PrintFooter() error -} diff --git a/vendor/github.com/golangci/dupl/printer/text.go b/vendor/github.com/golangci/dupl/printer/text.go deleted file mode 100644 index 8359fa76f..000000000 --- a/vendor/github.com/golangci/dupl/printer/text.go +++ /dev/null @@ -1,100 +0,0 @@ -package printer - -import ( - "fmt" - "io" - "sort" - - "github.com/golangci/dupl/syntax" -) - -type text struct { - cnt int - w io.Writer - ReadFile -} - -func NewText(w io.Writer, fread ReadFile) Printer { - return &text{w: w, ReadFile: fread} -} - -func (p *text) PrintHeader() error { return nil } - -func (p *text) PrintClones(dups [][]*syntax.Node) error { - p.cnt++ - fmt.Fprintf(p.w, "found %d clones:\n", len(dups)) - clones, err := prepareClonesInfo(p.ReadFile, dups) - if err != nil { - return err - } - sort.Sort(byNameAndLine(clones)) - for _, cl := range clones { - fmt.Fprintf(p.w, " %s:%d,%d\n", cl.filename, cl.lineStart, cl.lineEnd) - } - return nil -} - -func (p *text) PrintFooter() error { - _, err := fmt.Fprintf(p.w, "\nFound total %d clone groups.\n", p.cnt) - return err -} - -func prepareClonesInfo(fread ReadFile, dups [][]*syntax.Node) ([]clone, error) { - clones := make([]clone, len(dups)) - for i, dup := range dups { - cnt := len(dup) - if cnt == 0 { - panic("zero length dup") - } - nstart := dup[0] - nend := dup[cnt-1] - - file, err := fread(nstart.Filename) - if err != nil { - return nil, err - } - - cl := clone{filename: nstart.Filename} - cl.lineStart, cl.lineEnd = blockLines(file, nstart.Pos, nend.End) - clones[i] = cl - } - return clones, nil -} - -func blockLines(file []byte, from, to int) (int, int) { - line := 1 - lineStart, lineEnd := 0, 0 - for offset, b := range file { - if b == '\n' { - line++ - } - if offset == from { - lineStart = line - } - if offset == to-1 { - lineEnd = line - break - } - } - return lineStart, lineEnd -} - -type clone struct { - filename string - lineStart int - lineEnd int - fragment []byte -} - -type byNameAndLine []clone - -func (c byNameAndLine) Len() int { return len(c) } - -func (c byNameAndLine) Swap(i, j int) { c[i], c[j] = c[j], c[i] } - -func (c byNameAndLine) Less(i, j int) bool { - if c[i].filename == c[j].filename { - return c[i].lineStart < c[j].lineStart - } - return c[i].filename < c[j].filename -} |
