- PVSM.RU - https://www.pvsm.ru -

Улучшаем качество кода с помощью автоматических утилит

Улучшаем качество кода с помощью автоматических утилитДостаточно большое число людей используют github [1] для хранения исходного кода своих проектов. Идеология fork/pull request [2] позволяет достаточно легко выполнять обзоры кода (code review). Обзоры кода в значительной степени позволяют поднять качество кодирования в проекте. Однако, часто человек выполняющий обзор кода вынужден заниматься проверкой стандартов кодирования принятых в проекте, и прочих очевидных вещей не связанных непосредственно с задачей решенной в pull запросе. Такие ошибки кодирования могут и должны быть обнаружены автоматически.

lint [3](likely to be bugs) программы предназначены для нахождения подозрительных и непереносимых участков кода. Современные lint — программы, зачастую исследуют в том числе на соответствие стандарту кодирования. Конечно каждый разработчик обязан установить на свой компьютер утилиту для проверки кода и создавать pull запросы только если код чист. Однако, проблемы интеграции, неправильной настройки, не внимательность или просто халатность приводят к тому, что стандарты кодирования нарушаются. В сети существует достаточное число утилит выполняющих проверку кода, все они разношерстны в плане настроек и выходных форматов. В мультиязыковой компании это приводит к тому, что настройка рабочего места становится не тривиальной задачей.

Предлагаю вашему вниманию сервис для автоматической проверки кода известными lint-утилитами. На данный момент поддерживаются:

Существует несколько способов использования этого сервиса. Вы можете просто попробовать и проверить любой pull запрос, для этого нужно вставить ссылку в соответствующее поле и нажать кнопку Advice.

Улучшаем качество кода с помощью автоматических утилит

После продолжительных раздумий, вы получите сформированный отчет по всем файлам из pull запроса.

Улучшаем качество кода с помощью автоматических утилит

Владельцы приватных репозиториев так же могут проверить свои pull запросы. Для этого нужно создать token доступа [13] и вписать его в дополнительное поле формы. Если вас беспокоит здоровая форма паранои, то есть ещё возможность развернуть этот сервис у себя локально, кто заинтересовался прошу писать в личку.

Другой вариант использования сервиса, воспользоватся плагинами к браузерам Сhrome или Firefox. После их установки в браузере появится кнопка, при нажатии на которую будет выполняться проверка открытого на текущей странице pull запроса.

Но, самый лучший способ использования, настроить Post-Receive Hook для вашего репозитория. В этом случае после каждого обновления pull запроса, он будет проверяться, и на самой страничке запроса будет небольшое описание о качестве кода.

Например, хороший код:
Улучшаем качество кода с помощью автоматических утилит

А этот не очень:
Улучшаем качество кода с помощью автоматических утилит

Что бы настроить сервис на работу с вашим репозиторием, нужно создать WebHook URL http://unlint.org/github/hook/:token. Параметр :token нужен только для приватных репозиториев, что бы обеспечить доступ проверяющего сервиса. Кто не очень знаком с github api может воспользоваться формой [14] для генерации curl запроса на создания WebHook URL.

ВАЖНО. Нельзя использовать форму в настройках вашего репозитория для создания WebHook URL потому, что она создает наблюдателя за вашими коммитами а не pull запросами, нужно использовать github api [15] для создания WebHook URL наблюдающего за pull запросами.

Применение этого сервиса позволяет облегчить работу проверяющим, и стандартизировать код в компании.

unlint.github.com [16]
Страничка проекта github [17]

Почему сервис такой медленный

Одновременно выполняется проверка не более чем 3х файлов, это связано с низкой производительностью сервера. Вы можете развернуть unlint локально что бы решить эти проблемы.

Я нашел ошибку/Нужно добавить проверку

Нужно написать мне, либо на github.

Мне нужны другие стандарты

Вы можете развернуть unlint локально и настроить любые проверки.

Безопасно ли использовать token для доступа к приватному репозиторию?

Нет, это не безопасно, т.к. данные передаются по незашифрованному каналу.

Как развернуть локально

Все исходники доступны в репозитории проекта, поэтому сервис можно установить локально. Подробной документации пока нет, обращайтесь в личку помогу.

Автор: Caiiiycuk

Источник [18]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/programmirovanie/28823

Ссылки в тексте:

[1] github: https://github.com/

[2] fork/pull request: https://help.github.com/articles/using-pull-requests

[3] lint: http://en.wikipedia.org/wiki/Lint_%28software%29

[4] cpplint.py: http://google-styleguide.googlecode.com/svn/trunk/cpplint/cpplint.py

[5] checkstyle: http://checkstyle.sourceforge.net/

[6] scalastyle: https://github.com/scalastyle/scalastyle

[7] jslint: http://www.jslint.com/

[8] coffeelint: http://www.coffeelint.org/

[9] Perl::Critic: http://search.cpan.org/~thaljef/Perl-Critic-1.118/lib/Perl/Critic.pm

[10] CSS LINT: http://csslint.net/

[11] PHPLint: http://www.icosaedro.it/phplint/

[12] pep8: http://pypi.python.org/pypi/pep8

[13] создать token доступа: http://unlint.github.com/advanced.html#token

[14] формой: http://unlint.github.com/advanced.html#hook

[15] github api: http://developer.github.com/v3/repos/hooks/#pubsubhubbub

[16] unlint.github.com: http://unlint.github.com/

[17] github: https://github.com/caiiiycuk/unlint

[18] Источник: http://habrahabr.ru/post/169521/