Codeclimate тестовый форматер для Golang

Нигде в Codeclimate docs не написано, как указать форматирование покрытия. Но когда я пытаюсь отправить покрытие в Codeclimate:

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

Это терпит неудачу:

Ошибка: не удалось найти какой-либо жизнеспособный форматер. доступные форматеры: simplecov, lcov, cover.py, клевер, 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?

3 ответа

Решение

Экспорт var:

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 здесь. В настоящее время 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 Команда с использованием флага --help, Например, ./cc-test-reporter format-coverage --help,

Это должно привести вас в хорошее место. Если нет, дайте нам знать по адресу hello@codeclimate.com или здесь, и я могу получить больше информации.:)

Для тех из вас, у кого все еще есть эта проблема: для меня проблема заключалась в том, что я неправильно назвал выходной файл покрытия как «cp.out» вместо «c.out», что является cc-test-reporter надеется.

Вот мой рабочий сценарий:

Другие вопросы по тегам