Я недавно написал Go средство проверки с использованием golang.org/x/tools/go/analysis
и golang.org/x/tools/go/analysis/singlechecker
, и мне удалось написать собственный механизм манипулирования файлами (отслеживание смещения файлов и т. Д. c.), Но я чувствовал, что боролся с системой.
Кажется, в https://pkg.go.dev/golang.org/x/tools/go/analysis/internal/checker определен флаг Fix
, но я понятия не имею, как его использовать или подключиться к системе, которая его использует.
Также доступно определение
-fix
apply all suggested fixes
, когда средство проверки скомпилировано с singlechecker
:
import (
"golang.org/x/tools/go/analysis/singlechecker"
)
var (
Analyzer = &analysis.Analyzer{
Name: "name",
Run: run,
}
// Can't define a "fix" flag because golang.org/x/tools/go/analysis/internal/checker
// defines it and flags cannot be redefined.
// Fix = flag.Bool("autofix", false, "apply fixes automatically")
Fix bool
)
func main() {
// NOTE:
// Don't do this at home. This should be properly integrated with
// "golang.org/x/tools/go/analysis/internal/checker" flags (specifically -fix
// flag) but I have no idea how to do that and the documentation is non existent.
if len(os.Args) > 1 {
for _, arg := range os.Args[1:] {
if arg == "-fix" {
Fix = true
break
}
}
}
singlechecker.Main(Analyzer)
}
Я также не смог найти никакой документации по этому поводу. Код, который должен быть запущен, когда флаг Fix
включен, здесь: https://github.com/golang/tools/blob/268ba720d32c891185aa340e8851e215f23173db/go/analysis/internal/checker/checker.go#L265
Любые подсказки, как его использовать?