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>

Теперь мой вопрос: В чем причина этого и как я могу это исправить?

Author: Fabian Schmengler, 2013-03-28

1 answers

@package был методом псевдо-пространства имен еще до того, как PHP получил настоящие пространства имен в версии 5.3. Таким образом, я думаю, что почти все инструменты статической обработки кода написаны для выбора пространств имен, когда они существуют, и возвращаются к использованию @package только в том случае, если пространства имен не существует. Идея продолжать использовать @package в качестве другого механизма группировки поверх пространств имен иногда упоминалась, особенно в отношении phpDocumentor, но я не знаю о каких-либо усилиях по настоящему реализуйте такое поведение в любом из этих типов приложений.

 2
Author: ashnazg, 2013-04-01 20:30:35