Я просто возвращаюсь в PHP и пытаюсь все делать правильно с самого начала. Итак, я установил PHPLint 2.1_20151116 и я не могу заставить его работать с автозагрузкой композитора. Является ли это возможным?
Например, я пытаюсь добавить тестовый пример в Laravel / Envoy, но я не могу получить ошибку «необъявленный родительский класс TestCase».
Структура папок:
envoy
├── tests
│ ├── RemoteProcessorTest.php
│ ├── SSHConfigFileTest.php
│ └── TestCase.php
Содержимое RemoteProcessorTest.php:
<?php
namespace Laravel\Envoy;
class RemoteProcessTest extends TestCase
{
}
Если я бегу ./vendor/bin/phpunit
тогда я получаю ошибку: No tests found in class "Laravel\Envoy\RemoteProcessTest".
, Что не является синтаксической ошибкой, поэтому похоже, что все верно. Но phplint все еще жалуется.
$ cd envoy
$ phpl --php-version 5 --print-path relative --print-column-number --tab-size 4 --no-overall tests/RemoteProcessorTest.php
BEGIN parsing of tests/RemoteProcessorTest.php
1: <?php
2: namespace Laravel\Envoy;
3:
4: class RemoteProcessTest extends TestCase
5: {
{
\_ HERE
==== 5:1: ERROR: undeclared parent class TestCase
6: }
END parsing of tests/RemoteProcessorTest.php
Есть ли обходной путь для этого?
Возможно, я не смогу ответить на вопрос напрямую, поскольку рассматриваемый репо кажется слишком ограниченным, чтобы дать вам то, что вы ищете. Я оставлю это сообществу, чтобы ответить на вопрос непосредственно.
Вот несколько альтернатив, которые, надеюсь, помогут.
Если вы хотите проверить синтаксис, в PHP есть встроенный линтер. Просто:
$ php -l filename.php
или же --syntax-check
вместо -l
,
Существует также это на Packagist в качестве жизнеспособной альтернативы. https://packagist.org/packages/gamegos/php-code-sniffer
Он имеет конфигурационный файл с именем phpcs.xml, который вы можете проверить в своем репо и включить через композитора.
# composer.json
...
require-dev {
"gamegos/php-code-sniffer": "0.4.0"}
...
В файле phpcs.xml есть тег начальной загрузки, который даст ему информацию, чтобы найти классы Laravel среди ваших собственных.
<?xml version="1.0" encoding="UTF-8"?>
<ruleset>
<rule ref="Gamegos" />
<arg name="bootstrap" value="vendor/autoload.php" />
</ruleset>
После установки с Composer у вас будет 3 бинарных файла:
Вы можете найти множество вариантов настройки в репозитории Github. https://github.com/gamegos/php-code-sniffer
Других решений пока нет …