Codeclimate文档中没有任何地方写过如何指定覆盖率格式化程序。但是当我尝试将报道发送到Codeclimate时:
./cc-test-reporter before-build
./cc-test-reporter after-build
它失败了:
错误:找不到任何可行的格式化程序。 可用的格式化程序:SimpleCov,LCOV,coverage.py,Clover,Gocov,GCOV,Cobertura,Jacoco
我已经安装了gocov
。我还生成了一个带有goconv
的报告:
gocov test -coverprofile=out
我尝试以各种方式将报告文件指定给 Codeclimate:
./cc-test-reporter after-build out
./cc-test-reporter after-build < out
但是没有运气...
我没有找到任何与格式化程序相关的指令.codeclimate.yml
文件。该文档以超级"你知道"的风格编写,所以它没有帮助。如何使用Codeclimate启用/发送测试覆盖率?
导出变量:
CC_TEST_REPORTER_ID=...
跑:
for pkg in $(go list ./... | grep -v vendor); do
go test -coverprofile=$(echo $pkg | tr / -).cover $pkg
done
echo "mode: set" > c.out
grep -h -v "^mode:" ./*.cover >> c.out
rm -f *.cover
./cc-test-reporter after-build
来自代码气候支持的艾比在这里。目前,test-reporter
尝试从一组默认路径推断覆盖范围数据的位置。 对于遵循覆盖工具默认设置的用户来说,这通常就足够了。
但是,如果输出不位于这些路径之一上,则可以使用test-reporter
低级命令来指示 覆盖数据的类型和位置。在这种特殊情况下,您可以执行以下操作:
export CC_TEST_REPORTER_ID=<repo-test-reporter-id>
./cc-test-reporter before-build
gocov test -coverprofile=out
./cc-test-reporter format-coverage --input-type gocov out
./cc-test-reporter upload-coverage
您可以使用标志--help
查看有关如何使用test-reporter
命令的更多信息。例如,./cc-test-reporter format-coverage --help
.
这应该会让你处于一个好地方。如果没有,请在 hello@codeclimate.com 或此处告诉我们,我可以获得更多见解。:)
对于那些仍然有这个问题的人: 对我来说 - 问题是我错误地将输出覆盖文件命名为"cp.out"而不是"c.out",这是cc-test-reporter
所期望的。
这是我的工作脚本:
#!/bin/sh
inputFile=$1
while IFS="=" read -r repo reporterID
do
cd "$HOME""/go/src/github.com/""$repo" || exit
echo "performing code coverage upload for ""$repo"
git checkout master && git pull ##don't know if main is used
cp -f "$HOME"/shellScripts/test-reporter-latest-darwin-amd64 .
chmod 755 test-reporter-latest-darwin-amd64
./test-reporter-latest-darwin-amd64 before-build
export CC_TEST_REPORTER_ID="$reporterID"
go test -coverprofile=c.out ./...
./test-reporter-latest-darwin-amd64 after-build --prefix "github.com/""$repo"
echo
echo "======================="
echo
done < "$inputFile"