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() {}