gitee.com/wgliang/goreporter@v0.0.0-20180902115603-df1b20f7c5d0/linters/copycheck/output/plumbing.go (about)

     1  package output
     2  
     3  import (
     4  	"fmt"
     5  	"io"
     6  	"sort"
     7  
     8  	"github.com/360EntSecGroup-Skylar/goreporter/linters/copycheck/syntax"
     9  )
    10  
    11  type PlumbingPrinter struct {
    12  	*TextPrinter
    13  }
    14  
    15  func NewPlumbingPrinter(w io.Writer, fr FileReader) *PlumbingPrinter {
    16  	return &PlumbingPrinter{NewTextPrinter(w, fr)}
    17  }
    18  
    19  func (p *PlumbingPrinter) Print(dups [][]*syntax.Node) {
    20  	clones := p.prepareClonesInfo(dups)
    21  	sort.Sort(byNameAndLine(clones))
    22  	for i, cl := range clones {
    23  		nextCl := clones[(i+1)%len(clones)]
    24  		fmt.Fprintf(p.writer, "%s:%d-%d: duplicate of %s:%d-%d\n", cl.filename, cl.lineStart, cl.lineEnd,
    25  			nextCl.filename, nextCl.lineStart, nextCl.lineEnd)
    26  	}
    27  }
    28  
    29  func (p *PlumbingPrinter) Finish() {}