Golang的代码气候测试覆盖率格式化程序



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"

相关内容

  • 没有找到相关文章

最新更新