
1. Support unparam linter and fix found issues 2. Replace forked mvdan.cc/lint and mvdan.cc/interfacer with the upstream ones 3. Minimize forked megacheck: move the most of it's code to this repo 4. Use golang.org/x/tools/go/ssa import path instead of custom fork paths 5. In golang.org/x/tools/go/{ssa,callgraph} use changed code from honnef.co/go/tools 6. Add megacheck.check-unexported option: it found some issues in the repo, fixed them all
51 lines
1.2 KiB
Go
51 lines
1.2 KiB
Go
package golinters
|
|
|
|
import (
|
|
"fmt"
|
|
"go/ast"
|
|
"go/token"
|
|
"strings"
|
|
|
|
"github.com/golangci/golangci-lint/pkg/lint/linter"
|
|
"github.com/golangci/golangci-lint/pkg/packages"
|
|
|
|
"github.com/golangci/golangci-lint/pkg/config"
|
|
)
|
|
|
|
func formatCode(code string, _ *config.Config) string {
|
|
if strings.Contains(code, "`") {
|
|
return code // TODO: properly escape or remove
|
|
}
|
|
|
|
return fmt.Sprintf("`%s`", code)
|
|
}
|
|
|
|
func formatCodeBlock(code string, _ *config.Config) string {
|
|
if strings.Contains(code, "`") {
|
|
return code // TODO: properly escape or remove
|
|
}
|
|
|
|
return fmt.Sprintf("```\n%s\n```", code)
|
|
}
|
|
|
|
func getASTFilesForPkg(ctx *linter.Context, pkg *packages.Package) ([]*ast.File, *token.FileSet, error) {
|
|
filenames := pkg.Files(ctx.Cfg.Run.AnalyzeTests)
|
|
files := make([]*ast.File, 0, len(filenames))
|
|
var fset *token.FileSet
|
|
for _, filename := range filenames {
|
|
f := ctx.ASTCache.Get(filename)
|
|
if f == nil {
|
|
return nil, nil, fmt.Errorf("no AST for file %s in cache: %+v", filename, *ctx.ASTCache)
|
|
}
|
|
|
|
if f.Err != nil {
|
|
return nil, nil, fmt.Errorf("can't load AST for file %s: %s", f.Name, f.Err)
|
|
}
|
|
|
|
files = append(files, f.F)
|
|
fset = f.Fset
|
|
}
|
|
|
|
return files, fset, nil
|
|
}
|