your programing

전체 소스 트리에서 fmt로 이동

lovepro 2021. 1. 5. 19:50
반응형

전체 소스 트리에서 fmt로 이동


현재 다음과 같은 프로젝트를 구성했습니다.

~ / 코드 / 이동
         /큰 상자
         / pkg
         / src
             /proj/main.go
                  /some_package/package.go
                  /some_other_package/some_other_package.go

이제 go fmt전체 프로젝트 에서 도구 를 사용하려는 경우 유일한 방법은 프로젝트 소스 트리의 각 디렉토리에 대해 별도로 수행하는 것 같습니다.

go fmt proj
go fmt proj/package
go fmt proj/some_other_package

fmt 명령이 전체 소스 트리에서 실행되도록 지시하는 방법이 있습니까?


세 개의 점 ( ...)을 와일드 카드로 사용할 수 있습니다 . 예를 들어 다음 명령은 모든 github.com 패키지의 형식을 지정합니다.

go fmt github.com/...

이 와일드 카드는 go list, 등과 같은 다른 go 명령에서도 작동합니다 go get. 이러한 추악한 찾기 명령을 기억할 필요가 없습니다.


gofmt대신 사용 하는 경우 go fmt재귀 적입니다. 예를 들어, 다음 명령

gofmt -s -w .

(끝에있는 작은 점에 유의하십시오) 재귀 적으로 형식을 지정하고, 단순화하고, 현재 디렉토리 아래의 모든 파일에 결과를 저장합니다. 셸 별칭이로 gf정의되어 gofmt -s -w .있으며 매우 편리합니다.

시도 gofmt -l .( 그 gofmt의 차이가 포맷 목록 파일 당신이 원하는 첫번째 경우를) :-)


또한 다음 명령을 실행할 수 있습니다.

go fmt ./...

프로젝트 디렉토리에서.


find proj -type f -iregex '.*\.go' -exec go fmt '{}' +

설명

  • find proj:이 디렉토리에서 모든 것을 찾습니다 ...
    • -type f: ... 그것은 파일입니다
    • -iregex '.*\.go': ... 그리고 대소 문자를 구분하지 않고 정규 표현식과 일치 .*\.go
  • ... go fmt운영 체제가 한 번에 실행 파일로의 전달을 처리 할 수있는만큼 일치하는 파일을 실행합니다.

gofmt ./...일부에서 언급 한 명령 은 Windows에서 작동하지 않습니다 (적어도 Win7에서는).

대신 gofmt -d .\재귀 적으로 작동하는 것을 사용했습니다 . -d확인을 통과하기 위해 변경해야하는 사항을 나열하고 싶기 때문에 플래그를 사용합니다 .

NB : golint ./...Windows에서는 작동 gofmt ./...하지만 그렇지 않습니다.

참조 URL : https://stackoverflow.com/questions/13319165/go-fmt-on-a-whole-source-tree

반응형