[英]Working out the number of times a (request handler) function has been called in Go
[英]Checking to find out if go code has been formatted
我的目标是在提交时强制格式化 go 源代码。 有没有办法查明在一个文件/一组文件上运行go fmt
是否会进行任何更改? 我能想到的唯一技术是:
我可以编写一个工具/脚本来执行此操作并在循环 CI 构建期间执行。 我想在 go 之前检查我是否没有重新发明轮子。
根据gofmt -h
您可以使用-l
选项:
-l 列出格式与 gofmt 不同的文件
类似的东西:
> gofmt -l .
并进一步传递收到的文件列表。
我找到了这个预提交钩子:
#!/bin/sh
gofiles=$(git diff --cached --name-only --diff-filter=ACM | grep '\.go$')
[ -z "$gofiles" ] && exit 0
unformatted=$(gofmt -l $gofiles)
[ -z "$unformatted" ] && exit 0
# Some files are not gofmt'd. Print message and fail.
echo >&2 "Go files must be formatted with gofmt. Please run:"
for fn in $unformatted; do
echo >&2 " gofmt -w $PWD/$fn"
done
exit 1
如果你希望失败时退出代码为1,并且能够在Linux或Mac或其他Unix操作系统上运行,你可以使用:
files=$(gofmt -l .) && [ -z "$files" ]
为@u_mulder 的答案添加其他信息。
如果您希望退出代码在失败时为 1,则可以使用
test -z $(gofmt -l .)
这对 CI 很有帮助。 但是,这不会列出不同文件的列表。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.