Golang 的 Codeclimate 测试覆盖格式化程序

Codeclimate test coverage formatter for Golang

Codeclimate docs 中没有任何地方写过如何指定覆盖格式化程序。但是当我试图将报道发送到 Codeclimate 时:

./cc-test-reporter before-build
./cc-test-reporter after-build

失败:

Error: could not find any viable formatter. available formatters: 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 文件的任何格式化程序相关指令。该文档以 super "you know" 风格编写,因此没有帮助。如何 enable/send 使用 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

此处来自 Code Climate Support 的 Abby。目前,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”而不是cc-test-reporter期望的“c.out”。

这是我的工作脚本:

#!/bin/sh
inputFile=
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"