daixiang0 / gci

GCI, a tool that control golang package import order and make it always deterministic.
BSD 3-Clause "New" or "Revised" License
419 stars 61 forks source link

upgrading to v0.2.5 results in `exit 1` without any other change #23

Closed moul closed 3 years ago

moul commented 3 years ago

@dependabot tried to automatically update the version of gci we are using -> https://github.com/berty/berty/pull/2771


It results in gci terminating with exit 1 without any useful logging information:

moul@fwrz:~/go/src/berty.tech/berty/go (dependabot/go_modules/github.com/daixiang0/gci-0.2.5) $ go run github.com/daixiang0/gci -d -local berty.tech .
skip file cmd/berty/doc.go since no import
skip file cmd/berty/mini/doc.go since no import
skip file cmd/berty/mini/example_test.go since no import
skip file cmd/berty-doctor/example_test.go since no import
skip file cmd/betabot/example_test.go since no import
skip file cmd/rdvp/doc.go since no import
[...] // skipping annoying logs
skip file pkg/username/others.go since no import
skip file pkg/username/username.go since no import
exit status 1

I also tried removing the -local option, but still the exit 1 issue


FYI, here is our setup:


I'm sorry, I don't have enough knowledge of your project's internals to give you more details, but I think this comes from https://github.com/daixiang0/gci/pull/22

Thank you very much, and take care

daixiang0 commented 3 years ago

/cc @kwo please check it and add it as a testcase.

Thanks for your input first, if you can work with 0.2.4 well, please wait for fix.

kwo commented 3 years ago

@moul whenn I checkout the main branch of the berty.tech project, I get different results:

10:27:19 karl@kaos:~/projects/temp/berty$ go run github.com/daixiang0/gci -d -local berty.tech .
go: downloading github.com/daixiang0/gci v0.2.4
skip file go/cmd/berty/doc.go since no import
skip file go/cmd/berty/mini/doc.go since no import
skip file go/cmd/berty/mini/example_test.go since no import
skip file go/cmd/berty-doctor/example_test.go since no import
skip file go/cmd/betabot/example_test.go since no import
skip file go/cmd/rdvp/doc.go since no import
skip file go/cmd/rdvp/example_test.go since no import
skip file go/cmd/testbot/example_test.go since no import
skip file go/framework/bertybridge/config.go since no import
skip file go/framework/bertybridge/config_android.go since no import
skip file go/framework/bertybridge/doc.go since no import
skip file go/internal/ble-driver/const.go since no import
skip file go/internal/ble-driver/example_test.go since no import
skip file go/internal/cryptoutil/doc.go since no import
skip file go/internal/discordlog/doc.go since no import
skip file go/internal/grpcutil/doc.go since no import
skip file go/internal/handshake/doc.go since no import
skip file go/internal/initutil/tor_embedded.go since no import
skip file go/internal/initutil/tor_unembedded.go since no import
skip file go/internal/ipfsutil/doc.go since no import
skip file go/internal/ipfsutil/metrics.go since no import
skip file go/internal/lifecycle/example_test.go since no import
skip file go/internal/multipeer-connectivity-driver/const.go since no import
skip file go/internal/multipeer-connectivity-driver/example_test.go since no import
skip file go/internal/notification/example_test.go since no import
skip file go/internal/notification/manager.go since no import
skip file go/internal/notification/manager_noop.go since no import
skip file go/internal/packingutil/example_test.go since no import
skip file go/internal/proximity-transport/addr.go since no import
skip file go/internal/proximity-transport/example_test.go since no import
skip file go/internal/proximity-transport/nativedriver.go since no import
skip file go/internal/sysutil/sysutil_unsupported.go since no import
skip file go/internal/testutil/doc.go since no import
skip file go/internal/testutil/example_test.go since no import
skip file go/internal/tinder/doc.go since no import
skip file go/internal/tools/example_test.go since no import
skip file go/internal/tools/tools_untool.go since no import
skip file go/pkg/assets/embed.go since no import
skip file go/pkg/assets/example_test.go since no import
skip file go/pkg/banner/doc.go since no import
skip file go/pkg/bertybot/commands.go since no import
skip file go/pkg/bertymessenger/doc.go since no import
skip file go/pkg/bertyprotocol/doc.go since no import
skip file go/pkg/bertyprotocol/services_auth_templates.go since no import
skip file go/pkg/bertytypes/config.go since no import
skip file go/pkg/bertytypes/doc.go since no import
skip file go/pkg/bertytypes/events_account.go since no import
skip file go/pkg/bertytypes/example_test.go since no import
skip file go/pkg/bertyversion/example_test.go since no import
skip file go/pkg/bertyversion/version.go since no import
skip file go/pkg/errcode/doc.go since no import
skip file go/pkg/errcode/stdproto.go since no import
skip file go/pkg/tempdir/tempdir.go since no import
skip file go/pkg/tempdir/tempdir_darwin.go since no import
skip file go/pkg/tempdir/tempdir_others.go since no import
skip file go/pkg/username/android.go since no import
skip file go/pkg/username/example_test.go since no import
skip file go/pkg/username/ios.go since no import
skip file go/pkg/username/others.go since no import
skip file go/pkg/username/username.go since no import
skip file tool/test/experiment/dht/dht.go since no import
diff -u tool/test/experiment/dht/src/matrix/dht.go.orig tool/test/experiment/dht/src/matrix/dht.go
--- tool/test/experiment/dht/src/matrix/dht.go.orig 2020-11-20 10:31:01.000000000 +0100
+++ tool/test/experiment/dht/src/matrix/dht.go  2020-11-20 10:31:01.000000000 +0100
@@ -4,10 +4,10 @@
    "encoding/json"
    "fmt"

+   "github.com/matrix-org/gomatrix"
    "github.com/pkg/errors"

    "berty.tech/berty/experiment/dht"
-   "github.com/matrix-org/gomatrix"
 )

 var _ dht.DHT = (*DHT)(nil)
diff -u tool/test/experiment/dht/test/basic_test.go.orig tool/test/experiment/dht/test/basic_test.go
--- tool/test/experiment/dht/test/basic_test.go.orig    2020-11-20 10:31:02.000000000 +0100
+++ tool/test/experiment/dht/test/basic_test.go 2020-11-20 10:31:02.000000000 +0100
@@ -3,13 +3,14 @@
 import (
    "testing"

+   . "github.com/smartystreets/goconvey/convey"
+
    "berty.tech/berty/experiment/dht"
    "berty.tech/berty/experiment/dht/src/bittorrent"
    "berty.tech/berty/experiment/dht/src/chord"
    "berty.tech/berty/experiment/dht/src/gnunet"
    "berty.tech/berty/experiment/dht/src/libp2p"
    "berty.tech/berty/experiment/dht/src/matrix"
-   . "github.com/smartystreets/goconvey/convey"
 )

 func TestBasic(t *testing.T) {

can you run the command go list std on your system and share the results?

moul commented 3 years ago

main branch is using 0.2.4 and is working well

the issue is on https://github.com/berty/berty/pull/2771 which is not yet merged since it breaks :)

and if you're talking about the diff, it's because we chain gci with gofumpt

kwo commented 3 years ago

I understand that, but can you run the commands go list std and go env and post the results? I'm trying to figure out why it is failing.

moul commented 3 years ago

This is mine:

$ go list std
archive/tar
archive/zip
bufio
bytes
compress/bzip2
compress/flate
compress/gzip
compress/lzw
compress/zlib
container/heap
container/list
container/ring
context
crypto
crypto/aes
crypto/cipher
crypto/des
crypto/dsa
crypto/ecdsa
crypto/ed25519
crypto/ed25519/internal/edwards25519
crypto/elliptic
crypto/hmac
crypto/internal/randutil
crypto/internal/subtle
crypto/md5
crypto/rand
crypto/rc4
crypto/rsa
crypto/sha1
crypto/sha256
crypto/sha512
crypto/subtle
crypto/tls
crypto/x509
crypto/x509/pkix
database/sql
database/sql/driver
debug/dwarf
debug/elf
debug/gosym
debug/macho
debug/pe
debug/plan9obj
encoding
encoding/ascii85
encoding/asn1
encoding/base32
encoding/base64
encoding/binary
encoding/csv
encoding/gob
encoding/hex
encoding/json
encoding/pem
encoding/xml
errors
expvar
flag
fmt
go/ast
go/build
go/constant
go/doc
go/format
go/importer
go/internal/gccgoimporter
go/internal/gcimporter
go/internal/srcimporter
go/parser
go/printer
go/scanner
go/token
go/types
hash
hash/adler32
hash/crc32
hash/crc64
hash/fnv
html
html/template
image
image/color
image/color/palette
image/draw
image/gif
image/internal/imageutil
image/jpeg
image/png
index/suffixarray
internal/bytealg
internal/cfg
internal/cpu
internal/fmtsort
internal/goroot
internal/goversion
internal/lazyregexp
internal/lazytemplate
internal/nettrace
internal/oserror
internal/poll
internal/race
internal/reflectlite
internal/singleflight
internal/syscall/unix
internal/testenv
internal/testlog
internal/trace
internal/xcoff
io
io/ioutil
log
log/syslog
math
math/big
math/bits
math/cmplx
math/rand
mime
mime/multipart
mime/quotedprintable
net
net/http
net/http/cgi
net/http/cookiejar
net/http/fcgi
net/http/httptest
net/http/httptrace
net/http/httputil
net/http/internal
net/http/pprof
net/internal/socktest
net/mail
net/rpc
net/rpc/jsonrpc
net/smtp
net/textproto
net/url
os
os/exec
os/signal
os/signal/internal/pty
os/user
path
path/filepath
plugin
reflect
regexp
regexp/syntax
runtime
runtime/cgo
runtime/debug
runtime/internal/atomic
runtime/internal/math
runtime/internal/sys
runtime/pprof
runtime/pprof/internal/profile
runtime/race
runtime/trace
sort
strconv
strings
sync
sync/atomic
syscall
testing
testing/internal/testdeps
testing/iotest
testing/quick
text/scanner
text/tabwriter
text/template
text/template/parse
time
unicode
unicode/utf16
unicode/utf8
unsafe
vendor/golang.org/x/crypto/chacha20poly1305
vendor/golang.org/x/crypto/cryptobyte
vendor/golang.org/x/crypto/cryptobyte/asn1
vendor/golang.org/x/crypto/curve25519
vendor/golang.org/x/crypto/hkdf
vendor/golang.org/x/crypto/internal/chacha20
vendor/golang.org/x/crypto/internal/subtle
vendor/golang.org/x/crypto/poly1305
vendor/golang.org/x/net/dns/dnsmessage
vendor/golang.org/x/net/http/httpguts
vendor/golang.org/x/net/http/httpproxy
vendor/golang.org/x/net/http2/hpack
vendor/golang.org/x/net/idna
vendor/golang.org/x/net/nettest
vendor/golang.org/x/sys/cpu
vendor/golang.org/x/text/secure/bidirule
vendor/golang.org/x/text/transform
vendor/golang.org/x/text/unicode/bidi
vendor/golang.org/x/text/unicode/norm
$ go env
GO111MODULE="on"
GOARCH="amd64"
GOBIN=""
GOCACHE="/home/moul/.cache/go-build"
GOENV="/home/moul/.config/go/env"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOINSECURE=""
GOMODCACHE="/home/moul/go/pkg/mod"
GONOPROXY=""
GONOSUMDB=""
GOOS="linux"
GOPATH="/home/moul/go"
GOPRIVATE=""
GOPROXY="https://proxy.golang.org,direct"
GOROOT="/home/moul/.gvm/gos/go1.15.5"
GOSUMDB="sum.golang.org"
GOTMPDIR=""
GOTOOLDIR="/home/moul/.gvm/gos/go1.15.5/pkg/tool/linux_amd64"
GCCGO="gccgo"
AR="ar"
CC="gcc"
CXX="g++"
CGO_ENABLED="1"
GOMOD="/home/moul/go/src/berty.tech/berty/go.mod"
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build449484491=/tmp/go-build -gno-record-gcc-switches"

And this is the one used by the CI:

$ docker run bertytech/protoc:25 go list std
GO111MODULE=""
GOARCH="amd64"
GOBIN=""
GOCACHE="/root/.cache/go-build"
GOENV="/root/.config/go/env"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOINSECURE=""
GONOPROXY=""
GONOSUMDB=""
GOOS="linux"
GOPATH="/go"
GOPRIVATE=""
GOPROXY="https://proxy.golang.org,direct"
GOROOT="/usr/local/go"
GOSUMDB="sum.golang.org"
GOTMPDIR=""
GOTOOLDIR="/usr/local/go/pkg/tool/linux_amd64"
GCCGO="gccgo"
AR="ar"
CC="gcc"
CXX="g++"
CGO_ENABLED="1"
GOMOD=""
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build103086107=/tmp/go-build -gno-record-gcc-switches"
$ docker run bertytech/protoc:25 go version
go version go1.14.3 linux/amd64

just noticed this one is not using latest go :)

$ docker run bertytech/protoc:25 go list std
archive/tar
archive/zip
bufio
bytes
compress/bzip2
compress/flate
compress/gzip
compress/lzw
compress/zlib
container/heap
container/list
container/ring
context
crypto
crypto/aes
crypto/cipher
crypto/des
crypto/dsa
crypto/ecdsa
crypto/ed25519
crypto/ed25519/internal/edwards25519
crypto/elliptic
crypto/hmac
crypto/internal/randutil
crypto/internal/subtle
crypto/md5
crypto/rand
crypto/rc4
crypto/rsa
crypto/sha1
crypto/sha256
crypto/sha512
crypto/subtle
crypto/tls
crypto/x509
crypto/x509/pkix
database/sql
database/sql/driver
debug/dwarf
debug/elf
debug/gosym
debug/macho
debug/pe
debug/plan9obj
encoding
encoding/ascii85
encoding/asn1
encoding/base32
encoding/base64
encoding/binary
encoding/csv
encoding/gob
encoding/hex
encoding/json
encoding/pem
encoding/xml
errors
expvar
flag
fmt
go/ast
go/build
go/constant
go/doc
go/format
go/importer
go/internal/gccgoimporter
go/internal/gcimporter
go/internal/srcimporter
go/parser
go/printer
go/scanner
go/token
go/types
hash
hash/adler32
hash/crc32
hash/crc64
hash/fnv
hash/maphash
html
html/template
image
image/color
image/color/palette
image/draw
image/gif
image/internal/imageutil
image/jpeg
image/png
index/suffixarray
internal/bytealg
internal/cfg
internal/cpu
internal/fmtsort
internal/goroot
internal/goversion
internal/lazyregexp
internal/lazytemplate
internal/nettrace
internal/obscuretestdata
internal/oserror
internal/poll
internal/race
internal/reflectlite
internal/singleflight
internal/syscall/execenv
internal/syscall/unix
internal/testenv
internal/testlog
internal/trace
internal/xcoff
io
io/ioutil
log
log/syslog
math
math/big
math/bits
math/cmplx
math/rand
mime
mime/multipart
mime/quotedprintable
net
net/http
net/http/cgi
net/http/cookiejar
net/http/fcgi
net/http/httptest
net/http/httptrace
net/http/httputil
net/http/internal
net/http/pprof
net/internal/socktest
net/mail
net/rpc
net/rpc/jsonrpc
net/smtp
net/textproto
net/url
os
os/exec
os/signal
os/signal/internal/pty
os/user
path
path/filepath
plugin
reflect
regexp
regexp/syntax
runtime
runtime/cgo
runtime/debug
runtime/internal/atomic
runtime/internal/math
runtime/internal/sys
runtime/pprof
runtime/pprof/internal/profile
runtime/race
runtime/trace
sort
strconv
strings
sync
sync/atomic
syscall
testing
testing/internal/testdeps
testing/iotest
testing/quick
text/scanner
text/tabwriter
text/template
text/template/parse
time
unicode
unicode/utf16
unicode/utf8
unsafe
vendor/golang.org/x/crypto/chacha20
vendor/golang.org/x/crypto/chacha20poly1305
vendor/golang.org/x/crypto/cryptobyte
vendor/golang.org/x/crypto/cryptobyte/asn1
vendor/golang.org/x/crypto/curve25519
vendor/golang.org/x/crypto/hkdf
vendor/golang.org/x/crypto/internal/subtle
vendor/golang.org/x/crypto/poly1305
vendor/golang.org/x/net/dns/dnsmessage
vendor/golang.org/x/net/http/httpguts
vendor/golang.org/x/net/http/httpproxy
vendor/golang.org/x/net/http2/hpack
vendor/golang.org/x/net/idna
vendor/golang.org/x/net/nettest
vendor/golang.org/x/sys/cpu
vendor/golang.org/x/text/secure/bidirule
vendor/golang.org/x/text/transform
vendor/golang.org/x/text/unicode/bidi
vendor/golang.org/x/text/unicode/norm
moul commented 3 years ago

(I'm upgrading our protoc docker image with the latest go version in https://github.com/berty/berty/pull/2773, then I will rebase the dependabot PR)

kwo commented 3 years ago

Thanks for the info. There's nothing there that seems strange. I think the problem must lie in gci now shelling out to run the go list std command at start - apparently this does not always work on all machines as expected. I am working on a fix to hardcode the std package names and will be submitting a PR shortly.

daixiang0 commented 3 years ago

go list std is based on go version i think.

ldez commented 3 years ago

https://github.com/golangci/golangci-lint/pull/1521#issuecomment-739560265 https://github.com/golangci/golangci-lint/pull/1521#issuecomment-739561466

ldez commented 3 years ago

I fixed the problem in #27

with v0.2.5 ```console $ gci -w -local berty.tech . skip file go/cmd/berty/doc.go since no import skip file go/cmd/berty/mini/doc.go since no import skip file go/cmd/berty/mini/example_test.go since no import skip file go/cmd/berty-doctor/example_test.go since no import skip file go/cmd/betabot/example_test.go since no import skip file go/cmd/rdvp/doc.go since no import skip file go/cmd/rdvp/example_test.go since no import skip file go/cmd/testbot/example_test.go since no import skip file go/framework/bertybridge/config.go since no import skip file go/framework/bertybridge/config_android.go since no import skip file go/framework/bertybridge/doc.go since no import skip file go/internal/ble-driver/const.go since no import skip file go/internal/ble-driver/example_test.go since no import skip file go/internal/cryptoutil/doc.go since no import skip file go/internal/discordlog/doc.go since no import skip file go/internal/grpcutil/doc.go since no import skip file go/internal/handshake/doc.go since no import skip file go/internal/initutil/tor_embedded.go since no import skip file go/internal/initutil/tor_unembedded.go since no import skip file go/internal/ipfsutil/doc.go since no import skip file go/internal/ipfsutil/metrics.go since no import skip file go/internal/lifecycle/example_test.go since no import skip file go/internal/multipeer-connectivity-driver/const.go since no import skip file go/internal/multipeer-connectivity-driver/example_test.go since no import skip file go/internal/notification/example_test.go since no import skip file go/internal/notification/manager.go since no import skip file go/internal/notification/manager_noop.go since no import skip file go/internal/packingutil/example_test.go since no import skip file go/internal/proximity-transport/addr.go since no import skip file go/internal/proximity-transport/example_test.go since no import skip file go/internal/proximity-transport/nativedriver.go since no import skip file go/internal/sysutil/sysutil_unsupported.go since no import skip file go/internal/testutil/doc.go since no import skip file go/internal/testutil/example_test.go since no import skip file go/internal/tinder/doc.go since no import skip file go/internal/tools/example_test.go since no import skip file go/internal/tools/tools_untool.go since no import skip file go/pkg/assets/embed.go since no import skip file go/pkg/assets/example_test.go since no import skip file go/pkg/banner/doc.go since no import skip file go/pkg/bertybot/commands.go since no import skip file go/pkg/bertymessenger/doc.go since no import skip file go/pkg/bertyprotocol/doc.go since no import skip file go/pkg/bertyprotocol/services_auth_templates.go since no import skip file go/pkg/bertytypes/config.go since no import skip file go/pkg/bertytypes/doc.go since no import skip file go/pkg/bertytypes/events_account.go since no import skip file go/pkg/bertytypes/example_test.go since no import skip file go/pkg/bertyversion/example_test.go since no import skip file go/pkg/bertyversion/version.go since no import skip file go/pkg/errcode/doc.go since no import skip file go/pkg/errcode/stdproto.go since no import skip file go/pkg/tempdir/tempdir.go since no import skip file go/pkg/tempdir/tempdir_darwin.go since no import skip file go/pkg/tempdir/tempdir_others.go since no import skip file go/pkg/username/android.go since no import skip file go/pkg/username/example_test.go since no import skip file go/pkg/username/ios.go since no import skip file go/pkg/username/others.go since no import skip file go/pkg/username/username.go since no import skip file tool/test/experiment/dht/dht.go since no import $ echo $? 1 ```
with my PR ```console $ gci -w -local berty.tech . skip file go/cmd/berty/doc.go since no import skip file go/cmd/berty/mini/doc.go since no import skip file go/cmd/berty/mini/example_test.go since no import skip file go/cmd/berty-doctor/example_test.go since no import skip file go/cmd/betabot/example_test.go since no import skip file go/cmd/rdvp/doc.go since no import skip file go/cmd/rdvp/example_test.go since no import skip file go/cmd/testbot/example_test.go since no import skip file go/framework/bertybridge/config.go since no import skip file go/framework/bertybridge/config_android.go since no import skip file go/framework/bertybridge/doc.go since no import skip file go/internal/ble-driver/const.go since no import skip file go/internal/ble-driver/example_test.go since no import skip file go/internal/cryptoutil/doc.go since no import skip file go/internal/discordlog/doc.go since no import skip file go/internal/grpcutil/doc.go since no import skip file go/internal/handshake/doc.go since no import skip file go/internal/initutil/tor_embedded.go since no import skip file go/internal/initutil/tor_unembedded.go since no import skip file go/internal/ipfsutil/doc.go since no import skip file go/internal/ipfsutil/metrics.go since no import skip file go/internal/lifecycle/example_test.go since no import skip file go/internal/multipeer-connectivity-driver/const.go since no import skip file go/internal/multipeer-connectivity-driver/example_test.go since no import skip file go/internal/notification/example_test.go since no import skip file go/internal/notification/manager.go since no import skip file go/internal/notification/manager_noop.go since no import skip file go/internal/packingutil/example_test.go since no import skip file go/internal/proximity-transport/addr.go since no import skip file go/internal/proximity-transport/example_test.go since no import skip file go/internal/proximity-transport/nativedriver.go since no import skip file go/internal/sysutil/sysutil_unsupported.go since no import skip file go/internal/testutil/doc.go since no import skip file go/internal/testutil/example_test.go since no import skip file go/internal/tinder/doc.go since no import skip file go/internal/tools/example_test.go since no import skip file go/internal/tools/tools_untool.go since no import skip file go/pkg/assets/embed.go since no import skip file go/pkg/assets/example_test.go since no import skip file go/pkg/banner/doc.go since no import skip file go/pkg/bertybot/commands.go since no import skip file go/pkg/bertymessenger/doc.go since no import skip file go/pkg/bertyprotocol/doc.go since no import skip file go/pkg/bertyprotocol/services_auth_templates.go since no import skip file go/pkg/bertytypes/config.go since no import skip file go/pkg/bertytypes/doc.go since no import skip file go/pkg/bertytypes/events_account.go since no import skip file go/pkg/bertytypes/example_test.go since no import skip file go/pkg/bertyversion/example_test.go since no import skip file go/pkg/bertyversion/version.go since no import skip file go/pkg/errcode/doc.go since no import skip file go/pkg/errcode/stdproto.go since no import skip file go/pkg/tempdir/tempdir.go since no import skip file go/pkg/tempdir/tempdir_darwin.go since no import skip file go/pkg/tempdir/tempdir_others.go since no import skip file go/pkg/username/android.go since no import skip file go/pkg/username/example_test.go since no import skip file go/pkg/username/ios.go since no import skip file go/pkg/username/others.go since no import skip file go/pkg/username/username.go since no import skip file tool/test/experiment/dht/dht.go since no import $ echo $? 0 ```