Как получить ненулевой статус выхода с помощью lintr :: lint () для сбоя сборки - PullRequest
0 голосов
/ 30 января 2019

Я пытаюсь помочь нашей группе разработчиков получить похожие стили кода с помощью пакета lintr при написании кода R.Чтобы автоматизировать этот шаг, я хочу, чтобы наши сборки не работали, если в коде есть ошибки (плохие стили).Мы используем Jenkins для нашего конвейера сборки, если это имеет значение.

Я знаю, что мы могли бы использовать функцию expect_lint_free, но мы не создаем пакеты, только файлы сценариев.Вывод функции lint выглядит нормально, но сборка проходит даже тогда, когда линтер возвращает предложения по улучшению.Как получить ненулевой статус выхода, который приведет к сбою сборки Jenkins?

(упрощенный) код, запускаемый из командной строки

Rscript -e "lintr::lint('my_script.R')"

, не возвращает ошибки, но множество предложений.

Примечание. В настоящее время меня не интересуют решения "Создать пакет R".

1 Ответ

0 голосов
/ 30 января 2019

Функция lintr::lint() возвращает результаты в виде списка с классом "lints".У вас есть проблемы, если его длина больше нуля, поэтому вы можете сделать

Rscript -e "quit(save = 'no', status = length(lintr::lint('my_script.R')))"
...