4

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 启用/发送测试覆盖率?

4

3 回答 3

3

导出变量:

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
于 2017-08-19T21:35:39.790 回答
2

来自 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

test-reporter您可以通过使用 flag查看有关如何使用命令的更多信息--help。例如,./cc-test-reporter format-coverage --help

那应该让你在一个好地方。如果没有,请通过 hello@codeclimate.com 或此处告诉我们,我可以获得更多见解。:)

于 2017-09-21T20:10:36.507 回答
0

对于那些仍然有这个问题的人:对我来说 - 问题是我错误地将输出覆盖文件命名为“cp.out”而不是cc-test-reporter预期的“c.out”。

这是我的工作脚本:

#!/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"

于 2021-06-28T17:57:17.590 回答