OBEC POCTE
NEVSEREMOS'!

Оцінка користувачів: 0 / 5

Неактивна зіркаНеактивна зіркаНеактивна зіркаНеактивна зіркаНеактивна зірка
 

Crazy tasty spiderНещодавно змушений був переїхати з з редактора коду geany на visual studio code  (далі VS Code). Мій geany був налаштований для перевірки форматування коду відповідно до стандартів Joomla. Я користувався phpcs, щоби отримувати звіт про проблеми. Користуватись php-cs-fixer для автоматичного виправлення помилок я не вмів. Тепер вмію.

Оскільки я пишу код не лише для Joomla, то мушу використовувати і стандарти кодування PSR2 на інших PHP-проектах.

Наприклад, у PSR2 вираз має виглядати так

if (true) {
    echo "yes';
}

У Joomla ж дужка мусить бути наступним рядком:

if (true)
{
    echo "yes';
}

Вирішення питання було досить геморойним. То ж лишаю тут цю замітку в тому числі для нагадування собі про власну тупість на майбутє. Довелося встановлювати дещо у глобальному масштабі, а дещо - лише в робочу область Joomla (папка установки Joomla, де я розробляю мої розширення). Я використовую OpenSuSE linux, проте на інших ОС все приблизно так само.

Отже, після встановлення VS Code, довелося встановити ще два плагіни (насправді я використовую більше, але лише два стосуються цієї теми).

  • vscode-phpcs - інформує про невідповідність форматування коду стандарту (див. світлину, жеби зрозуміти, як це працює).
  • vscode-php-cs-fixer намагається автоматично виправляти більшість невідповідностей (тиснему гарячу комбінацію клавіш - і більшість фігурних дужок, відступи, пропуски / додаткові пробіги тощо розташовуються по фен-шую.)

Проте обидва плагіни до VS Code вимагають встановлення іншого ПЗ.

Перш за все повинно встановити phpcs. Документація vscode-phpcs радить встановити його через pear на всю систему. 

sudo pear install PHP_CodeSniffer

На жаль встановлення через composer global require "squizlabs/php_codesniffer=*" не працюватиме з плагіном до VS Code. Плагін не бачить виконуваний файл в іншому місці ніж /usb/bin/phpcs. Отже, встановлення через pear - обов'язкове. Втім, можна встановлювати для кожного проекту, мусить працювати. Але жаль перевитрат місця і часу.

PHP-CS-Fixer встановив закляттям composer composer global require friendsofphp/php-cs-fixer

Також додав у PATH відповідний шлях, а саме у ~/.bashrc начаклував рядочок export PATH="$PATH:~/.config/composer/vendor/bin"

Проте у VS Code узрів помилку, що він все одно не бачить виконуване філе: PHP CS Fixer: spawn php-cs-fixer ENOENT. executablePath not found.

При чому він вимагає вказати саме ПОВНИЙ шлях до філе. То ж у налаштуваннях VS code додав рядочок

"php-cs-fixer.executablePath": "/home/gruz/.config/composer/vendor/bin/php-cs-fixer",

b_300_0_16777215_00_images_x_2018_01_29_02_51_52_ht.jpeg

Після цього пошук помилок у форматуванні коду і виправлення їх запрацювало - phpcs і php-cs-fixer завелись. Проте поки що для PSR2, котрий за замовчуванням.

Далі довелось потанцювати із текою джумли.

Найперше мав існталювати Joomla coding standards. Їх стабільна гілка підтримує PHPCS 2.х, в той час актуальна гілка PHPCS - 3.x. То з використанням чорної магії (некрономікон від розробників wдещо не спрацював) та алхімії вдалось втановити відповідну версію Joomla coding standards:

Отже вписав кров'ю по людській шкірі у /home/gruz/.config/composer/composer.json два рядки:

"minimum-stability": "alpha"

та

"require-dev": {

     ...
     "joomla/coding-standards": "dev-3.x-dev",

     ...
}

Тобто, мій глобальний composer.json десь такий https://gist.github.com/gruz/9e1b95389669fdce08fb39006ccf7728#file-composer-json (а шукати його треба у ~/.config/composer/).

Звісно для джумли не треба рядок з мого файла, пов'язаний з laravel: "laravel/installer": "^1.5".

Далі викликаю духа закляттям composer global update

Тепер треба вказати phpcs де шукати Joomla Coding Standards, а саме:

sudo phpcs --config-set installed_paths ~/.config/composer/vendor/joomla/coding-standards/

Перевіримо підключені стандарти командою phpcs -i.У відповідь має бути щось на кшталт: The installed coding standards are MySource, PEAR, PSR1, PSR2, Squiz, Zend and Joomla

Далі треба вчинити дві підступні діїі у теці із джумлою (Власне активний робочий простір VS Code маю показувати на цю теку)

Отже, у робочому просторі у VS Code треба встановити стандарт phpcs для Joomla

b_300_0_16777215_00_images_x_2018_01_29_02_55_40_pv.jpeg

Далі треба розташувати правила для php-cs-fixer в корені joomla

А саме, файл на ймення .php_cs із вмістом https://gist.github.com/gruz/9e1b95389669fdce08fb39006ccf7728#file-php_cs

Звісно, файл можна перековбасити під власні потреби. Ось трактат про це: https://github.com/FriendsOfPHP/PHP-CS-Fixer

Нажаль, не все виправляється цим шляхом. Наприклад, у Joomla Coding Standards після виразу у фігурних дужках має бути порожній рядок. Php-cs-fixer вміє ставити такий порожній рядок лише перед виразом, що теж треба, проте після - доведеться додавати руками.

Проблеми

Протягом розкопок я ловив деякі помилки:

phpcs: Unable to locate phpcs. Please add phpcs to your global path or use composer depency manager to install it in your project locally.

The PHP CodeSniffer Linter server crashed 5 times in the last 3 minutes. The server will not be restarted.

Таке траплялось, коли VS Code не міг побачити phpcs, встановлений глобально через composer. А от з встановленням через pear все запрацювало.

Також була помилка щось там про поганий символ у JSON. Здється, ця халепа трапилась, коли я встановлював phpcs у теку проекта. Таке встановлення чомусь виводило результат phpcs не у JSON форматі, а у форматі таблиці. То ж плагін VS Code обламується об незнайомий потік данних. Тоді примусово вмикав виведення JSON

./vendor/bin/phpcs --config-set report_format json

Зареєструйтесь, щоби додавати коментарі

Якщо ви помітили помилку, то виділіть фрагмент тексту та натисніть Ctrl+Enter
FaLang translation system by Faboba
Електронна бібліотека «Exlibris»: історичні дослідження, мемуаристика, публіцистика, художня література Українська етнографія: книги, курси лекцій, статті й матеріали, мапи, фотоальбоми, веб-ресурси Правителі України: портрети, життєписи, матеріали Твори Адріана Кащенка: романтика козацьких часів Народна війна 1917-1932
Orphus System

Коментарі

  • Урок на майбутнє. Зброя і революція.

    Chillipepper Chillipepper 20.12.2016 22:59
    "... малі держави не можуть ефективно покладатися виключно на стримування в якості основної стратегії ...

    Детальніше...

     
  • AutoReadMore - автоматичне додавання кнопки Детальніше для статей Joomla, інших компонентів і модулі

    gruz gruz 13.07.2016 18:38
    Виправив в останній версі 4.5.3

    Детальніше...

     
  • AutoReadMore - автоматичне додавання кнопки Детальніше для статей Joomla, інших компонентів і модулі

    гром гром 13.07.2016 10:01
    Привіт! Відмінний плагін, не можу застосувати його до категорій. Або скрізь працює або ніде! У ...

    Детальніше...

     
  • VirtueMart 2.x Categories accordion menu

    gruz gruz 28.12.2015 12:54
    http://static.xscreenshot.com/small/2016/01/06/02/screen_12a86996b1b92dde3e5c4ca5b872b516 ...

    Детальніше...

     
  • VirtueMart 2.x Categories accordion menu

    vladsklyar vladsklyar 28.12.2015 05:31
    http://armtrading.ru/ - тут по верхньому меню потрібно

    Детальніше...