Каким способом настроить проверку кода в Web-приложении?
Есть универсальное web-приложение. Имеет серверную часть на Node.js и клиентскую часть со сборкой через Webpack.
Изначально проверка кода у меня была настроена в Webpack, с помощью eslint-loader. Но столкнулся с такой проблемой, что скрипты на Node.js у меня не проверялись через ESlint.
Тогда я посмотрел в сторону Git hooks. Все настроил. Вроде заработало, но оказывается хуки работают не во всех Git-клиентах. К примеру, в GitKraken хуки просто игнорируются. Да и в консоли через флаг --no-verify, хуки можно пропустить.
Так как над приложением будет работать много людей, не хотелось бы доверять человеческому фактору. Нужно настроить проверку кода таким образом, что бы никто из разработчиков не смог их принудительно обойти или случайно пропустить. Как это можно сделать?
Вроде заработало, но оказывается хуки работают не во всех Git-клиентах.
Если мне не изменяет память, подобные хуки обычно настраиваются на сервере и в случае ошибок в коде, "пуш" просто отклоняется с выводом соотв. сообщения об ошибке. За свою практику, мне пока не встречался способ обойти серверный хук.
Я настроил не серверный хук, а локальный pre-commit с помощью библиотеки husky.js. А если делать серверный хук, то он исполняется только перед "пушем". Получается, что коммит уже будет выполнен. А хочется проверку кода делать перед коммитом. Если я не прав, поправьте меня.
Рамиль: дык найдите сервис, который работает с bitbucket:)
А мне необходимо до.
Коммунисты тоже хотели, чтобы все были хорошие, работали на совесть и брали не больше, чем нужно. К сожалению, это не работает, люди устроены по другому. Поэтому используется CI: тесты провалились, code style не соблюден → билд не собирается → деплой не происходит → баг считается не пофикшенным, фича не сделанной.
Code review тоже помогает. Пока код не прошел ревью, ветка не мерджится в мастер.
Да, это все требует дисциплины, но, к сожалению, таков мир.
Коммунисты тоже хотели, чтобы все были хорошие, работали на совесть и брали не больше, чем нужно. К сожалению, это не работает, люди устроены по другому.
Я как раз этого и хочу избежать.
Я понял вашу мысль. Вы мне дали направление куда смотреть. Спасибо!
Думаю вопрос можно считать закрытым.
Артём Петренков: спасибо. Организация работы понятна. Теперь только нужно научиться работать с CI. Потому что опыта работы с такими сервисами у меня нет.