настроить [go build] / [go test] и т. д. для отображения абсолютных путей в диагностических сообщениях - PullRequest
0 голосов
/ 26 октября 2019

Есть ли способ настроить / направить go build, go test и т. Д. Для отчета о расположении файлов с использованием абсолютных путей? Я часто запускаю go build из моего редактора (который анализирует выходные данные), и было бы удобно, если бы текущий рабочий каталог процесса go build и сам редактор не должны были совпадать.

Пока что,единственное решение, которое я нашел, - это обернуть go build в сценарий, который определяет абсолютные пути к файлам, затем сразу cd s во временный каталог, прежде чем вызывать go build с realpath 'd исходными аргументами.

Создание временного каталога и cd его использование только для того, чтобы обмануть инструменты go, кажется странным обходным путем, поэтому мне интересно, есть ли более прямое решение.

Есть ли способ настроить go tools для сообщения об абсолютных путях, кроме упаковки их и cd в случайных каталогах?

Предположим, что мой GOPATH равен /go, и что у меня есть следующеефайл.

// /go/src/nonexistent-website.com/example-2019-10-26/main.go
package main

import (
    "fmt"
)

func main() {
    fmt.Println("hi")
}

Предположим, я намеренно ввел ошибку в этом файле.

// /go/src/nonexistent-website.com/example-2019-10-26/main.go
package main

// import (
//  "fmt"
// )

func main() {
    fmt.Println("hi")
}

go build main.go сообщает о следующей ошибке:

/go/src/nonexistent-website.com/example-2019-10-26$ go build main.go
# command-line-arguments
./main.go:9: undefined: fmt in fmt.Println
   2

go build ...все еще сообщает ./main.go в качестве пути к файлу, если задан абсолютный путь

/go/src/nonexistent-website.com/example-2019-10-26$ go build `realpath main.go`
# command-line-arguments
./main.go:9: undefined: fmt in fmt.Println
   2

go build, кажется, дает пути относительно каталога, из которого он был вызван:

Это пути, которые go build генерируется при первом обращении к cd к корневому каталогу.

/go/src/nonexistent-website.com/example-2019-10-26$ (a=`realpath main.go` && cd / && go build $a)
# command-line-arguments
go/src/nonexistent-website.com/example-2019-10-26/main.go:9: undefined: fmt in fmt.Println
   2

Можно заставить go build выдавать абсолютные пути путем cd -ing к каталогу, который гарантированно будет свежим

/go/src/nonexistent-website.com/example-2019-10-26$ (a=`realpath main.go` && cd `mktemp -d` && go build $a)
# command-line-arguments
/go/src/nonexistent-website.com/example-2019-10-26/main.go:9: undefined: fmt in fmt.Println
   2

1 Ответ

0 голосов
/ 26 октября 2019

Есть ли способ настроить инструменты go для сообщения об абсолютных путях, кроме их обертывания и cding в случайные каталоги?

Нет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...