Як прокачати свій open-source проєкт, використовуючи бейджики якості коду

Як прокачати свій open-source проект, використовуючи бейджики якості коду

Думаю, кожен, хто шукає щось на GitHub, час від часу стикається з репозиторіями, в яких у файлі README після назви проекту йде купа різних бейджиків. Вони виконують роль приладної панелі для репозиторію і показують, наскільки далеко з таким кодом можна зайти. Коли намагаєшся розібратися в цьому різноманітті бейджиків — настає хаос. Які сервіси мені потрібні? Що вони роблять? Як їх підключити? Де взяти робочий конфіг? Де взяти код для бейджика? Кілька разів наступивши на одні й ті ж граблі, я вирішив витратити трохи часу, щоб у цьому розібратися.

Дослідження

Досліджуючи цю тему, я прийшов до висновку, що бейджики найчастіше зустрічаються в репозиторіях перфекціоністів і альтруїстів. Якщо автор випустив у open source своє творіння і розвиває його, оперативно відповідає на запитання, фіксить баги, активно приймає пулл-реквести, стежить за якістю коду, то майже завжди такий репозиторій підключений до більшості сервісів оцінки коду. Чесно кажучи, приємно мати справу з такими людьми, вони заряджають тебе своєю енергією, і ти намагаєшся бути не гірше, ніж вони.

Сторонні сервіси, які зазвичай підключають до своїх репозиторіїв, можна грубо поділити на кілька категорій.

Безперервна інтеграція (CI)

Їх завдання — щоразу після комміту або пулл-реквеста (залежить від того, як налаштуєте) зібрати проект з усіх його вендорів. Після чого виконати тести (модульні, функціональні). Можна додати ще запуск різних утиліт, скриптів. Успішною вважається збірка, якщо в результаті виконання всіх команд кожна завершилася з exit 0. Код, відмінний від нуля, вказує на помилку. Результат може бути або «зеленим» — все ок. Або «червоним» — збірка не вдалася.

Покриття коду

Сервіси, які призначені для зручного перегляду звітів по покриттю коду тестами. За допомогою фреймворка для тестування (наприклад, PHPUnit) ви запускаєте всі тести з додатковою опцією по складанню звіту про покриття коду тестами. Рядок коду вважається покритим, якщо вона виконалася хоча б раз під час прогонки тестів. Враховуються тільки рядки з діючим кодом. Переноси, порожні рядки, опис функцій і класів, коментарі — не враховуються. Звіт, який виходить в результаті, потрібно передати на такий сервіс (робиться автоматично). А далі через браузер переглянути статистику покриття всього коду, кожного файлу, з підсвічуванням покритих і непокритих тестами рядків.

Аналізатори коду

Призначені для перевірки коду на best practice. Перевірка copy-paste, code style, аналіз архітектури коду, підказки по заміні одних конструкцій на інші, рекомендації до стандартних практик розробки тощо.

Кількість установок

Якщо для підключення необхідних пакетів ви використовуєте менеджер пакетів (наприклад, Composer в PHP) і свій код поширюєте також через менеджер пакетів, то, можливо, вам захочеться показувати статистику використання свого коду іншими людьми. Цю інформацію можна отримати безпосередньо з сайту менеджера пакетів або з іншого спеціального сервісу.

Ліцензія

У світі open source дуже важливо дотримуватися авторських прав (та й не лише у світі open source!). Тому знати, на яких умовах ви використовуєте чужий код, дуже важливо. Визначитися з ліцензіями можна безпосередньо перед вибором сторонньої бібліотеки. Але якщо проект у вас вже готовий, і ви раптом згадали про ліцензування, тоді можна скористатися спеціальними сайтами, які збирають інформацію про ліцензії різних пакетів. Підключивши свій репозиторій до такого сервісу, ви також можете захистити свій код і допомогти іншим розробникам, які бажають його використовувати. У процесі дослідження різних бібліотек, розміщених на GitHub, кілька разів я бачив issue, в якому автора просили додати до репозиторію файл з ліцензією, щоб була можливість використовувати його в комерційному продукті.

Усе інше

Сюди потрапляють усі невеликі цікаві сервіси, які не заслуговують окремої категорії. Вони можуть перераховувати розмір ваших вихідних файлів, підключати різні чати та канали зв'язку до ваших репозиторіїв, розміщувати ваші бібліотеки в рейтингах, базуючись на якихось показниках, і багато іншого. Про деякі цікаві сервіси я розповім.

Travis CI

Travis CI додався до списку інструментів open source-розробників і став де-факто стандартом. Він здобув свою популярність тому, що він безкоштовний, легко додається до GitHub, досить гнучкий для налаштування. Безкоштовна версія обслуговує публічні репозиторії, тому лог виконання кожного білда доступний усім бажаючим. Є й платні тарифні плани з більшими ресурсами.

Прокачай свій код за допомогою бейджиків!

Travis CI можна налаштувати таким чином, щоб він здійснював збірку проекту як після кожного комміту, так і тільки для пулл-реквестів. Він інтегрований у GitHub і показує статус збірки біля кожного пулл-реквесту. Якщо збірка зламана, то можна надіслати фікс з наступним коммітом, Travis перепровірить пулл-реквест, і він стане «зеленим».

Прокачай свій код за допомогою бейджиків!

Прокачай свій код за допомогою бейджиків!

У логах можна подивитися всю історію збірки, а також дізнатися, чому вона була неуспішною.

Прокачай свій код за допомогою бейджиків!

Щоб підключити свій репозиторій до Travis CI, потрібно:

  • Створити в корені проекту файл .travis.yml і прописати в ньому необхідні налаштування;
  • Залогінитися на Travis за допомогою акаунта з GitHub і підключити свій репозиторій до сервісу.

Travis дозволяє призначати команди на різні події: до початку збірки, до запуску скриптів, після виконання скриптів, тільки після успішного виконання скриптів тощо. Розпочати знайомство з документацією можна з цієї сторінки https://docs.travis-ci.com/user/getting-started. Travis підтримує безліч мов програмування, і якщо для збірки вашого проєкту потрібна якась стороння утиліта, то її можна доінсталювати консольною командою під час кожної збірки. Мінімальний приклад файлу .travis.yml для проєкту на PHP може виглядати ось так:

language: php

php:
  - 5.4
  - 5.5
  - 5.6

before_script:
  - composer install

script:
  - phpunit

notifications:
  email:
    - your@mail.com

Вказуємо, що використовується language: php. Перераховуємо версії, для яких потрібно зробити збірку — для кожної запуститься свій незалежний процес збірки. У секції before_script готуємо систему, в даному прикладі підтягуючи залежності проєкту через Composer. У секції script перераховуємо всі скрипти, які виконують перевірку нашого проєкту. У даному випадку виконуються модульні тести. Ну, і надсилаємо сповіщення на email по завершенню збірки.

Не буду заглиблюватися в деталі опцій .travis.yml, оскільки вони для кожної мови різні. Найкраще подивитися вже готові рішення, пошук на GitHub видає близько десяти мільйонів таких файлів.

Бейджик Travis буває двох кольорів, залежно від результату збірки.

Прокачай свій код з допомогою бейджиків!Прокачай свій код з допомогою бейджиків!

Отримати код бейджика можна на сторінці репозиторію на сайті Travis, просто клікнувши на самому значку.

Чесно кажучи, складно уявити собі open source проєкт, який розроблявся б без Travis CI. На перший погляд не побачиш помилок, які прийшли в новому пулл-реквесті. Але якщо перед цим Travis CI прогнав всі тести, ви вже будете знати, в якому стані проєкт після впровадження нової фічі. Висновок — використовувати Travis CI обов'язково!

Scrutinizer

Scrutinizer — сервіс призначений для оцінки якості коду. Поки Scrutinizer обмежений підтримкою PHP, Python і Ruby, планується підтримка Java і Scala. Основні фічі цього сервісу:

  • Виставляє оцінку вашому коду на основі показників, зібраних від різних аналізаторів;
  • Зберігає історію зміни якості коду, можна на графіку подивитися, як розвивався проект;
  • Сигналізує про проблеми у вашому коді з поясненням, до чого це може призвести. База знань досить широка;
  • Також перевіряє вендори, які використовуються у вашому проекті, на наявність відомих security issue;
  • Налаштування автоматичних звітів. Може спрацьовувати як на push, так і на pull-request, також можна задати періодичні автоматичні збори;
  • Сервіс також інтегрований у GitHub і відображається в пулл-реквестах поряд з Travis (звісно ж, після додаткової настройки).

Покращуй свій код за допомогою бейджиків!

Для кожної мови програмування існують інструменти для аналізу коду. Наприклад, для PHP найпопулярніші — це:

  • PHP Code Similarity Analyzer
  • PHP Code Sniffer
  • PHP CS Fixer
  • PHP Mess Detector
  • PHP Analyzer
  • Security Advisory Checker

PHP Analyzer — потужний інструмент, ось список перевірок, які виконує Scrutinizer https://scrutinizer-ci.com/docs/tools/php/php-analyzer/checks.

Досить деякий час попрацювати з цим сервісом, і ви вже перестанете робити типові помилки, які постійно знаходить Scrutinizer у вашому коді. Щоб почати користуватися цим сервісом, по-перше, потрібно на ньому зареєструватися за допомогою GitHub. У особистому кабінеті підключіть свій репозиторій з GitHub. Розмістіть у корені вашого репозиторію файл .scrutinizer.yml. За замовчуванням більшість утиліт вже підключено. Scrutinizer пропонує вам почати з такого конфігу, в нього вже включено джентльменський набір аналізаторів:

checks:
  php:
    code_rating: true
    duplication: true

filter:
  excluded_paths:
    - vendor/*

before_commands:
  - "composer install --prefer-source"

Для проектів на Symfony я підключаю додатково ще пару утиліт, які вимагають явного включення:

checks:
  php:
    code_rating: true
    duplication: true

filter:
  excluded_paths:
    - vendor/*
    - app/*
    - bin/*
    - web/*
    - spec/*

before_commands:
  - "composer install --prefer-source"
tools:
  php_code_sniffer:
    config:
      standard: "PSR2"
  php_cs_fixer: true
  sensiolabs_security_checker: true

Сервіс надає три типи бейджиків. Але, по суті, значимим є тільки перший, який показує оцінку коду. Code coverage за допомогою Scrutinizer я не раджу вам робити, краще використовувати інший спеціалізований сервіс (далі в статті). Код бейджика можна взяти на сторінці репозиторію в особистому кабінеті, потрібно клікнути по іконці (i). Оскільки Scrutinizer призначений в першу чергу для open source, ви зможете переглянути список зауважень до будь-якого публічного репозиторію, який налаштований на роботу з цим сервісом.

Покращуй свій код за допомогою бейджиків!

Щиро рекомендую використовувати Scrutinizer для open source розробки.

Packagist

Packagist — це список бібліотек/фреймворків PHP, які можна встановити через менеджер пакетів Composer. Цікава для нас інформація, яку надає цей сервіс — це кількість установок та остання стабільна версія пакета. Вся ця інформація доступна на самому сайті, але було б добре додати її у свій репозиторій, щоб на сторінці репозиторію в GitHub вже побачити цікаву статистику. Packagist не надає свої бейджики для цього. Бейджики можна отримати на сторонньому сервісі Badge Poser. Вибираємо пакет і отримуємо код усіх доступних бейджиків.

Прокачай свій код за допомогою бейджиків!

Які саме бейджики ви хочете додати для відображення — це ваша справа. Зазвичай виставляють бейджики: загальна кількість установок, остання стабільна версія та ліцензія. Ліцензія визначається з файлу composer.json або з файлу LICENSE. Моя порада — завжди додавати три перелічені бейджики, вони несуть найкориснішу інформацію.

VersionEye

Сервіс VersionEye надає можливість слідкувати за версіями бібліотек, розміщених на GitHub. Насправді можна підключити й приватні репозиторії з GitHub, і працювати через API. Зараз сервіс підтримує наступні мови програмування: Java, Ruby, Python, Node.JS, PHP, JavaScript, Objective-C, R, Clojure.

Варіантів використання сервісу два. Можна зареєструватися на цьому сайті, знайти репозиторії, які вас цікавлять, і підписатися на них. Після виходу нових версій вам будуть приходити сповіщення на email. Так ви будете слідкувати за оновленнями потрібних вам бібліотек. Мій досвід показує, що від цього сайту сповіщення приходять раніше, ніж від офіційних джерел. Наприклад, про вихід нової версії PHP я дізнаюся ще до того, як новина з’являється на php.net. Також на цей сервіс можна додати свій публічний репозиторій. Це дасть вам можливість слідкувати за тим, як оновлюються бібліотеки та фреймворки, від яких залежить ваш код.

Поясню на прикладі PHP. Щоб ваш репозиторій моніторився за допомогою VersionEye, у корені вашого проєкту має бути файл composer.json. Якщо це не бібліотека або бандл, а, наприклад, веб-додаток — у більшості випадків у репозиторію також потрапляє файл composer.lock, в якому заморожуються версії використовуваних бібліотек. VersionEye на основі цих двох файлів проаналізує ваші залежності, зіставить версії, які використовуєте ви, з актуальними версіями, і покаже вам всю статистику. А також буде сповіщати щоразу, коли у вашому проєкті оновлюються зовнішні бібліотеки. Навіщо це потрібно? Ну, наприклад, у залежностях у composer.json ви вказали "symfony/symfony": "~2.5", що означає, що ваш код має працювати з Symfony 2.5, 2.6, 2.7 і т.д., але не з 3.0 і вище. Коли виходить нова мінорна версія, вам, звичайно, може бути все одно, поки ви не отримаєте issue на GitHub, що з новою версією ваш бандл перестав працювати. Ну, а якщо ви альтруїст, то підштовхнете себе, перевірите ваш код на сумісність з новою версією, виправите, що потрібно, і випустите фікс. Користувачі будуть щасливі, навіть самі того не знаючи.

Також якщо ви проганяєте тести через Travis, то можна додати конфіги для тестування на новій версії Symfony, від якої залежить ваш код. Перевірка проєктів на інших мовах також здійснюється через менеджери пакетів. Підтримуються: Composer, Bundler, PIP, NPM, Bower, Leiningen, CocoaPods, Maven, SBT, Gradle. Ще одна фіча цього сервісу — він дозволяє подивитися, скільки інших репозиторіїв вказали ваш як залежність. Головне, щоб вони також були додані в VersionEye. Хіба вам не цікаво, хто і де використовує ваш код? Ось приклад з сторінки Symfony версії 2.6.4.

Покращте свій код за допомогою бейджиків!

По кліку на References можна побачити список проєктів, які залежать від Symfony. Цей сервіс надає два бейджики (наводжу бейджики для Symfony):

Покращте свій код за допомогою бейджиків!

Їх код можна отримати на сторінці репозиторію в VersionEye, клікнувши на сам бейдж.

Взагалі, цей сервіс мені дуже подобається. Іноді, правда, він спамить, якщо чужі вендори випускають кілька патчів на день, але з цим можна миритися. Головне, що він дає свіжу інформацію.

CodeCov

CodeCov — сервіс, який надає красиві звіти по покриттю вашого коду тестами. Щоб працювати з цим сервісом, потрібно трохи змінити конфіги в файлі .travis.yml. Ось як може виглядати конфіг:

language: php

php:
  - 5.4
  - 5.5
  - 5.6

before_install:
  - sudo pip install codecov

before_script:
  - composer install --dev

script:
  - phpunit --coverage-clover=coverage.xml

after_success:
  - codecov

Додаються секції before_install і after_success, а PHPUnit потрібно запустити з параметром --coverage-clover=coverage.xml. Після прогонки Travis CI з оновленим конфігом повинно пройти деякий час, поки звіт з'явиться у вашому акаунті на CodeCov. На сторінці перегляду статистики вашого репозиторію в пункті меню Features можна знайти код для бейджика, сам він виглядає так:

```html

Прокачай свій код за допомогою бейджиків!

Ще одна класна фішка CodeCov — це інтерактивний графік комітів з показником code coverage кожного:

Прокачай свій код за допомогою бейджиків!

Я навів просто картинку, але в інтерактивній версії можна клікати на точки і переходити на звіт по покриттю тестами для конкретного коміту.

Coveralls

Coveralls — сервіс, аналогічний попередньому. Щоб його використовувати, потрібно додати в composer.json:

{"require-dev":{"satooshi/php-coveralls":"dev-master"}}

і змінити конфіг .travis.yml:

language: php

php:
  - 5.4
  - 5.5
  - 5.6

before_script:
  - composer install --dev

script:
  - phpunit --coverage-clover build/logs/clover.xml

after_script:
  - php vendor/bin/coveralls -v 

PHPUnit потрібно запустити з опцією --coverage-clover build/logs/clover.xml, і вказати в after_script, що після його виконання потрібно виконати скрипт coveralls, який передасть файл звіту на сервер Coveralls. Перед цим також не забудьте в своєму дашборді в Coveralls підключити ваш репозиторій з GitHub.

Моя особиста думка, що в цілому цей сервіс красивіше показує звіти по code coverage. Не бачу сенсу використовувати Coveralls і CodeCov одночасно, можете спробувати обидва і вибрати на свій смак.

Gitter

Сервіс Gitter нещодавно запустився і представляє собою чат для GitHub. Для кожного репозиторію на GitHub можна створити окремий публічний чат. Річ хороша, адже не все і не завжди хочеться обговорювати через пулл-реквести. Іноді хочеться пофлудити ^_^ або задати питання великій кількості людей і отримати швидку відповідь. Обмеження безкоштовної версії в тому, що історія повідомлень буде зберігатися максимум два тижні, і можна створити лише один приватний чат на організацію, створену в GitHub. Бейдж виглядає так:

Прокачай свій код за допомогою бейджиків!

А знайти його код можна на сторінці каналу:

Прокачай свій код за допомогою бейджиків!

Прокачай свій код за допомогою бейджиків!

Наскільки популярною буде безкоштовна версія, поки що сказати складно. Давши одного разу відповідь на непросте питання, через два тижні його вже ніхто не побачить. Тому поки не ясно, приживеться чи цей сервіс, хоча і активно використовується. Користуючись нагодою, наводжу посилання на чати PHP-спільноти України:

```

CoderWall

CoderWall — це щось на кшталт соціальної мережі (якщо це можна так назвати) для програмістів. Можна ділитися порадами, створювати профілі організацій, додавати туди учасників, додавати вакансії, слідкувати за користувачами. Цей сервіс також надає можливість отримати бейджики. Але ці бейджики будуть додаватися до вашого профілю на GitHub, а не до конкретного репозиторію.

Прокачай свій код з допомогою бейджиків!

Для того, щоб отримати бейдж, потрібно додати свій навик у профіль, наприклад: php, open source. Головне — правильно написати назву технології, якщо сумніваєтеся — подивіться профілі інших учасників, як написано у них. Далі раз на тиждень (інформація з сайту) сервіс співвідносить ваші навики з профілю з вашою діяльністю на GitHub. Якщо ви вказали навик PHP і у вас є репозиторій на GitHub, в якому основна мова програмування — це PHP, тоді ви отримаєте бейджик «павук». За три PHP-репозиторії — ви отримаєте бейдж «подвійний павук». Але ці бейджики поки що будуть видні тільки на сторінці вашого профілю в CoderWall. Щоб вони були видні на GitHub, потрібно підключити свій GitHub-акаунт у профіль CoderWall. Через деякий час CoderWall запросить вас у свою організацію, і ви отримаєте бейдж на GitHub. Ось приклад бейджиків з мого профілю.

Прокачай свій код з допомогою бейджиків!

Кому цікаво - вихідний код CoderWall доступний на GitHub, сам сайт написаний на Ruby. Ось приклад профілю команди GitHub.

SensioLabs Insight

Дуже люблю компанію SensioLabs за те, що вона розробляє корисні речі для світу PHP. SensioLabs Insight — ще один сервіс для аналізу коду, але тільки PHP. Точніше, не тільки PHP, там є можливість вказати, що саме знаходиться у вашому репозиторії: Symfony-бандл, Symfony-проект, модуль для Drupal тощо.

Прокачай свій код з допомогою бейджиків!

В залежності від типу репозиторію, Insight додатково перевірить конфіги в XML та YAML файлах, Twig шаблони, залежності композера.

Список проблем, які перевіряє SensioLabs Insight, просто вражаючий. І синтаксичні помилки, і інструкції, які можуть зробити ваш код небезпечним, і використання версій бібліотек, в яких є відома уразливість, і ще безліч всього. Загалом проводиться більше сотні різних перевірок. Внаслідок перевірок ваш код може отримати медаль за відвагу!!! Якби код був живою істотою, то він би подякував свого творцеві :)

Прокачай свій код з допомогою бейджиків!

Медалі залежать від кількості помилок. Поки у вас хоч одне критичне зауваження — медалі вам не видати! Медалі-бейджики бувають трьох розмірів, обирайте, який вам більше подобається:

Прокачай свій код з допомогою бейджиків!Прокачай свій код з допомогою бейджиків!Прокачай свій код з допомогою бейджиків!

Отримати код для будь-якого вашого репозиторію, підключеного до SensioLabs Insight, можна на сторінці вашого акаунта. Також можна налаштувати автоматичну перевірку ваших репозиторіїв на GitHub через web-hook. Адреса, яка повинна запустити GitHub, щоб розпочати чергову перевірку, береться на сторінці API/SDK вашого акаунта. Після чого заходьте в налаштування вашого репозиторію на GitHub у меню Webhooks & Services і створюєте новий хук.

Прокачай свій код з допомогою бейджиків!

Однозначно використовуйте цей сервіс! Він знайде у вашому коді те, про що ви навіть не підозрювали. Безкоштовна версія доступна для публічних репозиторіїв, приватність, звичайно, вже платна.

KnpBundles

Якщо ви Symfony-розробник, то, звичайно, знаєте про сайт knpbundles.com. На цьому сайті зібрані популярні бандли для Symfony2. Якщо ви розробили бандл і хочете, щоб він там з'явився, то вам доведеться зробити це самостійно. Увійдіть за допомогою GitHub і додайте посилання на ваш репозиторій. Тобто, якщо ви не хочете публікувати свій бандл на сайті, то він там не з'явиться! На цьому сайті існує система рейтингу. Оцінка для бандла нараховується так:

  • 1 бал за кожного фоловера на GitHub;
  • 5 балів за README файл, якщо в ньому більше ніж 300 символів;
  • 5 балів, якщо бандл підключений до Travis CI;
  • Ще 5 балів надається за останній успішний билд на Travis CI;
  • 5 балів, якщо в бандлі є файл composer.json і репозиторій додано на packagist.org;
  • 5 балів за кожну рекомендацію бандла на сайті knpbundles.com (рекомендувати можуть тільки зареєстровані користувачі сайту).
  • Бонус за активність за останні 30 днів. Формула (30 — кількість днів з останньої активності) / 5. Мінусові значення не враховуються, але можуть бути дробові значення.

Як бачимо, не так вже й багато балів може набрати бандл завдяки зусиллям лише одного автора. Левову частку балів додають фолловери та рекомендатели. Бандл має бути дійсно потрібним і якісним, щоб у користувача виникло бажання поставити йому плюс.

Сайт надає два види бейджиків (їх код можна знайти на сторінці бандла в сайдбарі). Для прикладу візьмемо найпопулярніший бандл FOSUserBundle та його варіанти бейджиків:

Прокачай свій код за допомогою бейджиків!

Мої рекомендації: однозначно додайте свій бандл на цей сайт і вставте код бейджика. Адже якщо ви його виставили в open source, значить хочете, щоб ним користувалися. Розкажіть про нього спільноті!

HHVM

Якщо ви хочете перевірити свій код на сумісність з HHVM, вам потрібно додати кілька рядків у .travis.yml, це можна зробити ось так:

language: php

php:
  - 5.3
  - 5.4
  - 5.5
  - 5.6
  - hhvm

matrix:
  allow_failures:
    - php: hhvm

before_script:
  - composer install --dev

script:
  - phpunit --coverage-text tests

Потрібно додати --hhvm у версії PHP. Якщо ваш код не може виконатися на HHVM, то збірка буде позначена як провалена. Якщо ви хочете просто моніторити сумісність з HHVM, але при цьому не фейлити білд, то потрібно додати опцію allow_failures. Бейджик, який буде показувати підтримку HHVM, можна взяти на сайті https://hhvm.h4cc.de/.

Прокачай свій код за допомогою бейджиків!

На сторінці Search знаходимо потрібний репозиторій з гітхаба, одразу бачимо перевірку на сумісність кожної версії, клікаємо на Badges і отримуємо потрібний код.

Shields.io

Shields.io — сайт, на якому бейджики від різних сервісів приведені до одного стандартного вигляду. Список досить великий, тут зібрані найпопулярніші сервіси для різних мов програмування. Я нещодавно дізнався про цей збірник, і він мені одразу сподобався. Є три шаблони бейджиків:

Shields.io badges

Особисто мені дуже сподобався останній, і я змінив усі бейджики в одному з моїх репозиторіїв.

Було:

Прокачай свій код за допомогою бейджиків!

Стало

Прокачай свій код за допомогою бейджиків!

Щоб отримати код у форматі Markdown, потрібно клікнути на бейджі зі списку. Єдиний мінус — що прописувати шлях до свого репозиторію на потрібному сервісі доведеться самому. Іноді потрібно просто вказати нік і назву репозиторію. А іноді, натомість, потрібно вказати хеш-код, наприклад, https://img.shields.io/sensiolabs/i/45afb680-d4e6-4e66-93ea-bcfa79eb8a87.svg. У такому випадку потрібно йти в особистий кабінет і там шукати...

Висновок

Звичайно, список не повний. Ще є безліч різних сторонніх сервісів для інших мов програмування, навіть для PHP, думаю, знайдеться ще парочка рішень, про які я не знав. Але тут справа така, за всім не встежиш. Останнім часом спостерігається бум подібних сервісів, і їхня популярність серед розробників зростає. Сподіваюся, після цієї статті вона ще трохи збільшиться :). Не нехтуйте сервісами, які розроблені, щоб вам допомагати!