PHP Depend (pdepend) игнорирует @package и вместо этого использует пространства имен в качестве пакетов
Я попытался сравнить показатели некоторых PHP-фреймворков с PHP-зависимостью и столкнулся с раздражающим и, вероятно, непреднамеренным поведением:
Аннотация @package
игнорируется, вместо этого пространства имен рассматриваются как пакеты. Это проблема, так как часто используются подпространства имен, которые не предназначены для отдельных пакетов (т. Е. SomePackage\Exception
)
Пример файла класса
<?php
/**
*
* This file is part of the Aura Project for PHP.
*
* @package Aura.Di
*
* @license http://opensource.org/licenses/bsd-license.php BSD
*
*/
namespace Aura\Di\Exception;
use Aura\Di\Exception;
/**
*
* The named DI container already exists.
*
* @package Aura.Di
*
*/
class ContainerExists extends Exception
{
}
Пример отчета
<package name="Aura\Di\Exception" cr="0.15" noc="5" nof="0" noi="0" nom="0" rcr="0.28114285714286">
...
</package>
Теперь мой вопрос: В чем причина этого и как я могу это исправить?
1 answers
@package был методом псевдо-пространства имен еще до того, как PHP получил настоящие пространства имен в версии 5.3. Таким образом, я думаю, что почти все инструменты статической обработки кода написаны для выбора пространств имен, когда они существуют, и возвращаются к использованию @package только в том случае, если пространства имен не существует. Идея продолжать использовать @package в качестве другого механизма группировки поверх пространств имен иногда упоминалась, особенно в отношении phpDocumentor, но я не знаю о каких-либо усилиях по настоящему реализуйте такое поведение в любом из этих типов приложений.