代码之家  ›  专栏  ›  技术社区  ›  ijt

如何列出Go项目中的所有导入周期?

go
  •  1
  • ijt  · 技术社区  · 4 年前

    我正在重构一个Go项目,其中所有内容都在一个模块中,拆分出子包。这样做之后,有许多导入周期。为了让项目重新编译,我必须消除它们。然而,在做了一个我认为已经消除了一个周期的改变之后,进口周期计数似乎保持不变。我用这个命令计算周期:

    go build 2>&1 | grep package | wc -l
    

    即使在我做了看起来应该删除一个周期的工作之后,甚至在我不再在列表中看到我删除的周期之后,它仍会继续报告6。这让我怀疑它是否只是报告了问题的一部分。

    我也试过了

    go build -gcflags="-e" 2>&1 | grep package | wc -l
    

    正如在 https://menno.io/posts/showing-all-go-compiler-errors/ ,但它给出了相同的结果。

    0 回复  |  直到 4 年前
        1
  •  3
  •   Wolfgang    4 年前

    如何列出Go项目中的所有导入周期?

    你可以试试

    go list -f '{{join .Deps "\n"}}' <import-path>
    

    将在当前目录中显示包的导入依赖项(如果为空)。或者

    go list -f '{{join .DepsErrors "\n"}}' <import-path>
    

    希望在您的案例中显示一些有用的信息。

    还有godepgraph: https://github.com/kisielk/godepgraph

    go get github.com/kisielk/godepgraph
    

    基本用法

    godepgraph -s path/to/my/package
    

    enter image description here