如何使用go / analysis为Go checker定义修复动作?

问题描述 投票:1回答:1

[我最近使用golang.org/x/tools/go/analysisgolang.org/x/tools/go/analysis/singlechecker编写了一个Go检查器,我设法编写了自己的自定义文件操作机制(跟踪文件偏移量等),但是我感觉自己正在与系统进行斗争。] >

Fix中似乎定义了一个https://pkg.go.dev/golang.org/x/tools/go/analysis/internal/checker标志,但我不知道如何使用它或挂接到使用它的系统中。

也可以定义

-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

任何线索如何使用它?

我最近使用golang.org/x/tools/go/analysis和golang.org/x/tools/go/analysis/singlechecker编写了Go检查器,并且我设法编写了自己的自定义文件操作机制( ...

go analysis
1个回答
0
投票

您只可以在运行检查器时提供标志-fix=truesinglechecker将通过运行checker.RegisterFlags()来注册该标志。然后,传递的标志将在analysisflags.Parse()

© www.soinside.com 2019 - 2024. All rights reserved.