
Also do following improvements: - show proper sublinter name for megacheck sublinters - refactor and make more simple and robust megacheck merging/optimizing - improve handling of unknown linter names in //nolint directives - minimize diff of our megacheck version from the upstream, https://github.com/golang/go/issues/29612 blocks usage of the upstream version - support the new `stylecheck` linter - improve tests coverage for megacheck and nolint related cases - update and use upstream versions of unparam and interfacer instead of forked ones - don't use golangci/tools repo anymore - fix newly found issues after updating linters Also should be noted that megacheck works much faster and consumes less memory in the newest release, therefore golangci-lint works noticeably faster and consumes less memory for large repos. Relates: #314
34 lines
534 B
Go
34 lines
534 B
Go
package lint
|
|
|
|
import (
|
|
"bufio"
|
|
"bytes"
|
|
"io"
|
|
)
|
|
|
|
var (
|
|
prefix = []byte("// Code generated ")
|
|
suffix = []byte(" DO NOT EDIT.")
|
|
nl = []byte("\n")
|
|
crnl = []byte("\r\n")
|
|
)
|
|
|
|
func isGenerated(r io.Reader) bool {
|
|
br := bufio.NewReader(r)
|
|
for {
|
|
s, err := br.ReadBytes('\n')
|
|
if err != nil && err != io.EOF {
|
|
return false
|
|
}
|
|
s = bytes.TrimSuffix(s, crnl)
|
|
s = bytes.TrimSuffix(s, nl)
|
|
if bytes.HasPrefix(s, prefix) && bytes.HasSuffix(s, suffix) {
|
|
return true
|
|
}
|
|
if err == io.EOF {
|
|
break
|
|
}
|
|
}
|
|
return false
|
|
}
|